Функция millis()
- Войдите на сайт для отправки комментариев
Вс, 23/04/2017 - 19:20
Здравствуйте, есть LCD экран, и я хочу на него каждую секунду выводить сообщение вида i=i+1, т.е. что бы каждую секунду значение на экране увеличивалось на один. Но на экран один раз выводится 1 и ничего дальше не меняется. Подскажите, пожалуйста, где ошибка. Код прикладываю ниже.
if (millis()-time60>1000)
{
time60=millis();
int i;
i=i+1;
lcd.print(i);
}
Забыл сказать, что приведенный код лежит в теле loop.
Понятно где ошибка сидит. Она за вашим компьютером сидит.
void loop() { static uint32_t time60 = 0; static int i; if (millis() - time60 >= 1000) { time60 = millis(); i = i + 1; lcd.print(i); } }Понятно где ошибка сидит. Она за вашим компьютером сидит.
void loop() { static uint32_t time60 = 0; static int i; if (millis() - time60 >= 1000) { time60 = millis(); i = i + 1; lcd.print(i); } }А кроме сарказма чем Вы можете помочь?
А что остается делать. Бить по рукам как у пианистов не получится. Вы далеко, не достану. А делать "детские"ошибки. Основы языка Си они для всех пишутся, а не только для профессионалов.
if (millis()-time60>1000) { time60=millis(); int i; i=i+1; lcd.print(i); }А что происходит, пока проверка условия ложно?
А кроме сарказма чем Вы можете помочь?
А предложенного кода недостаточно? Вы слышали что-нибудь про область видимости переменных?
Jeka_M, по моему товарищ даже не догнал что код изменился :)
Я понимаю, что вы все умные, а я говно, я не писал, что я умею кодить. Я попросил о помощи, потому что сам не понимаю. Так что единственная преследуемая вами цель показать что я дурак, не пишите, я и так это знаю.
А предложенного кода недостаточно? Вы слышали что-нибудь про область видимости переменных?
Нет, не слышал.
А что происходит, пока проверка условия ложно?
А ничего, или так нельзя?
Можно, только поэтому вы ничего и не видите
Я понимаю, что вы все умные, а я говно, я не писал, что я умею кодить. Я попросил о помощи, потому что сам не понимаю. Так что единственная преследуемая вами цель показать что я дурак, не пишите, я и так это знаю.
Избить слабого - здесь так принято :) поэтому вы тоже кому-нить в глаз дайте, штоп не зарывались :)
Можно, только поэтому вы ничего и не видите
А подскажите, пожалуйста, как дополнить код?
Афтор жжет.
ПС:http://arduino.ru/Reference/Static
Ключевое слово static используется для создания переменной, которая видна только одной функции. Однако в отличие от локальных переменных, которые создаются и уничтожаются при каждом вызове функции, статические переменные остаются после вызова функции, сохраняя свои значения между её вызовами.
unsigned long time60 = millis(); int i = 0; void setup() { } void loop() { if (millis()-time60>1000) { time60 = millis(); } else { i++; lcd.print(i); } }я так понял что он хочет видеть все выражение на дисплее, а значит надо преобразовать в строку данные - или мне показалось
Афтор жжет.
ПС:http://arduino.ru/Reference/Static
Ключевое слово static используется для создания переменной, которая видна только одной функции. Однако в отличие от локальных переменных, которые создаются и уничтожаются при каждом вызове функции, статические переменные остаются после вызова функции, сохраняя свои значения между её вызовами.
Спасибо!
unsigned long time60 = millis(); int i = 0; void setup() { } void loop() { if (millis()-time60>1000) { time60 = millis(); } else { i++; lcd.print(i); } }Спасибо большое :)
я так понял что он хочет видеть все выражение на дисплее, а значит надо преобразовать в строку данные - или мне показалось
Нет, ничего преобразовывать не надо :)