Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //działa!!!!
- /*
- V1 - vLED OK
- v2 - vLED ERROR
- v5 - vLED pompa
- v6 - vLED pilot
- v7 - vLED przełącznik OnOff na A6
- v10 - przycisk pompa
- V12 - ds18b20
- v20 - menu wybór pilota
- v21 - przycisk pilota
- */
- char kod[] = "*****************b2_ds_rt_p_b_v1*******************";
- char auth[] = "xxxxxxxxxxxxxxxxxxx";
- #define BLYNK_PRINT Serial // Comment this out to disable prints and save space
- #include <ESP8266_Lib.h>
- #include <BlynkSimpleShieldEsp8266.h>
- const int resetesp = 4;
- #include <Timers.h> // ulubiona biblioteka Timers
- Timers <4> akcja; // n niezależnych wątków
- #include <OneWire.h>
- #include <DS18B20.h>
- const byte ONEWIRE_PIN = 13; // 1-Wire bus Arduino pin
- byte sensorAddress[8] = {0x28, 0xFF, 0x42, 0x56, 0x52, 0x16, 0x4, 0xE0}; // // brama2 płytka test
- OneWire onewire(ONEWIRE_PIN); // 1-Wire object
- DS18B20 sensors(&onewire); // DS18B20 sensors object
- #include <RemoteTransmitter.h>
- ElroTransmitter elroTransmitter(3); //wy transmitera
- #include <RCSwitch.h>
- RCSwitch mySwitch = RCSwitch(); //nie wiem co to - pewnie nadanie nazwy własnej procedurze
- #define EspSerial Serial // Set ESP8266 Serial object
- ESP8266 wifi(&EspSerial);
- WidgetLED led1(V1); // vLED_ok
- WidgetLED led2(V2); // vLED_error
- WidgetLED led5(V5); // vLED pompa
- WidgetLED led6(V6); // vLED pilot
- WidgetLED led7(V7); // vLED przełącznikOnOff
- int led_ok = 7;
- int led_error = 8;
- const int czasgrzania = 4 ; // ilość sek włączenia pompy x 10
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> procedury
- int flaga1s = 0;
- void timer1sek() //coś do zrobienia co 1 sek
- {
- sprawdzBLYNK();
- miganieLED_ok();
- statusLED_error();
- miganievLED();
- sensorT();
- transmitBLYNK();
- swOnOff();
- flaga1s = 1;
- }
- int stanswOnOff = HIGH;
- void swOnOff(){
- stanswOnOff = digitalRead(A5);
- if (stanswOnOff == 0) {
- led7.off();
- }
- else {
- led7.on();
- }
- }
- int stanLED_ok = HIGH;
- void miganieLED_ok()
- {
- stanLED_ok = !stanLED_ok;
- if (stanLED_ok == 0) {
- digitalWrite(led_ok, LOW);
- }
- else {
- digitalWrite(led_ok, HIGH);
- }
- }
- void statusLED_error()
- {
- int s = digitalRead(led_error);
- if (s == 0) {
- led2.off(); //miganie vLED dla kontroli połączenia z UNO
- }
- else {
- led2.on();
- }
- }
- int wskrunAr = 0; //vLED miga co sek
- void miganievLED()
- {
- wskrunAr = !wskrunAr ;
- if (wskrunAr == 0) {
- led1.off(); //miganie vLED dla kontroli połączenia z UNO
- }
- else {
- led1.on();
- }
- }
- float temperature = 0;
- float temperature1 = 0;
- int temp1 = 0;
- void sensorT()
- {
- if (sensors.available())
- {
- temperature = sensors.readTemperature(sensorAddress); // Reads the temperature from sensor
- temperature1 = (temperature * 10);
- temp1 = temperature1;
- temperature1 = temp1;
- temperature = (temperature1 / 10);
- Serial.print(temperature);
- Serial.println((" 'C"));
- sensors.request(sensorAddress);
- }
- }
- int noconnection = 0;
- void sprawdzBLYNK()
- {
- digitalWrite(resetesp, HIGH); //dla pewności
- bool r = Blynk.connected();
- if (r == 1) { //jeśli jest połączenie to zgaś LED
- digitalWrite(led_error, LOW); //zgaszenie LED gdy jest połaczenie z BLYNK server
- noconnection = 0;
- }
- else {
- digitalWrite(led_error, HIGH);
- noconnection = 1;
- }
- }
- void(* resetFunc) (void) = 0;//declare reset function at address 0
- int czyrestart = 0;
- void restartArduino() { //długa pętla 10-30 sek
- if (noconnection == 1) {
- if (czyrestart == 1) {
- resetFunc(); //call reset //restart
- } else {
- czyrestart = 1;
- }
- }
- }
- void transmitBLYNK() { //procedura wysyłania do serwera BLYNK
- wyslij_V12();
- }
- void wyslij_V12() {
- String str = String(temperature, 1) + " ℃";
- Blynk.virtualWrite(V12, str);
- }
- //BLYNK_READ(V12) //temperatura
- //{}
- int vPin20 = 0;
- BLYNK_WRITE(V20) //wybór pilota - menu rozwijane
- {
- vPin20 = param.asInt();
- }
- int ppilot = 0;
- int ppilotold = 0;
- int onoff = 0;
- BLYNK_WRITE(V21) //vprzycisk do pilotów on/off
- {
- // BLYNK_LOG("V3=%s", param.asStr());
- ppilot = param.asInt();
- }
- int grzanie = -1; //licznik czasu włączenia pompy
- void licznikgrzania()
- {
- grzanie = grzanie - 1;
- if (grzanie < 0) {
- grzanie = -1;
- }
- else {
- 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
- }
- }
- }
- int pompaonoff = 0;
- int pompaonoffold = 0;
- BLYNK_WRITE(V10) //vprzycisk załączenia pompy
- {
- pompaonoff = param.asInt();
- if (pompaonoff == pompaonoffold) {} //sprawdzanie zmiany stanu przycisku vPIN V10 załączenie pompy
- else {
- grzanie = czasgrzania; //naciśniecie v przycisku generuje powójny czas uruchomienia pompy
- elroTransmitter.sendSignal(27, 'B', HIGH); // wł pompy
- led5.on();
- pompaonoffold = pompaonoff;
- }
- }
- bool isFirstConnect = true;
- // This function will run every time Blynk connection is established
- BLYNK_CONNECTED() {
- if (isFirstConnect) {
- Blynk.syncAll(); //ważna procedura - po starcie arduino synchronizuje wszystkiw wirtualne piny ze zmiennymi programu
- isFirstConnect = false;
- }
- }
- //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> procedury END
- //+++++++++++++++++++++++++++++++++++++++++++++++++++ setup
- void setup()
- {
- pinMode(led_ok, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
- digitalWrite(led_ok, HIGH);
- pinMode(led_error, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
- digitalWrite(led_error, HIGH);
- pinMode(A6, INPUT_PULLUP); //uszkodziłem
- pinMode(A5, INPUT_PULLUP);
- //reset ESP
- pinMode(resetesp, OUTPUT);
- digitalWrite(resetesp, LOW); //reset esp
- digitalWrite(led_ok, LOW);
- delay(2000);
- digitalWrite(resetesp, HIGH);
- delay(200); //stany przejściowe esp
- digitalWrite(led_ok, HIGH);
- akcja.attach(0, 1500, timer1sek); // uruchamianie timera 1 sek
- akcja.attach(1, 30000, restartArduino); // pętla dłuższa 10 s reset BLYNK gdy nie ma połączenia
- akcja.attach(2, 10000, licznikgrzania); // pętla dłuższa 10 s rlicznik grzania
- sensors.begin(); // DS18B20 sensors setup
- sensors.request(sensorAddress); // Requests sensor for measurement
- Serial.begin(115200); // Set console baud rate
- EspSerial.begin(115200); // Set ESP8266 baud rate
- Blynk.begin(auth, wifi, "aaa", "bbbbbbbb");
- Serial.println(kod); //sygnatura
- Serial.println(auth); //sygnatura2
- Serial.println("Arduino.org 1.7.10"); //sygnatura
- wskrunAr = 0; //vLED
- stanLED_ok = 0;
- mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
- } // koniec pęli setup
- //++++++++++++++++++++++++++++++++++++++++++++++++++++ setup END
- //---------------------------------------------------- loop
- void loop()
- {
- akcja.process(); // inicjalizacja lub aktualizacja wszystkich procedur(wątków, zdarzeń itp.)
- Blynk.run();
- int V3_down = 0;
- 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;
- }
- // procedura odczytu 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() );
- }
- 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();
- }
- } //koniec loop
- //----------------------------------------------------- loop END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement