Bom dia
Possuo uma aplicação que necessito de um efeito fade (piscar a cada ms) para alguns leds, a ideia é variar o pwm via tela do elipse E3, segui esse tutorial (https://kb.elipse.com.br/comunicando-o-arduino-com-elipse-e3-eou-elipse-scada/), a comunicação funcionou, utilizei o código 5369 que está em anexo ao link, mas apenas para a DO09 e DO11, que é o que eu preciso, uma saída pwm apenas utilizei esse código:
#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
modbusDevice regBank;
modbusSlave slave;
byte bomba = 9;
int led = 11; // the PWM pin the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
void setup()
{
//Set Slave ID
regBank.setId(1);
//Add Digital Output registers
regBank.add(9);
regBank.add(11);
//Analog Output registers
regBank.add(40011);
slave._device = ®Bank;
//Set BaudRate
slave.setBaud(9600);
//Configure pins
pinMode(bomba,OUTPUT);
pinMode(led,OUTPUT);
}
void loop(){
while(1){
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
bomba = regBank.get(9);
if (bomba <= 0 && digitalRead(9) == HIGH)digitalWrite(9,LOW);
if (bomba >= 1 && digitalRead(9) == LOW)digitalWrite(9,HIGH);
brightness = regBank.get(40011);
analogWrite(led,brightness);
delay(1);
slave.run();
}
}
A comunicação funciona perfeitamente, mas quando seto algum valor de PWM via elipse, esse valor setado não é aceito no valor da variável brightness para o cálculo do fade e os leds ou ficam desligados ou ligados, ou seja, não faz o fade, apenas liga/desliga ao mudar de valor no elipse, agora se eu comento a parte do registrador 40011 e deixo valores fixos e testo manualmente via ide do arduino, o efeito fade ocorre com qualquer valor.
Reparei que o regBank.get(40011) se trata de uma word e no cálculo do fade tenho variáveis int, tentei realizar a conversão de word para int e ainda sim persiste isso de não ter o efeito fade, como consigo contornar esse porém e o valor que eu inserir no elipse realize o efeito fade na lógica fade?