#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
#include <EncButton.h>
Button btn1(3);
#define PIN_LED1 2
#define PIN_LEDP 5
#define PIN_LED2 4
#define PIN_LED3 7
#define PIN_LED4 8
#define PIN_POT1 A0
//#define PIN_POT2 A1
#define RELAY_IN 12
int brightn =0;
int work = 0; //стоп работе
int ptime = 0; //пауза в работе
int wtime = 0; //время работы
int tp2 = 0;
//uint32_t time=600000;
//int valpot = 0;
//const int POT1=0;
void setup() {
// put your setup code here, to run once:
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
Serial.begin(9600);
pinMode(PIN_LEDP, OUTPUT);
pinMode(PIN_LED1, OUTPUT);
pinMode(PIN_LED2, OUTPUT);
pinMode(PIN_LED3, OUTPUT);
pinMode(PIN_LED4, OUTPUT);
pinMode(PIN_POT1, INPUT);
pinMode(RELAY_IN, OUTPUT);
pinMode(3, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
// Устанавливаем курсор на вторую строку и нулевой символ.
//enc_or_button();
//dispUpd();
//
btn1.tick(); //запуск
//
if (btn1.click()) {
Serial.println("btn 1 click!");
work = 0;
}
if (btn1.hold()) {
Serial.println("btn 1 hold!");
work = 1; //стоп
}
//Serial.println("pot "+ String(brightn) + " time " + String(wtime) + " work " + String(work));
// вывод на экран
//void dispUpd() {
static uint32_t tmr;
// таймер на 10 раз в секунду
if (millis() - tmr >= 100) {
tmr = millis();
lcd.setCursor(0, 0); //время работы
//lcd.print(analogRead(0));
lcd.print(wtime);
lcd.setCursor(8, 0); //пауза в работе
lcd.print(ptime);
lcd.setCursor(8, 1); //работа
lcd.print(work);
//lcd.setCursor(8, 1); //работа
//lcd.print (" ");
//disp.update();
}
if (work == 1 ) {
int rotat, brightn;
rotat = analogRead(PIN_POT1);
brightn = rotat / 4;
//brightn = 10;
//analogWrite(PIN_LED05, brightn);
//digitalWrite(PIN_LEDP, HIGH);
if (brightn >9 and brightn <50) // программа 1 0,25с-1с
{
ptime = 1000; //пауза в работе
wtime = 250; //время работы
digitalWrite(PIN_LED1, HIGH);
digitalWrite(PIN_LEDP, LOW);
digitalWrite(RELAY_IN, HIGH);
static uint32_t tmr;
// таймер на 10 раз в секунду
if (millis() - tmr >= 250)
{
tmr = millis();
// delay(wtime);
digitalWrite(PIN_LED1, LOW);
digitalWrite(PIN_LEDP, HIGH);
digitalWrite(RELAY_IN, LOW);
//delay(ptime);
static uint32_t tmr;
// таймер на 10 раз в секунду
if (millis() - tmr >= 5000)
tmr = millis();
}
}
if (brightn >50 and brightn <100) // программа 2 0,5с-1,5с
{
ptime = 1500; //пауза в работе
wtime = 500; //время работы
digitalWrite(PIN_LED2, HIGH);
digitalWrite(PIN_LEDP, LOW);
digitalWrite(RELAY_IN, HIGH);
delay(wtime);
digitalWrite(PIN_LED2, LOW);
digitalWrite(PIN_LEDP, HIGH);
digitalWrite(RELAY_IN, LOW);
delay(ptime);
}
if (brightn >50 and brightn <100) // программа 3 0,5с-3с
{
ptime = 3000; //пауза в работе
wtime = 500; //время работы
digitalWrite(PIN_LED3, HIGH);
digitalWrite(PIN_LEDP, LOW);
digitalWrite(RELAY_IN, HIGH);
delay(wtime);
digitalWrite(PIN_LED3, LOW);
digitalWrite(PIN_LEDP, HIGH);
digitalWrite(RELAY_IN, LOW);
delay(ptime);
}
if (brightn >100 and brightn <150) // программа 4 0,5с-6с
{
ptime = 6000; //пауза в работе
wtime = 500; //время работы
digitalWrite(PIN_LED4, HIGH);
digitalWrite(PIN_LEDP, LOW);
digitalWrite(RELAY_IN, HIGH);
delay(wtime);
digitalWrite(PIN_LED4, LOW);
digitalWrite(PIN_LEDP, HIGH);
digitalWrite(RELAY_IN, LOW);
delay(ptime);
}
// конец программам
}
else
{
digitalWrite(RELAY_IN, LOW);
digitalWrite(PIN_LED1, LOW);
digitalWrite(PIN_LED2, LOW);
digitalWrite(PIN_LED3, LOW);
digitalWrite(PIN_LED4, LOW);
//work = 0;
}
//Serial.println("pot "+ String(brightn) + " time " + String(wtime) + " work " + String(work));
//Serial.println(" ");
//delay(wtime);
}