Advertisement
Tamerby1

Untitled

Feb 27th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.82 KB | None | 0 0
  1. //26 feb 2017 11:58
  2. #include <Bounce2.h>   // https://github.com/thomasfredericks/Bounce2
  3. //#include <MsTimer2.h>
  4. #include <Wire.h>
  5. #include <LiquidCrystal_I2C.h>
  6. LiquidCrystal_I2C lcd(0x3F, 16, 2);
  7.  
  8.  
  9. #define BUTTON_PIN_1 12 //4 сбор
  10. #define BUTTON_PIN_2 11 //передача
  11.  
  12.  
  13. #define SWITCH_PIN_1 2  //6 Переключатель Управление 0-АВТО 1-РУЧНОЙ
  14. #define SWITCH_PIN_2 3  //5 Пекеключатель Режим      0-Подключение 1-Сбор  
  15. #define SWITCH_PIN_3 4  // кабель 0 - нет кабеля, 1 - есть кабель сбора
  16. #define SWITCH_PIN_4 5 // кабель передачи данных, 0-есть кабель, 1-нет кабеля
  17. #define SWITCH_PIN_5 6 // чисто /заражено  0-чисто 1-заражено
  18.  
  19. #define LED_PIN_peredacha 13 //светодиод передачи
  20. #define FAN_PIN 8  //выход вентилятора
  21. #define LED_PIN_zarazheno 9 //светик заражено
  22. #define LED_PIN_chisto 7 //светик заражено
  23.  
  24. // Instantiate a Bounce object
  25. Bounce debouncer_BP1 = Bounce();
  26. Bounce debouncer_BP2 = Bounce();
  27.  
  28.  
  29. Bounce debouncer_SP1 = Bounce();
  30. Bounce debouncer_SP2 = Bounce();
  31. Bounce debouncer_SP3 = Bounce();
  32. Bounce debouncer_SP4 = Bounce();
  33. Bounce debouncer_SP5 = Bounce();
  34.  
  35. //variable
  36. boolean BP1_state;
  37. boolean BP2_state;
  38.  
  39.  
  40. boolean SP1_state;
  41. boolean SP2_state;
  42. boolean SP3_state;
  43. boolean SP4_state;
  44. boolean SP5_state;
  45.  
  46. boolean SP1_state_old;
  47. boolean SP2_state_old;
  48. boolean SP3_state_old;
  49. boolean SP4_state_old;
  50. boolean SP5_state_old;
  51.  
  52. boolean sbor_state; //переменная которая хранит был ли сбор
  53. boolean podkl = 0; //переменная которая хранит заражено
  54.  
  55. void setup() {
  56.   // MsTimer2::set(50, update_button); // 500ms period
  57.   // MsTimer2::start();
  58.   lcd.init();                            // Инициализация lcd
  59.   lcd.backlight();                       // Включаем подсветку
  60.   //Serial.begin(9600);
  61.   //Serial.println("Work!");
  62.   pinMode(BUTTON_PIN_1, INPUT);
  63.   pinMode(BUTTON_PIN_2, INPUT);
  64.  
  65.   pinMode(SWITCH_PIN_1, INPUT_PULLUP);
  66.   pinMode(SWITCH_PIN_2, INPUT_PULLUP);
  67.   pinMode(SWITCH_PIN_3, INPUT_PULLUP);
  68.   pinMode(SWITCH_PIN_4, INPUT_PULLUP);
  69.   pinMode(SWITCH_PIN_5, INPUT_PULLUP);
  70.  
  71.   pinMode(LED_PIN_peredacha, OUTPUT);
  72.   pinMode(FAN_PIN, OUTPUT);
  73.   pinMode(LED_PIN_zarazheno, OUTPUT);
  74.   pinMode(LED_PIN_chisto, OUTPUT);
  75.  
  76.   digitalWrite(LED_PIN_peredacha, LOW);
  77.   digitalWrite(FAN_PIN, LOW);
  78.   digitalWrite(LED_PIN_zarazheno, LOW);
  79.   digitalWrite(LED_PIN_chisto, LOW);
  80.  
  81.   debouncer_BP1.attach(BUTTON_PIN_1);
  82.   debouncer_BP1.interval(10); //debounce interval
  83.  
  84.   debouncer_BP2.attach(BUTTON_PIN_2);
  85.   debouncer_BP2.interval(10); //debounce interval
  86.  
  87.  
  88.   debouncer_SP1.attach(SWITCH_PIN_1);
  89.   debouncer_SP1.interval(10); //debounce interval
  90.  
  91.   debouncer_SP2.attach(SWITCH_PIN_2);
  92.   debouncer_SP2.interval(10); //debounce interval
  93.  
  94.   debouncer_SP3.attach(SWITCH_PIN_3);
  95.   debouncer_SP3.interval(10); //debounce interval
  96.  
  97.   debouncer_SP4.attach(SWITCH_PIN_4);
  98.   debouncer_SP4.interval(10); //debounce interval
  99.  
  100.   debouncer_SP5.attach(SWITCH_PIN_5);
  101.   debouncer_SP5.interval(10); //debounce interval
  102.  
  103.   lcd.clear();
  104.   lcd.setCursor(0, 0);
  105.   lcd.print("LOADING..."); // kadr 0
  106.   lcd.setCursor(0, 1);
  107.   lcd.write(0xFF);
  108.   delay(150);
  109.   lcd.write(0xFF);
  110.   delay(150);
  111.   lcd.write(0xFF);
  112.   delay(150);
  113.   lcd.write(0xFF);
  114.   delay(150);
  115.   lcd.write(0xFF);
  116.   delay(150);
  117.   lcd.write(0xFF);
  118.   delay(150);
  119.   lcd.write(0xFF);
  120.   delay(150);
  121.   lcd.write(0xFF);
  122.   delay(150);
  123.   lcd.write(0xFF);
  124.   delay(150);
  125.   lcd.write(0xFF);
  126.   delay(150);
  127.   lcd.write(0xFF);
  128.   delay(150);
  129.   lcd.write(0xFF);
  130.   delay(150);
  131.   lcd.write(0xFF);
  132.    delay(150);
  133.   lcd.write(0xFF);
  134.   delay(150);
  135.   lcd.write(0xFF);
  136.   delay(150);
  137.   lcd.write(0xFF);
  138.   delay(150);
  139.  
  140.  
  141.   lcd.clear();
  142.   lcd.setCursor(0, 0);
  143.   lcd.print("AKTuBEH"); // kadr 0
  144.   //Serial.println("KADR 0");
  145.   delay(3000);
  146.   update_display();
  147. }
  148. void(* resetFunc) (void) = 0;
  149. void loop() {
  150.   update_button();
  151. }
  152.  
  153. void update_display(void)
  154. {
  155.   /*
  156.     //Serial.print(BP1_state);
  157.     //Serial.print(BP2_state);
  158.     //Serial.print(SP1_state);
  159.     //Serial.print(SP2_state);
  160.     //Serial.print(SP3_state);
  161.     //Serial.print(SP4_state);
  162.     //Serial.println(SP5_state);
  163.  
  164.   */
  165.   if (SP3_state == 0 && sbor_state == 0)
  166.   {
  167.     lcd.clear();
  168.     lcd.setCursor(0, 0);
  169.     lcd.print("HET KOHTAKTA"); // kadr 0
  170.     //Serial.println("KADR 0`");
  171.   }
  172.   if (SP1_state == 0 && SP3_state == 1 && sbor_state == 0)
  173.   {
  174.     lcd.clear();
  175.     lcd.setCursor(0, 0);
  176.     lcd.print("TOLK PY4H PEJIM"); // kadr 1
  177.     //Serial.println("KADR 1");
  178.   }
  179.   if (SP1_state == 1 && SP2_state == 0 && podkl == 0 && SP3_state == 1 && sbor_state == 0)
  180.   {
  181.     lcd.clear();
  182.     lcd.setCursor(0, 0);
  183.     lcd.print("YCT REJuM"); // kadr 2
  184.     lcd.setCursor(0, 1);
  185.     lcd.print("CbOP"); // kadr 2
  186.     //Serial.println("KADR 2");
  187.   }
  188.   if (SP1_state == 1 && SP2_state == 1 && sbor_state == 0 && SP3_state == 1) //ручной/сбор/сбора не было
  189.   {
  190.     lcd.clear();
  191.     lcd.setCursor(0, 0);
  192.     lcd.print("HAJMuTE CbOP");
  193.     //Serial.println("KADR 3"); //kadr 3
  194.   }
  195.   if (SP1_state == 1 && SP2_state == 1 && BP1_state == 1 && sbor_state == 0 && SP3_state == 1)
  196.   {
  197.     digitalWrite(FAN_PIN, HIGH);
  198.     lcd.clear();
  199.     lcd.setCursor(0, 0);
  200.     lcd.print("uDET SbOP");
  201.     lcd.setCursor(0, 1);
  202.     lcd.write(0xFF);
  203.     delay(500);
  204.     lcd.write(0xFF);
  205.     delay(500);
  206.     lcd.write(0xFF);
  207.     delay(500);
  208.     lcd.write(0xFF);
  209.     delay(500);
  210.     lcd.write(0xFF);
  211.     delay(500);
  212.     lcd.write(0xFF);
  213.     delay(500);
  214.     lcd.write(0xFF);
  215.     delay(500);
  216.     lcd.write(0xFF);
  217.     delay(500);
  218.     lcd.write(0xFF);
  219.     delay(500);
  220.     lcd.write(0xFF);
  221.     delay(500);
  222.     lcd.write(0xFF);
  223.     delay(500);
  224.     lcd.write(0xFF);
  225.     delay(500);
  226.     lcd.write(0xFF);
  227.     delay(500);
  228.     lcd.write(0xFF);
  229.     delay(500);
  230.     lcd.write(0xFF);
  231.     delay(500);
  232.     lcd.write(0xFF);
  233.     delay(500);
  234.     digitalWrite(FAN_PIN, LOW);
  235.     lcd.clear();
  236.     lcd.setCursor(0, 0);
  237.     lcd.print("AHALu3...");
  238.     lcd.setCursor(0, 1);
  239.     lcd.write(0xFF);
  240.     delay(100);
  241.     lcd.write(0xFF);
  242.     delay(100);
  243.     lcd.write(0xFF);
  244.     delay(100);
  245.     lcd.write(0xFF);
  246.     delay(100);
  247.     lcd.write(0xFF);
  248.     delay(100);
  249.     lcd.write(0xFF);
  250.     delay(100);
  251.     lcd.write(0xFF);
  252.     delay(100);
  253.     lcd.write(0xFF);
  254.     delay(100);
  255.     lcd.write(0xFF);
  256.     delay(100);
  257.     lcd.write(0xFF);
  258.     delay(100);
  259.     lcd.write(0xFF);
  260.     delay(100);
  261.     lcd.write(0xFF);
  262.     delay(100);
  263.     lcd.write(0xFF);
  264.     delay(50);
  265.     lcd.write(0xFF);
  266.     delay(100);
  267.     lcd.write(0xFF);
  268.     delay(100);
  269.     lcd.write(0xFF);
  270.     delay(100);
  271.     //Serial.println("KADR 4"); //kadr 4
  272.     sbor_state = 1;
  273.     BP2_state = false;
  274.     delay(2000);
  275.   }
  276.   if (SP1_state == 1 && SP2_state == 1 && sbor_state == 1 && SP5_state == 0 && podkl == 0) //0 чисто
  277.   {
  278.     digitalWrite(LED_PIN_chisto, HIGH);
  279.     lcd.clear();
  280.     lcd.setCursor(0, 0);
  281.     lcd.print("4uCTO");
  282.     //Serial.println("KADR 5"); //кадр 5
  283.     delay(5000);
  284.     lcd.clear();
  285.     lcd.setCursor(0, 0);
  286.     lcd.print("PECTAPT");
  287.     delay(3000);
  288.     resetFunc(); //перезагрузка
  289.   }
  290.   if (SP1_state == 1 && SP2_state == 1 && sbor_state == 1 && SP5_state == 1 && podkl == 0) //1 заражено
  291.   {
  292.     digitalWrite(LED_PIN_zarazheno, HIGH);
  293.     lcd.clear();
  294.     lcd.setCursor(0, 0);
  295.     lcd.print("3APA}|{EHO");
  296.     //Serial.println("KADR 6"); //к 6
  297.     delay(4000);
  298.     //Serial.println("KADR"); //к7
  299.     podkl = 1;
  300.   }
  301.   if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && SP5_state == 1 && podkl == 1 && SP4_state == 0)
  302.   {
  303.     lcd.clear();
  304.     lcd.setCursor(0, 0);
  305.     lcd.print("PODKL KABEL`");
  306.     lcd.setCursor(0, 1);
  307.     lcd.print("BLAYT`!!!");
  308.     //Serial.println("KADR 6"); //к 6
  309.   }
  310.   if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && SP5_state == 1 && podkl == 1 && SP4_state == 1 && BP2_state == 0)
  311.   {
  312.     lcd.clear();
  313.     lcd.setCursor(0, 0);
  314.     lcd.print("PODKL K");
  315.     lcd.setCursor(0, 1);
  316.     lcd.print("TERMINALU...");
  317.     delay(3000);
  318.   }
  319.   if (SP1_state == 1 && SP2_state == 1 && sbor_state == 1 && podkl == 1) //
  320.   {
  321.     lcd.clear();
  322.     lcd.setCursor(0, 0);
  323.     lcd.print("USTANOVITE");
  324.     lcd.setCursor(0, 1);
  325.     lcd.print("REZHIM PODKL");
  326.     //Serial.println("KADR"); //к8
  327.   }
  328.  
  329.   if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && podkl == 1 && BP2_state == 0 && SP4_state == 1) //
  330.   {
  331.     lcd.clear();
  332.     lcd.setCursor(0, 0);
  333.     lcd.print("NAZHMITE");
  334.     lcd.setCursor(0, 1);
  335.     lcd.print("PEREDA4a");
  336.     //Serial.println("KADR 9"); //к9
  337.   }
  338.  
  339.   if (SP1_state == 1 && SP2_state == 0 && sbor_state == 1 && podkl == 1 && BP2_state == 1 && SP4_state == 1) //
  340.   {
  341.     lcd.clear();
  342.     lcd.setCursor(0, 0);
  343.     lcd.print("PEREDA4A");
  344.     lcd.setCursor(0, 1);
  345.     lcd.write(0xFF);
  346.     digitalWrite(LED_PIN_peredacha, 1);
  347.     delay(150);
  348.     lcd.write(0xFF);
  349.     digitalWrite(LED_PIN_peredacha, 0);
  350.     delay(150);
  351.     lcd.write(0xFF);
  352.     digitalWrite(LED_PIN_peredacha, 1);
  353.     delay(100);
  354.     digitalWrite(LED_PIN_peredacha, 0);
  355.     delay(50);
  356.     lcd.write(0xFF);
  357.     digitalWrite(LED_PIN_peredacha, 1);
  358.     delay(150);
  359.     lcd.write(0xFF);
  360.     digitalWrite(LED_PIN_peredacha, 0);
  361.     delay(150);
  362.     lcd.write(0xFF);
  363.     delay(150);
  364.     lcd.write(0xFF);
  365.     digitalWrite(LED_PIN_peredacha, 1);
  366.     delay(150);
  367.     lcd.write(0xFF);
  368.     digitalWrite(LED_PIN_peredacha, 0);
  369.     delay(50);
  370.     digitalWrite(LED_PIN_peredacha, 1);
  371.     delay(100);
  372.     lcd.write(0xFF);
  373.     digitalWrite(LED_PIN_peredacha, 0);
  374.     delay(150);
  375.     lcd.write(0xFF);
  376.     digitalWrite(LED_PIN_peredacha, 1);
  377.     delay(100);
  378.     digitalWrite(LED_PIN_peredacha, 0);
  379.     delay(100);
  380.     lcd.write(0xFF);
  381.     delay(150);
  382.     lcd.write(0xFF);
  383.     digitalWrite(LED_PIN_peredacha, 1);
  384.     delay(150);
  385.     lcd.write(0xFF);
  386.     digitalWrite(LED_PIN_peredacha, 0);
  387.     delay(150);
  388.     lcd.write(0xFF);
  389.     digitalWrite(LED_PIN_peredacha, 1);
  390.     delay(150);
  391.     lcd.write(0xFF);
  392.     digitalWrite(LED_PIN_peredacha, 0);
  393.     delay(100);
  394.     digitalWrite(LED_PIN_peredacha, 1);
  395.     delay(50);
  396.     lcd.write(0xFF);
  397.     delay(150);
  398.     digitalWrite(LED_PIN_peredacha, 0);
  399.     lcd.clear();
  400.     lcd.setCursor(0, 0);
  401.     lcd.print("OK!");
  402.     delay(3000);
  403.     lcd.clear();
  404.     lcd.setCursor(0, 0);
  405.     lcd.print("PECTAPT");
  406.     delay(3000);
  407.     //Serial.println("KADR 10"); //к10
  408.     resetFunc(); //перезагрузка
  409.   }
  410. }
  411.  
  412. void update_button(void)
  413. {
  414.   debouncer_BP1.update();
  415.   debouncer_BP2.update();
  416.  
  417.   debouncer_SP1.update();
  418.   debouncer_SP2.update();
  419.   debouncer_SP3.update();
  420.   debouncer_SP4.update();
  421.   debouncer_SP5.update();
  422.  
  423.   SP1_state = debouncer_SP1.read();
  424.   if (SP1_state != SP1_state_old)
  425.   {
  426.     SP1_state_old = SP1_state;
  427.     update_display();
  428.   }
  429.  
  430.   SP2_state = debouncer_SP2.read();
  431.   if (SP2_state != SP2_state_old)
  432.   {
  433.     SP2_state_old = SP2_state;
  434.     update_display();
  435.   }
  436.  
  437.   SP3_state = debouncer_SP3.read();
  438.   if (SP3_state != SP3_state_old)
  439.   {
  440.     SP3_state_old = SP3_state;
  441.     update_display();
  442.   }
  443.  
  444.   SP4_state = debouncer_SP4.read();
  445.   if (SP4_state != SP4_state_old)
  446.   {
  447.     SP4_state_old = SP4_state;
  448.     update_display();
  449.   }
  450.  
  451.   SP5_state = debouncer_SP5.read();
  452.   if (SP5_state != SP5_state_old)
  453.   {
  454.     SP5_state_old = SP5_state;
  455.     update_display();
  456.   }
  457.  
  458.   if ( debouncer_BP1.fell() ) { //if BUTTON1 pressed
  459.     if (SP1_state == 1 && SP2_state == 1 && sbor_state == 0)BP1_state = true;
  460.     update_display();
  461.   }
  462.  
  463.   if ( debouncer_BP2.fell() ) { //if BUTTON2 pressed
  464.     BP2_state = true;
  465.     update_display();
  466.   }
  467. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement