Цитата:
Сообщение от BR95009
Очень просто:
|
Как вариант, со знакомым для
BNSF9399 кодом...
Arduino код:
unsigned long previousMillis = 0;
unsigned long currentMillis = 0;
const long rowDelay = 100;
unsigned long time0 = 0;
bool lcd_flag = 0; // флаг включения анимации
int r = 11;
char c = '<';
void setup()
{
pinMode(ir_left, INPUT);
pinMode(ir_right, INPUT);
lcd.begin();
lcd.backlight();
}
void loop()
{
currentMillis = millis();
// при поднятом флаге вызывается анимация с периодом rowDelay
if(currentMillis - previousMillis >= rowDelay && lcd_flag == 1)
{
previousMillis = currentMillis;
lcd_reload(); // вызов функции для анимации
}
if (digitalRead(ir_left) == LOW && lcd_flag == 0) // сработал левый датчик
{
time0 = millis();
lcd.setCursor(1, 0);
lcd.print("GO LEFT ");
lcd_flag = 1; //включаем флаг
}
if (digitalRead(ir_right) == LOW && lcd_flag == 1) // сработал правый датчик
{
// расчет скорости и вывод на дисплей
lcd_flag = 0; //выключаем флаг
}
}
void lcd_reload()// рисуем бегущую строку
{
lcd.setCursor(r, 0);
lcd.print(c);
r--;
if(r < 1){
r = 11;
if(c == '<') {
c = ' ';
}
else {
c ='<';
}
}
}