Blynk project with dimmer

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <RBDdimmer.h>

BlynkTimer timer;

void checkPhysicalButton();

int relay1State = LOW;
int pushButton1State = HIGH;

int relay2State = LOW;
int pushButton2State = HIGH;

int relay3State = LOW;
int pushButton3State = HIGH;

int relay4State = LOW;
int pushButton4State = HIGH;

int relay5State = LOW;
int pushButton5State = HIGH;

#define AUTH "---------------------------"
#define WIFI_SSID "------"
#define WIFI_PASS "------"

#define SERVER "blynk-cloud.com "
#define PORT 8442

#define RELAY_PIN_1 12
#define RELAY_PIN_2 16
#define RELAY_PIN_3 4
#define RELAY_PIN_4 5
#define RELAY_PIN_5 12

#define PUSH_BUTTON_1 2
#define PUSH_BUTTON_2 14
#define PUSH_BUTTON_3 13
#define PUSH_BUTTON_4 1
#define PUSH_BUTTON_5 2 //for dimmer off
#define PUSH_BUTTON_6 2 //for speed up
#define PUSH_BUTTON_7 2 //for speed up

#define VPIN_BUTTON_1 V1 //relay1
#define VPIN_BUTTON_2 V2 //relay2
#define VPIN_BUTTON_3 V3 //relay3
#define VPIN_BUTTON_4 V4 //relay4
#define VPIN_BUTTON_5 V5 //dimmer on/off

#define outputPin 27 // PWM pin for dimmer
#define zerocross 25 // for boards with CHANGEBLE input pins

dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards

int outVal = 0; // Intialisation value for dimmer
int dim_val; // dimmer value to dim the appliance

BLYNK_CONNECTED() {

Blynk.syncVirtual(VPIN_BUTTON_1); // Request the latest state from the server
Blynk.syncVirtual(VPIN_BUTTON_2);
Blynk.syncVirtual(VPIN_BUTTON_3);
Blynk.syncVirtual(VPIN_BUTTON_4);
Blynk.syncVirtual(VPIN_BUTTON_5); //dimmer on of

}

BLYNK_WRITE(V0) { // Set to your virtual pin
outVal = param.asInt(); // Get State of Virtual Button
dim_val = map(outVal, 0, 1023, 0, 100); // mapped the value for dimmer
dimmer.setPower(dim_val); // Set dimmer power
//Blynk.virtualWrite(V1, dim_val); //sending to Blynk
}

BLYNK_WRITE(VPIN_BUTTON_1) { // When App button is pushed - switch the state
relay1State = param.asInt();
digitalWrite(RELAY_PIN_1, relay1State);
}

BLYNK_WRITE(VPIN_BUTTON_2) {
relay2State = param.asInt();
digitalWrite(RELAY_PIN_2, relay2State);
}
BLYNK_WRITE(VPIN_BUTTON_3) {
relay3State = param.asInt();
digitalWrite(RELAY_PIN_3, relay3State);
}
BLYNK_WRITE(VPIN_BUTTON_4) {
relay4State = param.asInt();
digitalWrite(RELAY_PIN_4, relay4State);
}

BLYNK_WRITE(VPIN_BUTTON_5) {
relay5State = param.asInt();
digitalWrite(RELAY_PIN_5, relay5State);
}

void checkPhysicalButton()
{
if (digitalRead(PUSH_BUTTON_1) == LOW) {
// pushButton1State is used to avoid sequential toggles
if (pushButton1State != LOW) {

  // Toggle Relay state
  relay1State = !relay1State;
  digitalWrite(RELAY_PIN_1, relay1State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);
}
pushButton1State = LOW;

} else {
pushButton1State = HIGH;
}

if (digitalRead(PUSH_BUTTON_2) == LOW) {
// pushButton2State is used to avoid sequential toggles
if (pushButton2State != LOW) {

  // Toggle Relay state
  relay2State = !relay2State;
  digitalWrite(RELAY_PIN_2, relay2State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_2, relay2State);
}
pushButton2State = LOW;

} else {
pushButton2State = HIGH;
}

if (digitalRead(PUSH_BUTTON_3) == LOW) {
// pushButton3State is used to avoid sequential toggles
if (pushButton3State != LOW) {

  // Toggle Relay state
  relay3State = !relay3State;
  digitalWrite(RELAY_PIN_3, relay3State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_3, relay3State);
}
pushButton3State = LOW;

} else {
pushButton3State = HIGH;
}

if (digitalRead(PUSH_BUTTON_4) == LOW) {
// pushButton4State is used to avoid sequential toggles
if (pushButton4State != LOW) {

  // Toggle Relay state
  relay4State = !relay4State;
  digitalWrite(RELAY_PIN_4, relay4State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_4, relay4State);
}
pushButton4State = LOW;

} else {
pushButton4State = HIGH;
}
if (digitalRead(PUSH_BUTTON_5) == LOW) {
// pushButton4State is used to avoid sequential toggles
if (pushButton5State != LOW) {

  // Toggle Relay state
  relay5State = !relay5State;
  digitalWrite(RELAY_PIN_5, relay5State);

  // Update Button Widget
  Blynk.virtualWrite(VPIN_BUTTON_5, relay5State);
}
pushButton5State = LOW;

} else {
pushButton5State = HIGH;
}
}

void setup()
{

Serial.begin(115200);
Blynk.begin(AUTH, WIFI_SSID, WIFI_PASS,"blynk-cloud.com", 8442);
dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
dimmer.setPower(50);

pinMode(RELAY_PIN_1, OUTPUT);
pinMode(PUSH_BUTTON_1, INPUT_PULLUP);
digitalWrite(RELAY_PIN_1, relay1State);

pinMode(RELAY_PIN_2, OUTPUT);
pinMode(PUSH_BUTTON_2, INPUT_PULLUP);
digitalWrite(RELAY_PIN_2, relay2State);

pinMode(RELAY_PIN_3, OUTPUT);
pinMode(PUSH_BUTTON_3, INPUT_PULLUP);
digitalWrite(RELAY_PIN_3, relay3State);

pinMode(RELAY_PIN_4, OUTPUT);
pinMode(PUSH_BUTTON_4, INPUT_PULLUP);
digitalWrite(RELAY_PIN_4, relay4State);

pinMode(RELAY_PIN_5, OUTPUT);
pinMode(PUSH_BUTTON_5, INPUT_PULLUP);
digitalWrite(RELAY_PIN_5, relay5State);

timer.setInterval(500L, checkPhysicalButton); //Setup a function to be called every 100 ms

}

void loop()
{
Blynk.run();
timer.run();
}

Please don't hijack threads @trkifathi2024. I have split your post out to its own topic.

Hijacking is against the Arduino forum rules. The reason is that it may sidetrack the discussion, even preventing the creator of the topic from getting the assistance they need. It also reduces your own chances of getting assistance.

This is basic forum etiquette, as explained in the "How to get the best out of this forum" guide. It contains a lot of other useful information. Please read it.

Thanks in advance for your cooperation.

Re-format your code when you post it to the forum.

  1. Copy your code.
  2. Open your IDE.
  3. Paste your code in the IDE
  4. Press CTRL-T to format your code.
  5. Press CTRL-A in your IDE to select all your code.
  6. Open your message.
  7. Select your unformatted code in your message.
  8. Press DELETE.
  9. Click the < CODE > button in your message box
  10. Where you see ```type or paste code here```...
  11. Select those words, then...
  12. Press CTRL-V to paste your formatted code.

You should see this:

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <RBDdimmer.h>

BlynkTimer timer;

void checkPhysicalButton();

int relay1State = LOW;
int pushButton1State = HIGH;
int relay2State = LOW;
int pushButton2State = HIGH;
int relay3State = LOW;
int pushButton3State = HIGH;
int relay4State = LOW;
int pushButton4State = HIGH;
int relay5State = LOW;
int pushButton5State = HIGH;

#define AUTH "---------------------------"
#define WIFI_SSID "------"
#define WIFI_PASS "------"
#define SERVER "blynk-cloud.com "
#define PORT 8442

#define RELAY_PIN_1 12
#define RELAY_PIN_2 16
#define RELAY_PIN_3 4
#define RELAY_PIN_4 5
#define RELAY_PIN_5 12

#define PUSH_BUTTON_1 2
#define PUSH_BUTTON_2 14
#define PUSH_BUTTON_3 13
#define PUSH_BUTTON_4 1
#define PUSH_BUTTON_5 2 //for dimmer off
#define PUSH_BUTTON_6 2 //for speed up
#define PUSH_BUTTON_7 2 //for speed up
#define VPIN_BUTTON_1 V1 //relay1
#define VPIN_BUTTON_2 V2 //relay2
#define VPIN_BUTTON_3 V3 //relay3
#define VPIN_BUTTON_4 V4 //relay4
#define VPIN_BUTTON_5 V5 //dimmer on/off

#define outputPin 27 // PWM pin for dimmer
#define zerocross 25 // for boards with CHANGEBLE input pins

dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards

int outVal = 0; // Intialisation value for dimmer
int dim_val; // dimmer value to dim the appliance

BLYNK_CONNECTED() {
  Blynk.syncVirtual(VPIN_BUTTON_1); // Request the latest state from the server
  Blynk.syncVirtual(VPIN_BUTTON_2);
  Blynk.syncVirtual(VPIN_BUTTON_3);
  Blynk.syncVirtual(VPIN_BUTTON_4);
  Blynk.syncVirtual(VPIN_BUTTON_5); //dimmer on of
}

BLYNK_WRITE(V0) { // Set to your virtual pin
  outVal = param.asInt(); // Get State of Virtual Button
  dim_val = map(outVal, 0, 1023, 0, 100); // mapped the value for dimmer
  dimmer.setPower(dim_val); // Set dimmer power
  //Blynk.virtualWrite(V1, dim_val); //sending to Blynk
}

BLYNK_WRITE(VPIN_BUTTON_1) { // When App button is pushed - switch the state
  relay1State = param.asInt();
  digitalWrite(RELAY_PIN_1, relay1State);
}

BLYNK_WRITE(VPIN_BUTTON_2) {
  relay2State = param.asInt();
  digitalWrite(RELAY_PIN_2, relay2State);
}

BLYNK_WRITE(VPIN_BUTTON_3) {
  relay3State = param.asInt();
  digitalWrite(RELAY_PIN_3, relay3State);
}

BLYNK_WRITE(VPIN_BUTTON_4) {
  relay4State = param.asInt();
  digitalWrite(RELAY_PIN_4, relay4State);
}

BLYNK_WRITE(VPIN_BUTTON_5) {
  relay5State = param.asInt();
  digitalWrite(RELAY_PIN_5, relay5State);
}

void checkPhysicalButton() {
  if (digitalRead(PUSH_BUTTON_1) == LOW) {
    // pushButton1State is used to avoid sequential toggles
    if (pushButton1State != LOW) {
      // Toggle Relay state
      relay1State = !relay1State;
      digitalWrite(RELAY_PIN_1, relay1State);
      // Update Button Widget
      Blynk.virtualWrite(VPIN_BUTTON_1, relay1State);
    }
    pushButton1State = LOW;
  } else {
    pushButton1State = HIGH;
  }
  if (digitalRead(PUSH_BUTTON_2) == LOW) {
    // pushButton2State is used to avoid sequential toggles
    if (pushButton2State != LOW) {
      // Toggle Relay state
      relay2State = !relay2State;
      digitalWrite(RELAY_PIN_2, relay2State);
      // Update Button Widget
      Blynk.virtualWrite(VPIN_BUTTON_2, relay2State);
    }
    pushButton2State = LOW;
  } else {
    pushButton2State = HIGH;
  }
  if (digitalRead(PUSH_BUTTON_3) == LOW) {
    // pushButton3State is used to avoid sequential toggles
    if (pushButton3State != LOW) {
      // Toggle Relay state
      relay3State = !relay3State;
      digitalWrite(RELAY_PIN_3, relay3State);
      // Update Button Widget
      Blynk.virtualWrite(VPIN_BUTTON_3, relay3State);
    }
    pushButton3State = LOW;
  } else {
    pushButton3State = HIGH;
  }
  if (digitalRead(PUSH_BUTTON_4) == LOW) {
    // pushButton4State is used to avoid sequential toggles
    if (pushButton4State != LOW) {
      // Toggle Relay state
      relay4State = !relay4State;
      digitalWrite(RELAY_PIN_4, relay4State);
      // Update Button Widget
      Blynk.virtualWrite(VPIN_BUTTON_4, relay4State);
    }
    pushButton4State = LOW;
  } else {
    pushButton4State = HIGH;
  }
  if (digitalRead(PUSH_BUTTON_5) == LOW) {
    // pushButton4State is used to avoid sequential toggles
    if (pushButton5State != LOW) {
      // Toggle Relay state
      relay5State = !relay5State;
      digitalWrite(RELAY_PIN_5, relay5State);
      // Update Button Widget
      Blynk.virtualWrite(VPIN_BUTTON_5, relay5State);
    }
    pushButton5State = LOW;
  } else {
    pushButton5State = HIGH;
  }
}

void setup() {
  Serial.begin(115200);
  Blynk.begin(AUTH, WIFI_SSID, WIFI_PASS, "blynk-cloud.com", 8442);
  dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
  dimmer.setPower(50);
  pinMode(RELAY_PIN_1, OUTPUT);
  pinMode(PUSH_BUTTON_1, INPUT_PULLUP);
  digitalWrite(RELAY_PIN_1, relay1State);
  pinMode(RELAY_PIN_2, OUTPUT);
  pinMode(PUSH_BUTTON_2, INPUT_PULLUP);
  digitalWrite(RELAY_PIN_2, relay2State);
  pinMode(RELAY_PIN_3, OUTPUT);
  pinMode(PUSH_BUTTON_3, INPUT_PULLUP);
  digitalWrite(RELAY_PIN_3, relay3State);
  pinMode(RELAY_PIN_4, OUTPUT);
  pinMode(PUSH_BUTTON_4, INPUT_PULLUP);
  digitalWrite(RELAY_PIN_4, relay4State);
  pinMode(RELAY_PIN_5, OUTPUT);
  pinMode(PUSH_BUTTON_5, INPUT_PULLUP);
  digitalWrite(RELAY_PIN_5, relay5State);
  timer.setInterval(500L, checkPhysicalButton); //Setup a function to be called every 100 ms
}

void loop() {
  Blynk.run();
  timer.run();
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.