daily pastebin goal
85%
SHARE
TWEET

Programowanie zdarzeń w Arduino IDE

Krzyspx Jun 2nd, 2017 95 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*************************************************************
  2.   TEST EVENTOR versja 1 programowanie funkcji w Arduino IDE
  3.  *************************************************************/
  4.  
  5. #define BLYNK_PRINT Serial
  6. #include <ESP8266WiFi.h>
  7. #include <BlynkSimpleEsp8266.h>
  8.  
  9. char auth[] = "1111111111111111111111111111111111";
  10. char ssid[] = "000000";
  11. char pass[] = "ppppppppp";
  12.  
  13. #include <Timers.h> //
  14. Timers <4> akcja; // 4  wątki\
  15.  
  16. WidgetLED led1(V1); // vLED wskażnik połącznia z arduino - miga co 1 sek jeśli jest połączenie
  17.  
  18. #define led_bialy 12 //  led jak odbiornik 1
  19. #define led_blue  14  //  odbiornik 2
  20. #define led_esp   2 //   odbiornik 3
  21.  
  22. #define przyc1 4 //przycisk 1
  23. #define przyc2 5
  24. #define przyc3 13
  25.  
  26. int opoznienie =10; //czas załączenia odbiornika w sek
  27.  
  28. bool startlicz = 0; //zmienna licznika załączenia - start/stop
  29. int licz = 0;       //zmienna licznika załączenia - licznik czasu
  30.  
  31. BLYNK_WRITE(V10) //vprzyc 1 przycisk wirtualny w telefonnie
  32. {
  33.   if (param.asInt()) {
  34.     zalodb1(); //załączenie odbiornika 1
  35.   }
  36. }
  37. BLYNK_WRITE(V11) //sterowanie odbiornikiem 2 i 3 z aplikacji BLYNK
  38. {
  39.   if (param.asInt()) {
  40.     zalodb2(); //załączenie odbiornika 2
  41.     zalodb3();  //procedura załączenia odbiornika 3
  42.   }
  43. }
  44. BLYNK_WRITE(V12) //sterowanie odbiornikiem 1,2,3 z aplikacji BLYNK
  45. {
  46.   if (param.asInt()) {
  47.     wylodb1();   // wyłączenie odbiornika 1
  48.     wylodb2();   // wyłączenie odbiornika 2
  49.     wylodb3();   // wyłączenie odbiornika 3
  50.   }
  51. }
  52. BLYNK_WRITE(V25)
  53. {
  54.  opoznienie =  param.asInt();
  55. }
  56.  
  57. void timer1sek() //coś do zrobienia co 1 sek
  58. {
  59.   liczasek(); //licznik zalączenia
  60.   miganievLED(); //mruganie vLED w telefonie info ze moduł działa  
  61. }
  62.  
  63. void setup()
  64. {
  65.   Serial.begin(115200);
  66.  
  67.   pinMode(led_bialy, OUTPUT); // port jako wyj do odbiornika
  68.   digitalWrite(led_bialy, 1); // wyłączenie odbiornika - wyłącza wysoki stan
  69.   pinMode(led_blue, OUTPUT); //
  70.   digitalWrite(led_blue, 1);
  71.   pinMode(led_esp, OUTPUT); //
  72.   digitalWrite(led_esp, 1);
  73.  
  74.   pinMode(przyc1, INPUT_PULLUP); // port jako wejście z przyciku
  75.   pinMode(przyc2, INPUT_PULLUP);
  76.   pinMode(przyc3, INPUT_PULLUP);
  77.  
  78.   akcja.attach(0, 1000, timer1sek); //  timer 1 sek
  79.  
  80.   Blynk.begin(auth, ssid, pass, IPAddress(192, 168, 2, 126), 8442); // BLYNK postawiony na prywatnym serwerze NAS SYNOLOGY
  81.   Serial.println(__FILE__);
  82. }
  83.  
  84. void loop()
  85. {
  86.   Blynk.run();
  87.   akcja.process(); // timer
  88.   mojeproceduryobslugi(); //główna procedura programu realizująca zadane funkcje
  89. }
  90.  
  91. byte stanprzyc1 = 0; //pamiętanie poprzedniego stanu klawisza by reagować na zmianę stanu
  92. byte stanprzyc2 = 0;
  93. byte stanprzyc3 = 0;
  94.  
  95. void mojeproceduryobslugi()
  96. {
  97.   if (digitalRead(przyc1) == 0) { //sprawdzamy czy nacisniety przycisk 1
  98.     if (stanprzyc1 == 1) {      // sprawdzamy czy poprzedni stan był 1
  99.       zalodb1(); //załączenie odbiornika 1
  100.     }
  101.   }
  102.   stanprzyc1 = digitalRead(przyc1); //zapamietanie nowego stanu przycisku
  103.  
  104.   if (digitalRead(przyc2) == 0) { //sprawdzamy czy nacisniety przycisk 2
  105.     if (stanprzyc2 == 1) {      // sprawdzamy czy poprzedni stan był 1
  106.       zalodb2(); //załączenie odbiornika 2
  107.       zalodb3();  //procedura załączenia odbiornika 3
  108.     }
  109.   }
  110.   stanprzyc2 = digitalRead(przyc2); //zapamietanie nowego stanu przycisku
  111.  
  112.   if (digitalRead(przyc3) == 0) { //sprawdzamy czy nacisniety przycisk 3
  113.     if (stanprzyc3 == 1) {      // sprawdzamy czy poprzedni stan był 1
  114.       wylodb1();   // wyłączenie odbiornika 1
  115.       wylodb2();   // wyłączenie odbiornika 2
  116.       wylodb3();   // wyłączenie odbiornika 3
  117.     }
  118.   }
  119.   stanprzyc3 = digitalRead(przyc3); //zapamietanie nowego stanu przycisku
  120. }
  121.  
  122. void zalodb1() {
  123.   digitalWrite(led_bialy, 0); // załączenie odbiornika 0 jest aktywne
  124.   Blynk.virtualWrite(V20, 1); // wyswietlenia załączenia odbiornika 1 aktywne
  125. }
  126. void zalodb2() {
  127.   digitalWrite(led_blue, 0);
  128.   Blynk.virtualWrite(V21, 1);
  129. }
  130. void zalodb3() {
  131.   digitalWrite(led_esp, 0);
  132.   Blynk.virtualWrite(V22, 1);
  133.   licz = opoznienie; //ustawienie licznika czasu załączenia
  134.   startlicz = 1; //włączenie odliczania załączenia
  135. }
  136. void wylodb1() {
  137.   digitalWrite(led_bialy, 1);
  138.   Blynk.virtualWrite(V20, 0);
  139. }
  140. void wylodb2() {
  141.   digitalWrite(led_blue, 1);
  142.   Blynk.virtualWrite(V21, 0);
  143. }
  144. void wylodb3() {
  145.   digitalWrite(led_esp, 1);
  146.   Blynk.virtualWrite(V22, 0);
  147.   startlicz = 0; //zatrzymanie licznika opóźnienia
  148. }
  149.  
  150. void liczasek() // licznik czasu załączenia odbiornika wywoływany co 1 sek przez Timer
  151. {
  152.   if (startlicz != 0) {
  153.     licz--;
  154.   Blynk.virtualWrite(V25, licz);  
  155.     if (licz < 1) {
  156.       licz = 0;
  157.       startlicz = 0;
  158.       wylodb3(); // wyłączenie odbiornika 3 po odliczeniu czasu
  159.     }
  160.   }
  161. }
  162.  
  163. int wskrunAr = 0; //vLED miga co 1 sek wskaxnik komunikacji między modułem a aplikacją w telefonie
  164. void miganievLED()
  165. {
  166.   wskrunAr = !wskrunAr ;
  167.   if (wskrunAr == 0) {
  168.     led1.off(); //miganie vLED dla kontroli połączenia z UNO
  169.   }
  170.   else {
  171.     led1.on();
  172.   }
  173. }
RAW Paste Data
Top