Página 1 de 1

comando de grupo , alloff e allon

Enviado: 07/Dez/2018, 21:02
por marcelllo
boa tarde , estou tendo dificuldades de criar esses dois botões de allon e alloff com pino virtual do blynk para meu projeto, alguém pode me ajudar vou passar o código, é uma automação criei juntando varios códigos contendo 1 rele serial com 4 acionamentos e mais 13 reles sendo 1 portão eletrônico e gostaria que me ajudassem a criar esse comando de grupo para apagar e acender todas as lâmpadas, o código segue em anexo, obrigado

Código: Selecionar todos


#include <SPI.h>

#include <Ethernet.h>

#include <BlynkSimpleEthernet.h>

#define W5100_CS  10

#define SDCARD_CS 4


// You should get Auth Token in the Blynk App.

// Go to the Project Settings (nut icon).

char auth[] = "3333333333333333333333333333333";


const int ledPin = 23;
const int btnPin = 22;
const int ledPin1 = 25;
const int btnPin1 = 24;
const int ledPin2 = 27;
const int btnPin2 = 26;
const int ledPin3 = 29;
const int btnPin3 = 28;
const int ledPin4 = 31;
const int btnPin4 = 30;
const int ledPin5 = 33;
const int btnPin5 = 32;
const int ledPin6 = 35;
const int btnPin6 = 34;
const int ledPin7 = 37;
const int btnPin7 = 36;
const int ledPin8 = 39;
const int btnPin8 = 38;
const int ledPin9 = 41;
const int btnPin9 = 40;
const int ledPin10 = 43;
const int btnPin10 = 42;
const int ledPin11 = 45;
const int btnPin11 = 44;
const int ledPin12 = 47;
const int btnPin12 = 46;
int ledState = LOW;
int btnState = HIGH;
int ledState1 = LOW;
int btnState1 = HIGH;
int ledState2 = LOW;
int btnState2 = HIGH;
int ledState3 = LOW;
int btnState3 = HIGH;
int ledState4 = LOW;
int btnState4 = HIGH;
int ledState5 = LOW;
int btnState5 = HIGH;
int ledState6 = LOW;
int btnState6 = HIGH;
int ledState7 = LOW;
int btnState7 = HIGH;
int ledState8 = LOW;
int btnState8 = HIGH;
int ledState9 = LOW;
int btnState9 = HIGH;
int ledState10 = LOW;
int btnState10 = HIGH;
int ledState11 = LOW;
int btnState11 = HIGH;
int ledState12 = LOW;
int btnState12 = HIGH;
BLYNK_CONNECTED() {

  Blynk.syncVirtual(V7);
  Blynk.syncVirtual(V8);
  Blynk.syncVirtual(V9);
  Blynk.syncVirtual(V10);
  Blynk.syncVirtual(V11);
  Blynk.syncVirtual(V12);
  Blynk.syncVirtual(V13);
  Blynk.syncVirtual(V14);
  Blynk.syncVirtual(V15);
  Blynk.syncVirtual(V16);
  Blynk.syncVirtual(V17);
  Blynk.syncVirtual(V18);
  Blynk.syncVirtual(V19);

}


BLYNK_WRITE(V7) {
  ledState = param.asInt();
  digitalWrite(ledPin, ledState);
}
BLYNK_WRITE(V8) {
  ledState1 = param.asInt();
  digitalWrite(ledPin1, ledState1);
}
BLYNK_WRITE(V9) {
  ledState2 = param.asInt();
  digitalWrite(ledPin2, ledState2);
}
BLYNK_WRITE(V10) {
  ledState3 = param.asInt();
  digitalWrite(ledPin3, ledState3);
}
BLYNK_WRITE(V11) {
  ledState4 = param.asInt();
  digitalWrite(ledPin4, ledState4);
}
BLYNK_WRITE(V12) {
  ledState5 = param.asInt();
  digitalWrite(ledPin5, ledState5);
}
BLYNK_WRITE(V13) {
  ledState6 = param.asInt();
  digitalWrite(ledPin6, ledState6);
}
BLYNK_WRITE(V14) {
  ledState7 = param.asInt();
  digitalWrite(ledPin7, ledState7);
}
BLYNK_WRITE(V15) {
  ledState8 = param.asInt();
  digitalWrite(ledPin8, ledState8);
}
BLYNK_WRITE(V16) {
  ledState9 = param.asInt();
  digitalWrite(ledPin9, ledState9);
}
BLYNK_WRITE(V17) {
  ledState10 = param.asInt();
  digitalWrite(ledPin10, ledState10);
}
BLYNK_WRITE(V18) {
  ledState11 = param.asInt();
  digitalWrite(ledPin11, ledState11);
}
BLYNK_WRITE(V19) {
  ledState12 = param.asInt();
  digitalWrite(ledPin12, ledState12);
}
BlynkTimer timer;
void checkPhysicalButton()
{
  if (digitalRead(btnPin) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState != LOW) {

      // Toggle LED state
      ledState = !ledState;
      digitalWrite(ledPin, ledState);

      // Update Button Widget
      Blynk.virtualWrite(V7, ledState);
    }
    btnState = LOW;
  } else {
    btnState = HIGH;
  }
  if (digitalRead(btnPin1) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState1 != LOW) {

      // Toggle LED state
      ledState1 = !ledState1;
      digitalWrite(ledPin1, ledState1);

      // Update Button Widget
      Blynk.virtualWrite(V8, ledState1);
    }
    btnState1 = LOW;
  } else {
    btnState1 = HIGH;
  }
  if (digitalRead(btnPin2) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState2 != LOW) {

      // Toggle LED state
      ledState2 = !ledState2;
      digitalWrite(ledPin2, ledState2);

      // Update Button Widget
      Blynk.virtualWrite(V9, ledState2);
    }
    btnState2 = LOW;
  } else {
    btnState2 = HIGH;
  }
  if (digitalRead(btnPin3) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState3 != LOW) {

      // Toggle LED state
      ledState3 = !ledState3;
      digitalWrite(ledPin3, ledState3);

      // Update Button Widget
      Blynk.virtualWrite(V10, ledState3);
    }
    btnState3 = LOW;
  } else {
    btnState3 = HIGH;
  }
  if (digitalRead(btnPin4) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState4 != LOW) {

      // Toggle LED state
      ledState4 = !ledState4;
      digitalWrite(ledPin4, ledState4);

      // Update Button Widget
      Blynk.virtualWrite(V11, ledState4);
    }
    btnState4 = LOW;
  } else {
    btnState4 = HIGH;
  }
  if (digitalRead(btnPin5) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState5 != LOW) {

      // Toggle LED state
      ledState5 = !ledState5;
      digitalWrite(ledPin5, ledState5);

      // Update Button Widget
      Blynk.virtualWrite(V12, ledState5);
    }
    btnState5 = LOW;
  } else {
    btnState5 = HIGH;
  }
  if (digitalRead(btnPin6) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState6 != LOW) {

      // Toggle LED state
      ledState6 = !ledState6;
      digitalWrite(ledPin6, ledState6);

      // Update Button Widget
      Blynk.virtualWrite(V13, ledState6);
    }
    btnState6 = LOW;
  } else {
    btnState6 = HIGH;
  }
  if (digitalRead(btnPin7) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState7 != LOW) {

      // Toggle LED state
      ledState7 = !ledState7;
      digitalWrite(ledPin7, ledState7);

      // Update Button Widget
      Blynk.virtualWrite(V14, ledState7);
    }
    btnState7 = LOW;
  } else {
    btnState7 = HIGH;
  }
  if (digitalRead(btnPin8) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState8 != LOW) {

      // Toggle LED state
      ledState8 = !ledState8;
      digitalWrite(ledPin8, ledState8);

      // Update Button Widget
      Blynk.virtualWrite(V15, ledState8);
    }
    btnState8 = LOW;
  } else {
    btnState8 = HIGH;
  }
  if (digitalRead(btnPin9) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState9 != LOW) {

      // Toggle LED state
      ledState9 = !ledState9;
      digitalWrite(ledPin9, ledState9);

      // Update Button Widget
      Blynk.virtualWrite(V16, ledState9);
    }
    btnState9 = LOW;
  } else {
    btnState9 = HIGH;
  }
  if (digitalRead(btnPin10) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState10 != LOW) {

      // Toggle LED state
      ledState10 = !ledState10;
      digitalWrite(ledPin10, ledState10);

      // Update Button Widget
      Blynk.virtualWrite(V17, ledState10);
    }
    btnState10 = LOW;
  } else {
    btnState10 = HIGH;
  }
  if (digitalRead(btnPin11) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState11 != LOW) {

      // Toggle LED state
      ledState11 = !ledState11;
      digitalWrite(ledPin11, ledState11);

      // Update Button Widget
      Blynk.virtualWrite(V18, ledState11);
    }
    btnState11 = LOW;
  } else {
    btnState11 = HIGH;
  }
  if (digitalRead(btnPin12) == LOW) {
    // btnState is used to avoid sequential toggles
    if (btnState12 != LOW) {

      // Toggle LED state
      ledState12 = !ledState12;
      digitalWrite(ledPin12, ledState12);

      // Update Button Widget
      Blynk.virtualWrite(V19, ledState12);
    }
    btnState12 = LOW;
  } else {
    btnState12 = HIGH;
  }
}

BlynkTimer timerDHT11; // Criação do Timer do DHT22

BlynkTimer timerLDR; // Criação do Timer do LDR



void lerSensorDHT11() // Função para ler os parâmetros do DHT22

{

  float temperatura = dht.readTemperature(); // Comando da biblioteca que lê a temperatura adquirida pelo DHT22

  float umidade = dht.readHumidity(); // Comando da biblioteca que lê a umidade adquirida pelo DHT22



  if (isnan(temperatura) || isnan(umidade)) { // isnan = IS Not A Number <= verifica se o valor lido não é um número

    return;

  }

  Blynk.virtualWrite(V4, temperatura); // Escreve no pino virtual V4 do Blynk o valor da temperatura lido pelo DHT22

  Blynk.virtualWrite(V5, umidade); // Escreve no pino virtual V5 do Blynk o valor de umidade lido pelo DHT22

}



void lerLDR() { // Função para ler o parâmetro do LDR

  int valorLDR = analogRead(A0);

  valorLDR = map(valorLDR, 0, 1023, 0, 100); // Função que mapeia os valores lidos de 0 à 1023 em 0 à 100

  Blynk.virtualWrite(V6, valorLDR); // Escreve no pino virtual V6 do Blynk o valor de luminosidade lido pelo LDR

}



BLYNK_WRITE(V0) {

  int pinValue = param.asInt();

  //Serial.println(pinValue);

  if (pinValue == 1) {

    relays.SetRelay(1, SERIAL_RELAY_ON, 1);   // Liga o relé 01

  } else {

    relays.SetRelay(1, SERIAL_RELAY_OFF, 1);  // Desliga o relé 01

  }

}



BLYNK_WRITE(V1) {

  int pinValue = param.asInt();

  //Serial.println(pinValue);

  if (pinValue == 1) {

    relays.SetRelay(2, SERIAL_RELAY_ON, 1);   // Liga o relé 02

  } else {

    relays.SetRelay(2, SERIAL_RELAY_OFF, 1);  // Desliga o relé 02

  }

}



BLYNK_WRITE(V2) {

  int pinValue = param.asInt();

  //Serial.println(pinValue);

  if (pinValue == 1) {

    relays.SetRelay(3, SERIAL_RELAY_ON, 1);   // Liga o relé 03

  } else {

    relays.SetRelay(3, SERIAL_RELAY_OFF, 1);  // Desliga o relé 03

  }

}



BLYNK_WRITE(V3) {

  int pinValue = param.asInt();

  //Serial.println(pinValue);

  if (pinValue == 1) {

    relays.SetRelay(4, SERIAL_RELAY_ON, 1);   // Liga o relé 04

  } else {

    relays.SetRelay(4, SERIAL_RELAY_OFF, 1);  // Desliga o relé 04

  }

}



void setup()


{

  Serial.begin(9600);

  dht.begin(); // Inicializa o DHT22

  Blynk.begin(auth);



  timerDHT11.setInterval(2000L, lerSensorDHT11); // Define o intervalo de tempo da leitura do DHT22 para 2000 milisegundos

  timerLDR.setInterval(100L, lerLDR); // Define o intervalo de tempo da leitura do LDR para 100 milisegundos

  // Debug console
  Serial.begin(9600);

  pinMode(SDCARD_CS, OUTPUT);
  digitalWrite(SDCARD_CS, HIGH);

  Blynk.begin(auth);


  pinMode(ledPin, OUTPUT);
  pinMode(btnPin, INPUT_PULLUP);
  digitalWrite(ledPin, ledState);
  pinMode(ledPin1, OUTPUT);
  pinMode(btnPin1, INPUT_PULLUP);
  digitalWrite(ledPin1, ledState1);
  pinMode(ledPin2, OUTPUT);
  pinMode(btnPin2, INPUT_PULLUP);
  digitalWrite(ledPin2, ledState2);
  pinMode(ledPin3, OUTPUT);
  pinMode(btnPin3, INPUT_PULLUP);
  digitalWrite(ledPin3, ledState3);
  pinMode(ledPin4, OUTPUT);
  pinMode(btnPin4, INPUT_PULLUP);
  digitalWrite(ledPin4, ledState4);
  pinMode(ledPin5, OUTPUT);
  pinMode(btnPin5, INPUT_PULLUP);
  digitalWrite(ledPin5, ledState5);
  pinMode(ledPin6, OUTPUT);
  pinMode(btnPin6, INPUT_PULLUP);
  digitalWrite(ledPin6, ledState6);
  pinMode(ledPin7, OUTPUT);
  pinMode(btnPin7, INPUT_PULLUP);
  digitalWrite(ledPin7, ledState7);
  pinMode(ledPin8, OUTPUT);
  pinMode(btnPin8, INPUT_PULLUP);
  digitalWrite(ledPin8, ledState8);
  pinMode(ledPin9, OUTPUT);
  pinMode(btnPin9, INPUT_PULLUP);
  digitalWrite(ledPin9, ledState9);
  pinMode(ledPin10, OUTPUT);
  pinMode(btnPin10, INPUT_PULLUP);
  digitalWrite(ledPin10, ledState10);
  pinMode(ledPin11, OUTPUT);
  pinMode(btnPin11, INPUT_PULLUP);
  digitalWrite(ledPin11, ledState11);
  pinMode(ledPin12, OUTPUT);
  pinMode(btnPin12, INPUT_PULLUP);
  digitalWrite(ledPin12, ledState12);
  timer.setInterval(300L, checkPhysicalButton);

}
void loop()

{

  Blynk.run();

  timerDHT11.run(); // Inicializa o Timer do DHT22

  timerLDR.run(); // Inicializa o Timer do LDR

  timer.run(); // Inicializa o Timer da Iluminação
}

Re: comando de grupo , alloff e allon

Enviado: 17/Dez/2018, 12:34
por JAiminhoConnor
Pelo o que eu entendi, basta vc colocar pra monitorar uma das variaveis virtuais tipo V1
Quando esta estiver alto vc seta os pinos dos reles das lampadas em alto tbm e quando quiser desligar vc seta em 0

Espero ter ajudado

Re: comando de grupo , alloff e allon

Enviado: 17/Dez/2018, 22:18
por marcelllo
bem ai que esta minha duvida como que faço isso, usar 2 pinos virtuais no blynk para all/off e all/on, com botão eu ja consegui mas com e blynk não