Замена Delay на выводе на LCD экран

Спалис
Offline
Зарегистрирован: 14.06.2016

Здравствуйте, простите за глупый вопрос. Прочел замену Delay на millis, посмотрел примеры со светодиодами, но не понимаю, как этот Delay заменить, например, на задержку текста на ЛСД экране. Например, надо показать три разных текста с задержкой на 5 секунд каждому, как это сделать? Я зеленый в программировании, поэтому хотелось бы узнать. Пример какой увидеть.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016
if (условие1) {lcd.setCursor(0, 0);lcd.print("text1");}
if (условие2) {lcd.setCursor(0, 0);lcd.print("text2");}
if (условие3) {lcd.setCursor(0, 0);lcd.print("text3");}

 

Спалис
Offline
Зарегистрирован: 14.06.2016

Клапауций 232 пишет:

if (условие1) {lcd.setCursor(0, 0);lcd.print("text1");}
if (условие2) {lcd.setCursor(0, 0);lcd.print("text2");}
if (условие3) {lcd.setCursor(0, 0);lcd.print("text3");}

 

А можно весь код, от и до, с millis() и всеми операциями, чтобы все работало также, как и с delay. Спасибо.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Спалис пишет:

А можно весь код, от и до, с millis() и всеми операциями, чтобы все работало также, как и с delay. Спасибо.

можно - это стоит 5$

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Приблизительно так:

unsigned long prevMilis = millis();
int var = 1;
 
void setup()
{

}

void loop()
{
if (millis() - prevMilis >= 5000)
{
 prevMilis = millis();
  switch (var) {
    case 1:
      lcd.setCursor(0, 0)
      lcd.print("text1");
       var++;
      break;

    case 2:
      lcd.setCursor(0, 0)
      lcd.print("text2");
       var++;
      break;

    case 3:
      lcd.setCursor(0, 0)
      lcd.print("text3");
       var = 1;
      break;
  }
 }
}

 

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

лучше вместо lcd.setCursor(0,0); поставить lcd.cleare(); а то старый текст оставаться будет если он длиннее

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Все правильно, но не вместо а перед lcd.setCursor(0,0);

vde69
Offline
Зарегистрирован: 10.01.2016

Mr.Privet пишет:

лучше вместо lcd.setCursor(0,0); поставить lcd.cleare(); а то старый текст оставаться будет если он длиннее

 

это будет приводить к мерцанию экрана

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Mr.Privet пишет:

лучше вместо lcd.setCursor(0,0); поставить lcd.cleare(); а то старый текст оставаться будет если он длиннее

ага. lcd.clear(); - сотрём нафиг весь индикатор... если длиннее.

Спалис
Offline
Зарегистрирован: 14.06.2016

Спасибо Вам, славно помогли!