Boa tarde sou novo no fórum, queria ajuda de vcs para um problema que estou tento.
meu projeto é conectar o Arduino Mega 2560 ao ScadaBr, até ai esta tudo certo consigo a comunicação normalmente, tudo funcionando.
O problema é que tenho que criar dois botões, estes dois botões irão acender o mesmo led, mas quando eu clico no botão 1 o led ficará acesso por 10 segundos e 10 segundos apagados, quando eu clico no botão 2, o mesmo led irá ficar aceso 30 segundos e apagado 10 segundos.
A configuração no ScadaBr esta normal, sei criar os botões as tags sem problema,
O código que estou usando vou passar para vcs darem uma olhada e se puderem me ajudar eu vou ficar muito grado.
O código que eu me baseei para fazer o meu é deste site: https://forum.arduino.cc/index.php?topic=288157.0
O autor do código original é o Sr LuisSilva.
No caso quando clico no botão que esta no ScadaBr, ele acende o led mas não respeita o tempo estipulado.
#include <SimpleModbusSlave.h>
const long INTERVAL_ON = 1000;
const long INTERVAL_OFF = 3000;
const int LED = 13;
int LEDSTATE;
long previousMillis;
long interval;
enum
{
ESTADO_LED,
HOLDING_REGS_SIZE
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
void setup()
{
modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);
modbus_update_comms(9600, SERIAL_8N1, 1);
pinMode(LED, OUTPUT);
LEDSTATE = LOW;
previousMillis = 0;
interval = INTERVAL_OFF;
}
void loop()
{
unsigned long currentMillis = millis();
modbus_update();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (digitalRead (holdingRegs[ESTADO_LED] == HIGH)) {
holdingRegs[ESTADO_LED] = HIGH;
interval = INTERVAL_ON;
}
else {
holdingRegs[ESTADO_LED] = LOW;
interval = INTERVAL_ON;
}
digitalWrite(LED,holdingRegs[ESTADO_LED]);
}
}