• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Inteligentny Dom
#1
Witam,
jestem pocztąkujacy jeśli chodzi o arduino i mam mały kłopot.
Z dostępnych źródeł powstał  programik  obsługujący ESP32 z Blynk.
Przez wifi wszystko działa ale chciałbym zmienić ESP32 na ethernet shield w5100 i mega 2560.
trochę pozmieniałem program i  działa ale tylko przez internet , nie działa manual tak jak w ESP32.

Może ktoś mi pomoże poprawić kod.
kod działający na WIFI
Kod:
#include <BlynkSimpleEsp32.h>

BlynkTimer timer;

#define RelayPin1 23
#define RelayPin2 22
#define RelayPin3 21 
#define Relaypin4 17

#define SwitchPin1 19
#define SwitchPin2 18
#define SwitchPin3 5 


#define wifiLed    1   //D2

#define VPIN_BUTTON_1    V1
#define VPIN_BUTTON_2    V2
#define VPIN_BUTTON_3    V3


int toggleState_1 = 1;
int toggleState_2 = 1;
int toggleState_3 = 1;

int wifiFlag = 0;

#define AUTH "  BLYNK AUTH   "                  
#define WIFI_SSID " WIFI NAZWA"            
#define WIFI_PASS " WIFI KOD "        


void relayOnOff(int relay){

    switch(relay){
      case 1:
             if(toggleState_1 == 1){
              digitalWrite(RelayPin1, LOW);
              toggleState_1 = 0;
              Serial.println("Device1 ON");
              }
             else{
              digitalWrite(RelayPin1, HIGH);
              toggleState_1 = 1;
              Serial.println("Device1 OFF");
              }
             delay(100);
      break;
      case 2:
             if(toggleState_2 == 1){
              digitalWrite(RelayPin2, LOW);
              toggleState_2 = 0;
              Serial.println("Device2 ON");
              }
             else{
              digitalWrite(RelayPin2, HIGH);
              toggleState_2 = 1;
              Serial.println("Device2 OFF");
              }
             delay(100);
      break;
      case 3:
             if(toggleState_3 == 1){
              digitalWrite(RelayPin3, LOW);
              toggleState_3 = 0;
              Serial.println("Device3 ON");
              }
             else{
              digitalWrite(RelayPin3, HIGH);
              toggleState_3 = 1;
              Serial.println("Device3 OFF");
              }
             delay(100);
   
         
             delay(100);
      break;
      default : break;     
      } 
}

void with_internet(){
    //Manual Switch Control
    if (digitalRead(SwitchPin1) == LOW){
      delay(200);
      relayOnOff(1);
      Blynk.virtualWrite(VPIN_BUTTON_1, toggleState_1);    
    }
    else if (digitalRead(SwitchPin2) == LOW){
      delay(200);
      relayOnOff(2);     
      Blynk.virtualWrite(VPIN_BUTTON_2, toggleState_2);  
    }
    else if (digitalRead(SwitchPin3) == LOW){
      delay(200);
      relayOnOff(3);
      Blynk.virtualWrite(VPIN_BUTTON_3, toggleState_3);  
    }
  
}
void without_internet(){
    //Manual Switch Control
    if (digitalRead(SwitchPin1) == LOW){
      delay(200);
      relayOnOff(1);     
    }
    else if (digitalRead(SwitchPin2) == LOW){
      delay(200);
      relayOnOff(2);
    }
    else if (digitalRead(SwitchPin3) == LOW){
      delay(200);
      relayOnOff(3);
    }
   
}

BLYNK_CONNECTED() {
  // Request the latest state from the server
  Blynk.syncVirtual(VPIN_BUTTON_1);
  Blynk.syncVirtual(VPIN_BUTTON_2);
  Blynk.syncVirtual(VPIN_BUTTON_3);


}

// When App button is pushed - switch the state

BLYNK_WRITE(VPIN_BUTTON_1) {
  toggleState_1 = param.asInt();
  digitalWrite(RelayPin1, toggleState_1);
}

BLYNK_WRITE(VPIN_BUTTON_2) {
  toggleState_2 = param.asInt();
  digitalWrite(RelayPin2, toggleState_2);
}

BLYNK_WRITE(VPIN_BUTTON_3) {
  toggleState_3 = param.asInt();
  digitalWrite(RelayPin3, toggleState_3);
}



void checkBlynkStatus() {

  bool isconnected = Blynk.connected();
  if (isconnected == false) {
    wifiFlag = 1;
    digitalWrite(wifiLed, LOW); //Turn off WiFi LED
  }
  if (isconnected == true) {
    wifiFlag = 0;
    digitalWrite(wifiLed, HIGH); //Turn on WiFi LED
  }
}
void setup()
{
  Serial.begin(9600);

  pinMode(RelayPin1, OUTPUT);
  pinMode(RelayPin2, OUTPUT);
  pinMode(RelayPin3, OUTPUT);
 
  pinMode(wifiLed, OUTPUT);

  pinMode(SwitchPin1, INPUT_PULLUP);
  pinMode(SwitchPin2, INPUT_PULLUP);
  pinMode(SwitchPin3, INPUT_PULLUP);


  digitalWrite(RelayPin1, toggleState_1);
  digitalWrite(RelayPin2, toggleState_2);
  digitalWrite(RelayPin3, toggleState_3);


  WiFi.begin(WIFI_SSID, WIFI_PASS);
  timer.setInterval(3000L, checkBlynkStatus);
  Blynk.config(AUTH);
}

void loop()

  if (WiFi.status() != WL_CONNECTED)
  {
    Serial.println("WiFi Not Connected");
  }
  else
  {
    Serial.println("WiFi Connected");
    Blynk.run();
  }

  timer.run(); // Initiates SimpleTimer
  if (wifiFlag == 0)
    with_internet();
  else
    without_internet();
}

Kod przez kabel nie działający manual
Kod:
#define BLYNK_PRINT Serial


#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>

BlynkTimer timer;

#define RelayPin1 A2  //A2
#define RelayPin2 2   //D2
#define RelayPin3 41  //D41
#define RelayPin4 22  //D22


#define SwitchPin1 A1  //A1
#define SwitchPin2 1   //D1
#define SwitchPin3 40  //D40


#define VPIN_BUTTON_1    V1
#define VPIN_BUTTON_2    V2
#define VPIN_BUTTON_3    V3



int toggleState_1 = 1;
int toggleState_2 = 1;
int toggleState_3 = 1;




char auth[] = " BLYNK AUTH ";

#define W5100_CS  10
#define SDCARD_CS 4

void setup()
{
  // Debug console
  Serial.begin(9600);

  pinMode(SDCARD_CS, OUTPUT);
  digitalWrite(SDCARD_CS, HIGH);
  Blynk.begin(auth);


Serial.begin(9600);

  pinMode(RelayPin1, OUTPUT);
  pinMode(RelayPin2, OUTPUT);
  pinMode(RelayPin3, OUTPUT);
  pinMode(RelayPin4, LOW);


  pinMode(SwitchPin1, INPUT_PULLUP);
  pinMode(SwitchPin2, INPUT_PULLUP);
  pinMode(SwitchPin3, INPUT_PULLUP);


  //During Starting all Relays should TURN OFF
  digitalWrite(RelayPin1, toggleState_1);
  digitalWrite(RelayPin2, toggleState_2);
  digitalWrite(RelayPin3, toggleState_3);
}


void relayOnOff(int relay){

    switch(relay){
      case 1:
             if(toggleState_1 == 1){
              digitalWrite(RelayPin1, LOW);
              toggleState_1 = 0;
              Serial.println("Device1 ON");
              }
             else{
              digitalWrite(RelayPin1, HIGH);
              toggleState_1 = 1;
              Serial.println("Device1 OFF");
              }
             delay(100);
      break;
      case 2:
             if(toggleState_2 == 1){
              digitalWrite(RelayPin2, LOW);
              toggleState_2 = 0;
              Serial.println("Device2 ON");
              }
             else{
              digitalWrite(RelayPin2, HIGH);
              toggleState_2 = 1;
              Serial.println("Device2 OFF");
              }
             delay(100);
      break;
      case 3:
             if(toggleState_3 == 1){
              digitalWrite(RelayPin3, LOW);
              toggleState_3 = 0;
              Serial.println("Device3 ON");
              }
             else{
              digitalWrite(RelayPin3, HIGH);
              toggleState_3 = 1;
              Serial.println("Device3 OFF");
              }
             delay(100);
      break;
      default : break;     
      } 
}

BLYNK_CONNECTED() {

  Blynk.syncVirtual(VPIN_BUTTON_1);
  Blynk.syncVirtual(VPIN_BUTTON_2);
  Blynk.syncVirtual(VPIN_BUTTON_3);

}



BLYNK_WRITE(VPIN_BUTTON_1) {
  toggleState_1 = param.asInt();
  digitalWrite(RelayPin1, toggleState_1);
}

BLYNK_WRITE(VPIN_BUTTON_2) {
  toggleState_2 = param.asInt();
  digitalWrite(RelayPin2, toggleState_2);
}

BLYNK_WRITE(VPIN_BUTTON_3) {
  toggleState_3 = param.asInt();
  digitalWrite(RelayPin3, toggleState_3);
}


void loop()
{
  Blynk.run();
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości