#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#define Y_Button 12 //задание портов кнопок
#define G_Button 11
#define R_Button 10
boolean last_State_Y = false; //инициализация состояний
boolean last_State_G = false;
boolean last_State_R = false;
int i=0; // счетчики
int j=0;
int z=0;
bool flag=false;
uint32_t myTimer1;
void setup() {
// Init
lcd.init();
lcd.backlight();
}
void loop() {
lcd_blink();
//================================================
// ==== срабатывание по ЗАДНЕМУ фронту ==========
if (digitalRead(Y_Button)==true && last_State_Y == false) // передний фронт
{
last_State_Y = true; //фиксируем изменение состояния
lcd.setCursor(3, 0);
lcd.print("Y ON ");
}
if (digitalRead(Y_Button)==false && last_State_Y == true) // задний фронт
{
last_State_Y=false; //фиксируем изменение состояния
lcd.setCursor(3, 0);
lcd.print("Y OFF");
lcd.setCursor(10, 0);lcd.print(i++); //счетчик
}
//============================================================
//===========================================================
// ==== срабатывание по ПЕРЕДНЕМУ фронту ======
if (digitalRead(G_Button)==true && last_State_G == false)
{
last_State_G = true; //фиксируем изменение состояния
lcd.setCursor(3, 1);
lcd.print("G ON ");
lcd.setCursor(10, 1);lcd.print(j++); //счетчик
}
if (digitalRead(G_Button)==false && last_State_G == true)
{
last_State_G=false; //фиксируем изменение состояния
lcd.setCursor(3, 1);
lcd.print("G OFF");
}
//===============================================================
//==============================================
//=== срабатывание при ФИКСИРОВАНИИ ============
if (digitalRead(R_Button)==true)
{
lcd.setCursor(3, 2);
lcd.print("R ON ");
lcd.setCursor(10, 2);lcd.print(z++); //счетчик
}
else
{
lcd.setCursor(3, 2);
lcd.print("R OFF ");
}
//=================================================
}
void lcd_blink()
{
if (millis() - myTimer1 >= 1000) { // таймер на 1000 мс (1 раз в сек)
myTimer1 = millis(); // сброс таймера
lcd.setCursor(7, 3);
flag = !flag;
if (flag)
{lcd.print("tick");}
else
{lcd.print("----");}
}
}