Como estou começando agora estou com muita dificuldade de utilizar o ScadaBR com o Arduíno, e com minhas pesquisas não consigo encontrar a solução. Estou tentando fazer um código simples primeiro. Um botão Liga, um botão desliga e dois LEDS. Coloquei para o estado inicial que é o desligado o LED vermelho ficar acesso e o verde ficar apagado, se apertar o botão liga troca quais estão acessos e apagado e ele permanece ligado ate que aperte o desliga. Mas não estou conseguindo fazer isso de forma simples que achei que seria. Os LEDS ficam a todo momento acessos juntos ou não apagam. Vou mostrar como está meu código até agora.
#include <SimpleModbusSlave.h>
#define LED_GREEN 9
#define LED_RED 13
#define botaoLiga 5
#define botaoDesliga 6
enum
{
BOTAOLIGA_VAL,
BOTAODESLIGA_VAL,
LEDR_VAL,
LEDG_VAL,
HOLDING_REGS_SIZE
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
bool ligado = 0;
void botaoDesligaAcionado();
void setup() {
modbus_configure(&Serial, 115200, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);
modbus_update_comms(115200, SERIAL_8N1, 1);
pinMode(botaoLiga,INPUT);
pinMode (LED_GREEN, OUTPUT);
pinMode (LED_RED, OUTPUT);
attachInterrupt (digitalPinToInterrupt(botaoDesliga), botaoDesligaAcionado, RISING);
}
void loop() {
digitalWrite (LED_GREEN, LOW);
digitalWrite (LED_RED, HIGH);
modbus_update();
holdingRegs[LEDR_VAL]= LED_RED;
holdingRegs[LEDG_VAL]= LED_GREEN;
holdingRegs[BOTAOLIGA_VAL] = digitalRead(botaoLiga);
holdingRegs[BOTAODESLIGA_VAL] = digitalRead(botaoDesliga);
if (digitalRead(botaoLiga)==1){
ligado=1;
}
if (holdingRegs[BOTAOLIGA_VAL] == 1){
ligado=1;
}
if(ligado == 1)
{
digitalWrite (LED_GREEN, HIGH);
digitalWrite (LED_RED, LOW);
holdingRegs[LEDG_VAL]= LED_GREEN;
holdingRegs[LEDR_VAL]= LED_RED;
}
}
void botaoDesligaAcionado(){
ligado = 0;
modbus_update();
holdingRegs[BOTAODESLIGA_VAL] = digitalRead(botaoDesliga);
digitalWrite (LED_GREEN, LOW);
digitalWrite (LED_RED, HIGH);
}
Agradeço muito se puderem me ajudar!