#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //配置LCD地址及行列
#define UP 2
#define DOWN 3
#define ENT 4
#define CL 5
const uint8_t BUTTONNUM=4;
const uint8_t BUTTONS[]={UP,DOWN,ENT,CL};
#define RELAY0 8
#define RELAY1 9
#define RELAY2 10
#define RELAY3 11
const uint8_t RELAYNUM=4;
const uint8_t RELAYS[]={RELAY0,RELAY1,RELAY2,RELAY3};
void setup() {
// put your setup code here, to run once:
for (uint8_t i=0;i<BUTTONNUM;i++)
{
pinMode(BUTTONS[i],INPUT_PULLUP);
}
for (uint8_t i=0;i<RELAYNUM;i++)
{
pinMode(RELAYS[i], OUTPUT);
}
Serial.begin(9600);
lcd.init(); //初始化LCD
lcd.backlight(); //打开背光
}
void loop() {
// put your main code here, to run repeatedly:
lcd.clear();
lcd.setCursor(0,1);//设置显示位置
lcd.print("STARTING...");//显示字符数据
delay(1000);
lcd.clear();
lcd.setCursor(0,1);//设置显示位置
lcd.print("OK...");//显示字符数据
/*
uint8_t R0OP=0;//继电器0通电时间
uint8_t R0CL=0;//继电器0关闭时间
uint8_t R0LOP=0;//继电器0循环次数
uint8_t R1OP=0;//继电器1电时间
uint8_t R1CL=0;//继电器1关闭时间
uint8_t R1LOP=0;//继电器1循环次数
uint8_t R2OP=0;//继电器2通电时间
uint8_t R2CL=0;//继电器2关闭时间
uint8_t R2LOP=0;//继电器2循环次数
uint8_t R3OP=0;//继电器3通电时间
uint8_t R3CL=0;//继电器3关闭时间
uint8_t R3LOP=0;//继电器3循环次数
*/
uint8_t R0[]={0,0,0};//开启,关闭,循环次数
uint8_t R1[]={0,0,0};//开启,关闭,循环次数
uint8_t R2[]={0,0,0};//开启,关闭,循环次数
uint8_t R3[]={0,0,0};//开启,关闭,循环次数
bool isconfig=false;//进入设置界面
uint8_t setR=0;
while (true)
{
if(digitalRead(ENT)==LOW)
{
delay(1000);
if(digitalRead(ENT)==HIGH)
{
if (isconfig==false)
{
Serial.println(String(isconfig));
lcd.clear();
lcd.setCursor(0,0);//设置显示位置
lcd.print("CONFIG");//显示字符数据
lcd.setCursor(0,1);//设置显示位置
lcd.print(">>>RELAY_"+String(setR));//显示字符数据
isconfig=true;
Serial.println("进入设置");
}
else
{
lcd.clear();
isconfig=false;
Serial.println("退出设置");
}
}
}
if (isconfig==true)
{
if(digitalRead(UP)==LOW)
{
delay(100);
if(digitalRead(UP)==LOW)
{
if (setR<RELAYNUM)
{
setR++;
lcd.clear();
lcd.setCursor(0,0);//设置显示位置
lcd.print("CONFIG");//显示字符数据
lcd.setCursor(0,1);//设置显示位置
lcd.print(">>>RELAY_"+String(setR));//显示字符数据
}
}
}
if(digitalRead(DOWN)==LOW)
{
delay(100);
if(digitalRead(DOWN)==LOW)
{
if (setR>0)
{
setR--;
lcd.clear();
lcd.setCursor(0,0);//设置显示位置
lcd.print("CONFIG");//显示字符数据
lcd.setCursor(0,1);//设置显示位置
lcd.print(">>>RELAY_"+String(setR));//显示字符数据
}
}
}
if(digitalRead(ENT)==LOW)
{
delay(100);
if(digitalRead(ENT)==LOW)
{
}
}
if(digitalRead(CL)==LOW)
{
Serial.println("CANCEL");
lcd.clear();
}
}
}
}