Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //26 feb 2017 11:58
- #include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2
- //#include <MsTimer2.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x3F, 16, 2);
- #define BUTTON_PIN_1 12 //4 сбор
- #define BUTTON_PIN_2 11 //передача
- #define SWITCH_PIN_1 2 //6 Переключатель Управление 0-АВТО 1-РУЧНОЙ
- #define SWITCH_PIN_2 3 //5 Пекеключатель Режим 0-Подключение 1-Сбор
- #define SWITCH_PIN_3 4 // кабель 0 - нет кабеля, 1 - есть кабель сбора
- #define SWITCH_PIN_4 5 // кабель передачи данных, 0-есть кабель, 1-нет кабеля
- #define SWITCH_PIN_5 6 // чисто /заражено 0-чисто 1-заражено
- #define LED_PIN_peredacha 13 //светодиод передачи
- #define FAN_PIN 8 //выход вентилятора
- #define LED_PIN_zarazheno 9 //светик заражено
- #define LED_PIN_chisto 7 //светик заражено
- // Instantiate a Bounce object
- Bounce debouncer_BP1 = Bounce();
- Bounce debouncer_BP2 = Bounce();
- Bounce debouncer_SP1 = Bounce();
- Bounce debouncer_SP2 = Bounce();
- Bounce debouncer_SP3 = Bounce();
- Bounce debouncer_SP4 = Bounce();
- Bounce debouncer_SP5 = Bounce();
- //variable
- boolean BP1_state;
- boolean BP2_state;
- boolean SP1_state;
- boolean SP2_state;
- boolean SP3_state;
- boolean SP4_state;
- boolean SP5_state;
- boolean SP1_state_old;
- boolean SP2_state_old;
- boolean SP3_state_old;
- boolean SP4_state_old;
- boolean SP5_state_old;
- boolean sbor_state; //переменная которая хранит был ли сбор
- boolean podkl = 0; //переменная которая хранит заражено
- void setup() {
- // MsTimer2::set(50, update_button); // 500ms period
- // MsTimer2::start();
- lcd.init(); // Инициализация lcd
- lcd.backlight(); // Включаем подсветку
- //Serial.begin(9600);
- //Serial.println("Work!");
- pinMode(BUTTON_PIN_1, INPUT);
- pinMode(BUTTON_PIN_2, INPUT);
- pinMode(SWITCH_PIN_1, INPUT_PULLUP);
- pinMode(SWITCH_PIN_2, INPUT_PULLUP);
- pinMode(SWITCH_PIN_3, INPUT_PULLUP);
- pinMode(SWITCH_PIN_4, INPUT_PULLUP);
- pinMode(SWITCH_PIN_5, INPUT_PULLUP);
- pinMode(LED_PIN_peredacha, OUTPUT);
- pinMode(FAN_PIN, OUTPUT);
- pinMode(LED_PIN_zarazheno, OUTPUT);
- pinMode(LED_PIN_chisto, OUTPUT);
- digitalWrite(LED_PIN_peredacha, LOW);
- digitalWrite(FAN_PIN, LOW);
- digitalWrite(LED_PIN_zarazheno, LOW);
- digitalWrite(LED_PIN_chisto, LOW);
- debouncer_BP1.attach(BUTTON_PIN_1);
- debouncer_BP1.interval(10); //debounce interval
- debouncer_BP2.attach(BUTTON_PIN_2);
- debouncer_BP2.interval(10); //debounce interval
- debouncer_SP1.attach(SWITCH_PIN_1);
- debouncer_SP1.interval(10); //debounce interval
- debouncer_SP2.attach(SWITCH_PIN_2);
- debouncer_SP2.interval(10); //debounce interval
- debouncer_SP3.attach(SWITCH_PIN_3);
- debouncer_SP3.interval(10); //debounce interval
- debouncer_SP4.attach(SWITCH_PIN_4);
- debouncer_SP4.interval(10); //debounce interval
- debouncer_SP5.attach(SWITCH_PIN_5);
- debouncer_SP5.interval(10); //debounce interval
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("LOADING..."); // kadr 0
- lcd.setCursor(0, 1);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("AKTuBEH"); // kadr 0
- //Serial.println("KADR 0");
- delay(3000);
- update_display();
- }
- void(* resetFunc) (void) = 0;
- void loop() {
- update_button();
- }
- void update_display(void)
- {
- /*
- //Serial.print(BP1_state);
- //Serial.print(BP2_state);
- //Serial.print(SP1_state);
- //Serial.print(SP2_state);
- //Serial.print(SP3_state);
- //Serial.print(SP4_state);
- //Serial.println(SP5_state);
- */
- if (SP3_state == 0 && sbor_state == 0)
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("HET KOHTAKTA"); // kadr 0
- //Serial.println("KADR 0`");
- }
- if (SP1_state == 0 && SP3_state == 1 && sbor_state == 0)
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("TOLK PY4H PEJIM"); // kadr 1
- //Serial.println("KADR 1");
- }
- if (SP1_state == 1 && SP2_state == 0 && podkl == 0 && SP3_state == 1 && sbor_state == 0)
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("YCT REJuM"); // kadr 2
- lcd.setCursor(0, 1);
- lcd.print("CbOP"); // kadr 2
- //Serial.println("KADR 2");
- }
- if (SP1_state == 1 && SP2_state == 1 && sbor_state == 0 && SP3_state == 1) //ручной/сбор/сбора не было
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("HAJMuTE CbOP");
- //Serial.println("KADR 3"); //kadr 3
- }
- if (SP1_state == 1 && SP2_state == 1 && BP1_state == 1 && sbor_state == 0 && SP3_state == 1)
- {
- digitalWrite(FAN_PIN, HIGH);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("uDET SbOP");
- lcd.setCursor(0, 1);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- lcd.write(0xFF);
- delay(500);
- digitalWrite(FAN_PIN, LOW);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("AHALu3...");
- lcd.setCursor(0, 1);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(50);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- lcd.write(0xFF);
- delay(100);
- //Serial.println("KADR 4"); //kadr 4
- sbor_state = 1;
- BP2_state = false;
- delay(2000);
- }
- if (SP1_state == 1 && SP2_state == 1 && sbor_state == 1 && SP5_state == 0 && podkl == 0) //0 чисто
- {
- digitalWrite(LED_PIN_chisto, HIGH);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("4uCTO");
- //Serial.println("KADR 5"); //кадр 5
- delay(5000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("PECTAPT");
- delay(3000);
- resetFunc(); //перезагрузка
- }
- if (SP1_state == 1 && SP2_state == 1 && sbor_state == 1 && SP5_state == 1 && podkl == 0) //1 заражено
- {
- digitalWrite(LED_PIN_zarazheno, HIGH);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("3APA}|{EHO");
- //Serial.println("KADR 6"); //к 6
- delay(4000);
- //Serial.println("KADR"); //к7
- podkl = 1;
- }
- if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && SP5_state == 1 && podkl == 1 && SP4_state == 0)
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("PODKL KABEL`");
- lcd.setCursor(0, 1);
- lcd.print("BLAYT`!!!");
- //Serial.println("KADR 6"); //к 6
- }
- if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && SP5_state == 1 && podkl == 1 && SP4_state == 1 && BP2_state == 0)
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("PODKL K");
- lcd.setCursor(0, 1);
- lcd.print("TERMINALU...");
- delay(3000);
- }
- if (SP1_state == 1 && SP2_state == 1 && sbor_state == 1 && podkl == 1) //
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("USTANOVITE");
- lcd.setCursor(0, 1);
- lcd.print("REZHIM PODKL");
- //Serial.println("KADR"); //к8
- }
- if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && podkl == 1 && BP2_state == 0 && SP4_state == 1) //
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("NAZHMITE");
- lcd.setCursor(0, 1);
- lcd.print("PEREDA4a");
- //Serial.println("KADR 9"); //к9
- }
- if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && podkl == 1 && BP2_state == 1 && SP4_state == 1) //
- {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("PEREDA4A");
- lcd.setCursor(0, 1);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(100);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(50);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(150);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(50);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(100);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(100);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(100);
- lcd.write(0xFF);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(150);
- lcd.write(0xFF);
- digitalWrite(LED_PIN_peredacha, 0);
- delay(100);
- digitalWrite(LED_PIN_peredacha, 1);
- delay(50);
- lcd.write(0xFF);
- delay(150);
- digitalWrite(LED_PIN_peredacha, 0);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("OK!");
- delay(3000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("PECTAPT");
- delay(3000);
- //Serial.println("KADR 10"); //к10
- resetFunc(); //перезагрузка
- }
- }
- void update_button(void)
- {
- debouncer_BP1.update();
- debouncer_BP2.update();
- debouncer_SP1.update();
- debouncer_SP2.update();
- debouncer_SP3.update();
- debouncer_SP4.update();
- debouncer_SP5.update();
- SP1_state = debouncer_SP1.read();
- if (SP1_state != SP1_state_old)
- {
- SP1_state_old = SP1_state;
- update_display();
- }
- SP2_state = debouncer_SP2.read();
- if (SP2_state != SP2_state_old)
- {
- SP2_state_old = SP2_state;
- update_display();
- }
- SP3_state = debouncer_SP3.read();
- if (SP3_state != SP3_state_old)
- {
- SP3_state_old = SP3_state;
- update_display();
- }
- SP4_state = debouncer_SP4.read();
- if (SP4_state != SP4_state_old)
- {
- SP4_state_old = SP4_state;
- update_display();
- }
- SP5_state = debouncer_SP5.read();
- if (SP5_state != SP5_state_old)
- {
- SP5_state_old = SP5_state;
- update_display();
- }
- if ( debouncer_BP1.fell() ) { //if BUTTON1 pressed
- if (SP1_state == 1 && SP2_state == 1 && sbor_state == 0)BP1_state = true;
- update_display();
- }
- if ( debouncer_BP2.fell() ) { //if BUTTON2 pressed
- BP2_state = true;
- update_display();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement