Простой ЖК-таймер обратного отсчета
Я попытался изменить базовый скетч "hello-world" для ЖК-дисплея, который является частью раздела примеров в IDE. Я намеревался сделать таймер обратного отсчета с помощью ЖК-дисплея.
Исходный код просто печатает "Hello World" в первой строке, а затем использует функцию millis()
для печати времени, прошедшего в следующей строке.
Поэтому я попробовал простую модификацию, чтобы сделать его обратный отсчет от 20. Вместо печати millis()/1000
я напечатал 20-millis()/1000
, а также добавил некоторое время ()
, чтобы печатать только до millis()<=20 000
. (чтобы он не выходил за пределы 00)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("time left");
}
void loop() {
while(millis()<=20000){
lcd.setCursor(0, 1);
lcd.print(20- millis() / 1000);
}
}
Казалось, работало до 10
. но вместо 9
он напечатал 90
, а также 80,70...
за 8,7...
и т. Д. До 00
.
Как я могу избавиться от этих лишних нулей?
@satan 29, 👍2
Обсуждение1 ответ
Лучший ответ:
вместо
9
он напечатал90
Нет, это не так: он напечатал “9”. Однако он не стирал предыдущее значение перед печатью “9”. Перед печатью 9-го номера жидкокристаллический дисплей имел:
┌────────────────┐
│time left │
│10 │
└────────────────┘
^cursor position
Когда вы печатаете “9”, этот символ заменяет “1”, и в итоге вы видите “90”.
Исправление, как указал Юрай, состоит в том, чтобы добавить пробел после печати чисел.
Альтернативой является добавление пробела (или нуля), но только тогда, когда отображаемое число меньше 10:
int count = 20 - millis() / 1000;
if (count < 10)
lcd.print(' '); // alternatively: '0'
lcd.print(count);
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Печать string and integer LCD
- Как отобразить символ º на ЖК-дисплее?
- Отправка значения с одного Arduino на другой
- Черные квадраты дисплея Arduino 16x2
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
жк-дисплей.печать(' ');
, @Jurajкуда мне это положить?, @satan 29