Skocz do zawartości

zatrzymanie pętli podczas zmian na wyświetlaczu (biblioteka LiquidCrystal_I2C.h)


Pomocna odpowiedź

Napisano (edytowany)

Witam.
Borykam się z takim problemem, że pętla nie wykonuje się w przypadku gdy mamy w niej kod, który steruje wyświetlaczem LCD.
Posiadam bibliotekę LiquidCrystal_I2C.h 1.0.7. Co pół sekundy na wyświetlaczu oraz w konsoli zmienna "i" powinna się inkrementować. Tak się nie dzieje. Po usunięciu 3 linii z "lcd.(...)" wszystko działa jak należy. Problem jest taki, że gdy chciałem dodać zmianę stanu przy wciskaniu guzika (wyeliminować while) to nic się nie zmienia. Gdy jest wciśnięty przycisk to wykonywanie poleceń kończy się na pierwszym "lcd.(...)". Jak temu zaradzić?
EDIT:
Dodam tylko, że to skrawek większego kodu (znalazłem co powoduje błąd i zrobiłem z niego mini kod). Celem jest: Po wciśnięciu przycisku na wyświetlaczu pojawi się czas który będzie odliczał od 10 do 0. Gdy przycisk zostanie puszczony przed odliczeniem do zera to nic się nie dzieje. Gdy doliczy do 0 to wykona się kolejna akcja.
 

#include <LiquidCrystal_I2C.h>

#define cofnij 2
#define zatwierdz 3

LiquidCrystal_I2C lcd(0x27, 16, 2);

int i = 0;

void setup()
{
  lcd.init();
  lcd.clear();
  lcd.backlight();

  Serial.begin(9600);

  pinMode(cofnij, INPUT_PULLUP);
  pinMode(zatwierdz, INPUT_PULLUP);

  lcd.setCursor(0, 0);
  lcd.print(i);
}

void loop()
{
  while (digitalRead(zatwierdz) == LOW) {
    Serial.print(i);

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(i);

    i += 1;
    delay(500);    
  }
}

 

Edytowano przez Termoo
  • Lubię! 1

W Leonardo piny D2 i D3 są połączone z SCL i SDA. Dlatego przez jednoczesne używanie ich (wciśnięcie przycisku i sterowanie I2C LCD), program się zaciął.
Guziki przepięte zostały na D6 i D7. Działa.

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...