Estou com um projeto de automação aqui de casa, e tudo é controlado perfeitamente pela serial, mas gostaria de que ao pressionar um botão (NA) a mesma porta que responde a serial respondesse ao botão, ja tentei alterar varias coisas no codigo, e ambos funcionam bem separados, mas quando coloco junto um não consegue trabalhar com outro.
O codigo é basicamente abaixo, aumentando somente a quantidade de variaveis, o completo segue em anexo.
#define RELAY_PIN1 22
//Botões
#define BOTAO_PIN1 40
int triac = 0;
int BOTAOPIN1;
void setup()
{
//Declaração pinos saida reles
pinMode(RELAY_PIN1, OUTPUT);
////Declaração pinos entrada botoes
pinMode(BOTAO_PIN1, INPUT);
Serial.begin(9600); // open serial
Serial.println(" Digite um dos valores ");
}
void loop()
{
static int relayVal1 = 0;
var=digitalRead(BOTAO_PIN1); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if (var == HIGH) {
relayVal1 ^= 1;
Serial.println('a');
delay(20); // de-bouncing
}
int cmd;
Serial.println(triac);
while (Serial.available() > 0)
{
cmd = Serial.read();
switch (cmd)
{
case 'a':
{
relayVal1 ^= 1; // xor current value with 1 (causes value to toggle)
if (relayVal1)
Serial.println("Relay1 on");
else
Serial.println("Relay1 off");
break;
}
}
if (relayVal1)
digitalWrite(RELAY_PIN1, HIGH);
else
digitalWrite(RELAY_PIN1, LOW);
}
}