Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#define BLYNK_DEBUG
- //pięknie działa
- #include "Arduino.h"
- //#define BLYNK_PRINT Serial // Comment this out to disable prints and save space
- #include <ESP8266_HardSer.h>
- #include <BlynkSimpleShieldEsp8266_HardSer.h>
- #include <Adafruit_SleepyDog.h>
- #include <RemoteTransmitter.h>
- //#include <RemoteReceiver.h> nie korzystam z tej częsi biblioteki remote switch zamiast niej stosuję rs switch
- #include <RCSwitch.h>
- RCSwitch mySwitch = RCSwitch(); //nie wiem co to - pewnie nadanie nazwy własnej procedurze
- WidgetLED led1(V1); // vLED wskażnik połącznia z arduino - miga co 1 sek jeśli jest połączenie
- WidgetLED led5(V5); //na razie wskaznik klawisza na P8
- WidgetLED led6(V6);//wskaznik kodu pilota jaki jest wysyłany -on/off
- #define EspSerial Serial // Set ESP8266 Serial object
- ESP8266 wifi(EspSerial);
- char auth[] = "0000000000000000000000000";
- const int ledPinA4 = A4; //dioda sygnalizacyjna połączenia z BLYNK serwerwm połączona jest też z z vprzyciskiem bezpośrednim dla celów testowych
- const int button1Pin = 8; //we przyciku
- const int czasgrzania = 30 ; // ilość sek włączenia pompy x 10
- int ledStateA4 = HIGH;
- int tbutton1 = 0;
- int V3_down = 0;
- int ppilot = 0;
- int ppilotold = 0;
- int vPin20 = 0; // z vMENU
- int onoff = 0;
- int klaw1stan = 0;
- int wskrunAr = 0; //vLED miga co sek
- int timer1 = 0; // co 1 sek
- int treset = 0; //czas analizy połaczenia z BLYNK
- int grzanie = -1; //licznik czasu włączenia pompy
- int sekunda = 0; //zmienna pomocnicza do pompy
- ElroTransmitter elroTransmitter(A5); //wy transmitera
- void setup()
- {
- pinMode(ledPinA4, OUTPUT); // dioda sygnalizacyjna czy uruchomiło się połączenie z serwerem BLYNK - świeci gdy NIE ma połaczenia
- digitalWrite(ledPinA4, LOW);
- Serial.begin(115200); // Set console baud rate
- delay(10);
- EspSerial.begin(115200); // Set ESP8266 baud rate
- delay(10);
- Blynk.begin(auth, wifi, "xxxx","yyyyyyyyy");
- while (Blynk.connect() == false) {} // Wait until Blynk is connected
- // RemoteReceiver::init(0, 3, showCode); //ELRO odbiornik na pin2 Int 0 zamiast tego rc switch
- pinMode(button1Pin, INPUT_PULLUP); // Blynk.virtualWrite(V5, 0); przycisk na porcie 8 połączony z vLED na V5
- treset = millis() / 1000; // pętla 1 sek - do sprawdzania pocedury BLYNK Conected
- mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
- } // koniec pęli setup
- bool isFirstConnect = true;
- // This function will run every time Blynk connection is established
- BLYNK_CONNECTED() {
- ledStateA4 = LOW;
- digitalWrite(ledPinA4, HIGH); //zgaszenie LED gdy jest połaczenie z BLYNK server
- if (isFirstConnect) {
- Blynk.syncAll(); //ważna procedura - po starcie arduino synchronizuje wszystkiw wirtualne piny ze zmiennymi programu
- isFirstConnect = false;
- }
- }
- BLYNK_WRITE(V3) //vprzycisk do pilotów on/off
- {
- // BLYNK_LOG("V3=%s", param.asStr());
- ppilot = param.asInt();
- }
- BLYNK_WRITE(V20) //wybór pilota - menu rozwijane
- {
- vPin20 = param.asInt();
- }
- void loop()
- {
- Blynk.run();
- int i = millis() / 1000; //co 2 sekundy coś możemy robić
- if ((i - treset) > 1) { // co 2 sek sprawdzenie czy jest połączenie z BLYNK
- treset = millis() / 1000;
- bool r = Blynk.connected();
- if (r == 1) { //jeśli jest połączenie to zgaś LED
- digitalWrite(ledPinA4, HIGH);
- }
- else {
- digitalWrite(ledPinA4, LOW); // jeśli nie ma to zapal LED
- Watchdog.enable(2000); // za dwie sek restar procesora
- }
- } // koniec procedury testowania połączenia BLYNK
- if (ppilot == ppilotold) {} //sprawdzanie zmiany stanu przycisku vPIN pilot (V3)
- else {
- V3_down = 1; //jest zmiana stanu klawisza vPin3
- ppilotold = ppilot;
- }
- if ((V3_down == 1)) {
- onoff = ppilot; //zapisanie stanu klawisza do wysłania kodu on/off
- switch (vPin20) // Switch on Elro - wybór kodu pilota w zależności od ustawienia w menu rozwijanym
- {
- case 1:
- elroTransmitter.sendSignal(8, 'A', onoff);
- break;
- case 2:
- elroTransmitter.sendSignal(8, 'B', onoff);
- break;
- case 3:
- elroTransmitter.sendSignal(3, 'C', onoff);
- break;
- case 4:
- elroTransmitter.sendSignal(3, 'D', onoff);
- break;
- case 5:
- elroTransmitter.sendSignal(15, 'D', onoff);
- // Serial.println("5on");
- break;
- case 6:
- elroTransmitter.sendSignal(27, 'D', onoff);
- break;
- case 7:
- elroTransmitter.sendSignal(27, 'A', onoff);
- break;
- case 8:
- elroTransmitter.sendSignal(27, 'B', onoff);
- break;
- case 9:
- elroTransmitter.sendSignal(27, 'C', onoff);
- break;
- default: ;
- }
- if (onoff == 1) {
- led6.on(); //wysłanie potwierdzenia na vLED o on/off komendzie pilota
- }
- else {
- led6.off();
- }
- V3_down = 0;
- }
- int j = millis() / 1000; //co 2 sekundy sprawdzanie przycisku na porcie 8
- if ((j - timer1) > 1) {
- klaw1stan = digitalRead(button1Pin);
- if (klaw1stan == 0){
- // led5.on(); //zapalenie vLED gdy przycisk wciśniety
- }
- else {
- // led5.off();
- }
- wskrunAr = !wskrunAr ;
- if (wskrunAr == 0){
- led1.off(); //miganie vLED dla kontroli połączenia z UNO
- }
- else {
- led1.on();
- }
- timer1 = j;
- } //koniec petli 1 sek
- // procedura wydruku tego co się odebralo na 433
- if (mySwitch.available()) {
- int value = mySwitch.getReceivedValue();
- if (value == 0) {
- Serial.print("Unknown encoding");
- } else {
- // Serial.print("kod "); testowanie co jest odbierane
- // Serial.println( mySwitch.getReceivedValue() );
- //Serial.print(" / ");
- //Serial.println( value );
- // Serial.print("bit ");
- // Serial.print("Protocol: ");
- // Serial.println( mySwitch.getReceivedProtocol() );
- }
- if ( 14013756 == mySwitch.getReceivedValue()) {
- //digitalWrite(ledPinA4, LOW); led się zapala na chwilę gdy odebrany jest własciwy kod - potrzebne w testach
- grzanie = czasgrzania;
- elroTransmitter.sendSignal(27, 'B', HIGH); // wł pompy
- //elroTransmitter.sendSignal(8, 'A', HIGH); //wł lampy (testy)
- led5.on();
- }
- mySwitch.resetAvailable();
- }
- if (grzanie < 0) {}
- else {
- int k = millis() / 10000; // było co sek jest co 10 sek
- if ((k - sekunda) > 0) {
- sekunda = k;
- if (grzanie == 0){
- elroTransmitter.sendSignal(27, 'B', LOW);
- //elroTransmitter.sendSignal(8, 'A', LOW);
- led5.off();
- }
- else {
- elroTransmitter.sendSignal(27, 'B', HIGH); // wł pompy powtarzane co 10 sek
- }
- grzanie = grzanie - 1;
- }
- }
- } //koniec loop
- /*
- // Callback function is called only when a valid code is received.
- void showCode(unsigned long receivedCode, unsigned int period) {
- // Note: interrupts are disabled. You can re-enable them if needed.
- // Serial.print("C");
- //Serial.print(receivedCode);
- //Serial.print(", time ");
- //Serial.println(period);
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement