Olá, primeiramente peço desculpas se houver equívoco na postagem
Sou iniciante em arduino e estou fazendo um projeto de automação residencial.
Desejo fazer o arduino acender lampadas através do sensor de som e também através de software de inteligência artificial "jarvis".
Não consigo juntar os dois códigos, já li que devo agrupar as "funções" em um só código como por exemplo
Void Setup do código 1
bababa
Void Setup do código 2
bebebe
Fusão dos dois ficaria
Void Setup
bababa
bebebe
Porém ao tentar fazer isso estou recebendo erros de declaração em escopo.
Segue código 1:
#define Rele1 2// Define o pino de saida para o rele 1
#define Rele2 3
#define Rele3 4
int st1 = 0;// Indica o estado comum da porta.
int st2 = 0;
int st3 = 0;
void setup() {
Serial.begin(9600) ; //Define a taxa de transmissão dos dados.
pinMode(Rele1, OUTPUT) ; //Defie o pino como saida
pinMode(Rele2, OUTPUT) ;
pinMode(Rele3, OUTPUT) ;
}
void loop() {
char c = Serial.read();// Analiza os dados recebidos
if (c == 'a') {
if (st1 == 0) {
digitalWrite (Rele1, HIGH) ;
st1 = 1;
Serial.print (" O rele da sala esta Ligado ");
}else{
digitalWrite(Rele1, LOW);
st1 = 0;
Serial.print (" O rele da sala esta Desligado ");
delay(5000);
}
if (c == 'b') {
if (st2 == 0) {
digitalWrite (Rele2, HIGH) ;
st2 = 1;
Serial.print (" O rele da Varanda esta Ligado ");
}else{
digitalWrite(Rele2, LOW);
st2 = 0;
Serial.print (" O rele da Varanda esta Desligado ");
delay(5000);
}
if (c == 'c') {
if (st3 == 0) {
digitalWrite (Rele3, HIGH) ;
st3 = 1;
Serial.print (" O rele do Quarto esta Ligado ");
}else{
digitalWrite(Rele3, LOW);
st3 = 0;
Serial.print (" O rele do Quarto esta Desligado ");
delay(5000);
}
}
}
}
}
Código 2;
#define pinSom 7
#define pinRele1 2
#define pinRele2 3
#define pinRele3 4
#define pinRele4 5
#define tempoMaximoDeUmaPalma 150 //milisegundos
#define tempoMaximoEntrePalmas 500 //milisegundos
int contaPalmas = 0;
long tempoEspera = 0;
long tempoEsperaEntrePalmas = 0;
void executarAcao();
void setup() {
pinMode(pinSom, INPUT);
pinMode(pinRele1, OUTPUT);
pinMode(pinRele2, OUTPUT);
pinMode(pinRele3, OUTPUT);
}
void loop() {
//verifica o estado do sensor de som (ele fica normalmente com a porta ligada. Quando ouver uma palma, ele desliga momentaneamente a porta)
int sensorSom = digitalRead(pinSom);
//se o sensor detectou palmas
if (sensorSom == LOW) {
//espera um tempo para nao detectar a mesma palma mais de uma vez
if (tempoEspera == 0) {
tempoEspera = tempoEsperaEntrePalmas = millis();
contaPalmas++;
} else if ((millis() - tempoEspera) >= tempoMaximoDeUmaPalma) {
tempoEspera = 0;
}
}
//caso exceda o tempo maximo entre palmas, zera o contador de palmas
if ( (contaPalmas != 0) && ((millis() - tempoEsperaEntrePalmas) > 500) ) {
executarAcao();
contaPalmas = 0;
tempoEsperaEntrePalmas = millis();
}
}
void executarAcao()
{
switch (contaPalmas) {
case 1:
digitalWrite(pinRele1, !digitalRead(pinRele1));
break;
case 2:
digitalWrite(pinRele2, !digitalRead(pinRele2));
break;
case 3:
digitalWrite(pinRele3, !digitalRead(pinRele3));
break;
}
}
Como faço para juntar os dois?
Desde já agradeço, sou iniciante e não entendo nada de programação.