Skocz do zawartości
Komentator

Kurs Arduino - #7 - Wyświetlacz tekstowy, LCD 2x16

Pomocna odpowiedź

Zadanie 7.4.

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

#define rozpocznij 5
#define zakoncz  6

int sekundy = 0;
int minuty = 0;

void setup() 
{
  lcd.init();
  lcd.backlight(); 
  pinMode(rozpocznij,INPUT_PULLUP);
  pinMode(zakoncz,INPUT_PULLUP);
  lcd.print("Wcisnij aby");
  lcd.setCursor(0,1);
  lcd.print("rozpoczac!");
}
void loop() 
{
  if(digitalRead(rozpocznij) == LOW)
  {
    do
    {
       lcd.clear();
       sekundy++;
       lcd.print("odliczam: ");
       lcd.setCursor(0,1);
       lcd.print(sekundy);
       delay(1000);
    }
    while(digitalRead(zakoncz) == HIGH);
    
    if(digitalRead(zakoncz)==LOW)
    {
      lcd.clear();
      lcd.print("uplynelo: ");
      lcd.setCursor(0,1);
      lcd.print(sekundy);
      lcd.print(" sekund");
    }
  }
}

 

 

Udostępnij ten post


Link to post
Share on other sites

@ceiem przyznam że kod wygląda bardzo przejrzyście 🙂 a dlaczego stosujesz do...while() ?

Udostępnij ten post


Link to post
Share on other sites

No bo pierwsze wykonanie pętli jest niezależne od warunku i powinno się wykonać? Takie przyzwyczajenie z rozwiązywania zadań maturalnych 🙂

Udostępnij ten post


Link to post
Share on other sites

Jak celowo użyte to czemu nie, próbowałem sobie tylko wyobrazić sytuację gdzie miałoby to czemuś zapobiec. To by musiała być sytuacja, gdzie startuję odliczanie i zanim minie sekunda zacznę usiłować zakończyć odliczanie.

No i zwyczajowo zachęcam do reakcji na zbocza przy obsłudze przycisków, ale to taki już mój kaprys 😉 a tak to kod bardzo ładny. Tak trzymaj i powodzenia dalej! 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
2 minuty temu, Gieneq napisał:

reakcji na zbocza przy obsłudze przycisków

A co to oznacza? 🙂

Udostępnij ten post


Link to post
Share on other sites
6 minut temu, ceiem napisał:

A co to oznacza?

A to oznacza, że zamiast na stan przycisku (np. "jest naciśnięty ale nie wiadomo od kiedy, może od wczoraj albo co") reagujesz na jego zmianę (np "przed chwilą nie był wciśnięty a teraz jest, czyli ktoś tam wsadził palucha").

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

A na przykład:
 

int guzik = HIGH;

void loop()
{
// tu jakieś instrukcje
  int teraz_guzik = digitalRead(jakiśpin); // albo coś podobnego
  if (guzik && !teraz_guzik) {
	// znaczy się ktoś pchał paluchy
	obsluga_palucha();
  }
  guzik = teraz_guzik;
// i tu coś jeszcze co sobie chcesz
}

Ale prostsze będzie użycie biblioteki Bounce2, gdzie fragment kodu będzie mniej więcej taki:


guzik.update();
if (guzik.fell()) {
   // paluch!
   obsluga_palucha();
}

Bliższe informacje w przykłądach do Bounce2.

 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Ciekawe 🙂 Dziękuję bardzo! Potestuję!

Ile ja się od Was uczę 🙂 Fajnie 🙂 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...