Advertisement
Krzyspx

pompa

May 15th, 2016
854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.06 KB | None | 0 0
  1. //#define BLYNK_DEBUG
  2. //pięknie działa
  3.  
  4. #include "Arduino.h"
  5. //#define BLYNK_PRINT Serial  // Comment this out to disable prints and save space
  6. #include <ESP8266_HardSer.h>
  7. #include <BlynkSimpleShieldEsp8266_HardSer.h>
  8. #include <Adafruit_SleepyDog.h>
  9. #include <RemoteTransmitter.h>
  10. //#include <RemoteReceiver.h> nie korzystam z tej częsi biblioteki remote switch zamiast niej stosuję rs switch
  11. #include <RCSwitch.h>
  12.  
  13. RCSwitch mySwitch = RCSwitch(); //nie wiem co to - pewnie nadanie nazwy własnej procedurze
  14.  
  15. WidgetLED led1(V1); // vLED wskażnik połącznia z arduino - miga co 1 sek jeśli jest połączenie
  16. WidgetLED led5(V5); //na razie wskaznik klawisza na P8
  17. WidgetLED led6(V6);//wskaznik kodu pilota jaki jest wysyłany -on/off
  18.  
  19. #define EspSerial Serial // Set ESP8266 Serial object
  20. ESP8266 wifi(EspSerial);
  21.  
  22. char auth[] = "0000000000000000000000000";
  23.  
  24. const int ledPinA4 =  A4; //dioda sygnalizacyjna połączenia z BLYNK serwerwm połączona jest też z z vprzyciskiem bezpośrednim dla celów testowych
  25. const int button1Pin = 8;  //we przyciku
  26. const int czasgrzania = 30 ; // ilość sek włączenia pompy x 10
  27.  
  28. int ledStateA4 = HIGH;
  29. int tbutton1 = 0;
  30.  
  31. int V3_down = 0;
  32.  
  33. int ppilot = 0;
  34. int ppilotold = 0;
  35. int vPin20 = 0; // z vMENU
  36. int onoff = 0;
  37. int klaw1stan = 0;
  38. int wskrunAr = 0; //vLED miga co sek
  39. int timer1 = 0; // co 1 sek
  40. int treset = 0; //czas analizy połaczenia z BLYNK
  41. int grzanie = -1; //licznik czasu włączenia pompy
  42. int sekunda = 0; //zmienna pomocnicza do pompy
  43.  
  44. ElroTransmitter elroTransmitter(A5);   //wy transmitera
  45.  
  46.  
  47. void setup()
  48. {
  49.   pinMode(ledPinA4, OUTPUT); // dioda sygnalizacyjna czy uruchomiło się połączenie z serwerem BLYNK - świeci gdy NIE ma połaczenia
  50.   digitalWrite(ledPinA4, LOW);
  51.  
  52.   Serial.begin(115200);  // Set console baud rate
  53.   delay(10);
  54.    EspSerial.begin(115200);  // Set ESP8266 baud rate
  55.   delay(10);
  56.   Blynk.begin(auth, wifi, "xxxx","yyyyyyyyy");
  57.  
  58.     while (Blynk.connect() == false) {}   // Wait until Blynk is connected
  59.  
  60.    // RemoteReceiver::init(0, 3, showCode); //ELRO odbiornik na pin2 Int 0 zamiast tego rc switch
  61.       pinMode(button1Pin, INPUT_PULLUP);   //  Blynk.virtualWrite(V5, 0); przycisk na porcie 8 połączony z vLED na V5
  62.   treset = millis() / 1000; // pętla 1 sek - do sprawdzania pocedury BLYNK Conected
  63.  
  64.   mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
  65.    
  66. } // koniec pęli setup
  67.  
  68. bool isFirstConnect = true;
  69. // This function will run every time Blynk connection is established
  70. BLYNK_CONNECTED() {
  71.   ledStateA4 = LOW;
  72.   digitalWrite(ledPinA4, HIGH);  //zgaszenie LED gdy jest połaczenie z BLYNK server
  73.   if (isFirstConnect) {
  74.     Blynk.syncAll();  //ważna procedura - po starcie arduino synchronizuje wszystkiw wirtualne piny ze zmiennymi programu
  75.     isFirstConnect = false;
  76.   }
  77. }
  78.  
  79. BLYNK_WRITE(V3) //vprzycisk do pilotów on/off
  80. {
  81.   //  BLYNK_LOG("V3=%s", param.asStr());
  82.   ppilot = param.asInt();
  83. }
  84. BLYNK_WRITE(V20) //wybór pilota - menu rozwijane
  85. {
  86.   vPin20 = param.asInt();
  87. }
  88.  
  89.  
  90. void loop()
  91. {
  92.   Blynk.run();
  93.    int i = millis() / 1000; //co 2 sekundy coś możemy robić
  94.   if ((i - treset) > 1) {  // co 2 sek sprawdzenie czy jest połączenie z BLYNK
  95.     treset = millis() / 1000;
  96.     bool r = Blynk.connected();
  97.     if (r == 1) { //jeśli jest połączenie to zgaś LED
  98.       digitalWrite(ledPinA4, HIGH);
  99.  
  100.     }
  101.     else {
  102.       digitalWrite(ledPinA4, LOW); // jeśli nie ma to zapal LED
  103.       Watchdog.enable(2000); // za dwie sek restar procesora
  104.     }
  105.   } // koniec procedury testowania połączenia BLYNK
  106.  
  107.     if (ppilot == ppilotold) {} //sprawdzanie zmiany stanu przycisku  vPIN pilot (V3)
  108.   else {
  109.     V3_down = 1; //jest zmiana stanu klawisza vPin3
  110.     ppilotold = ppilot;
  111.   }
  112.       if ((V3_down == 1)) {
  113.    onoff = ppilot; //zapisanie stanu klawisza do wysłania kodu on/off
  114.    
  115.     switch (vPin20)  // Switch on Elro - wybór kodu pilota w zależności od ustawienia w menu rozwijanym
  116.     {
  117.       case 1:
  118.         elroTransmitter.sendSignal(8, 'A', onoff);
  119.         break;
  120.       case 2:
  121.         elroTransmitter.sendSignal(8, 'B', onoff);
  122.         break;
  123.       case 3:
  124.         elroTransmitter.sendSignal(3, 'C', onoff);
  125.         break;
  126.       case 4:
  127.         elroTransmitter.sendSignal(3, 'D', onoff);
  128.         break;
  129.       case 5:
  130.         elroTransmitter.sendSignal(15, 'D', onoff);
  131.         // Serial.println("5on");
  132.         break;
  133.       case 6:
  134.         elroTransmitter.sendSignal(27, 'D', onoff);
  135.         break;
  136.         case 7:
  137.         elroTransmitter.sendSignal(27, 'A', onoff);
  138.         break;
  139.         case 8:
  140.         elroTransmitter.sendSignal(27, 'B', onoff);
  141.          break;
  142.         case 9:
  143.         elroTransmitter.sendSignal(27, 'C', onoff);
  144.         break;
  145.       default: ;
  146.    
  147.     }
  148.     if (onoff == 1) {
  149.     led6.on(); //wysłanie potwierdzenia na vLED o on/off komendzie pilota
  150.     }
  151.     else {
  152.     led6.off();
  153.     }
  154.    
  155.     V3_down = 0;
  156.    
  157.   }
  158.   int j = millis() / 1000; //co 2 sekundy sprawdzanie przycisku na porcie 8
  159.    if ((j - timer1) > 1) {
  160.      klaw1stan = digitalRead(button1Pin);
  161.      if (klaw1stan == 0){
  162.       // led5.on(); //zapalenie vLED gdy przycisk wciśniety
  163.      }
  164.      else {
  165.     //   led5.off();
  166.      }
  167.    wskrunAr = !wskrunAr ;
  168.     if (wskrunAr == 0){
  169.       led1.off(); //miganie vLED dla kontroli połączenia z UNO
  170.     }
  171.    else {
  172.      led1.on();
  173.    }
  174.  
  175. timer1 = j;
  176.  
  177.  
  178.      
  179.    } //koniec petli 1 sek
  180.  
  181. // procedura wydruku tego co się odebralo na 433
  182.   if (mySwitch.available()) {
  183.    
  184.     int value = mySwitch.getReceivedValue();
  185.    
  186.     if (value == 0) {
  187.       Serial.print("Unknown encoding");
  188.     } else {
  189.     // Serial.print("kod "); testowanie co jest odbierane
  190.      // Serial.println( mySwitch.getReceivedValue() );
  191.       //Serial.print(" / ");
  192.       //Serial.println( value );
  193.      // Serial.print("bit ");
  194.      // Serial.print("Protocol: ");
  195.      // Serial.println( mySwitch.getReceivedProtocol() );
  196.     }
  197. if ( 14013756 == mySwitch.getReceivedValue()) {
  198.   //digitalWrite(ledPinA4, LOW); led się zapala na chwilę gdy odebrany jest własciwy kod - potrzebne w testach
  199.   grzanie = czasgrzania;
  200.   elroTransmitter.sendSignal(27, 'B', HIGH); // wł pompy
  201.   //elroTransmitter.sendSignal(8, 'A', HIGH); //wł lampy (testy)
  202.   led5.on();
  203. }
  204.     mySwitch.resetAvailable();
  205.   }
  206.  
  207.  if (grzanie < 0) {}
  208.  else {
  209.  int k = millis() / 10000; // było co sek jest co 10 sek
  210.  if ((k - sekunda) > 0) {
  211.   sekunda = k;
  212.    if (grzanie == 0){
  213.   elroTransmitter.sendSignal(27, 'B', LOW);
  214.      //elroTransmitter.sendSignal(8, 'A', LOW);
  215.   led5.off();
  216.    }
  217.   else {
  218.    elroTransmitter.sendSignal(27, 'B', HIGH); // wł pompy powtarzane co 10 sek
  219.   }
  220.    grzanie = grzanie - 1;
  221.    }
  222.  }
  223. } //koniec loop
  224.  
  225. /*
  226. // Callback function is called only when a valid code is received.
  227. void showCode(unsigned long receivedCode, unsigned int period) {
  228.   // Note: interrupts are disabled. You can re-enable them if needed.
  229.   //  Serial.print("C");
  230.   //Serial.print(receivedCode);
  231.   //Serial.print(", time ");
  232.   //Serial.println(period);
  233. }
  234. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement