Hi everyone.
He's been fighting the topic since morning. Maybe I will get help.
I use Arduino Nano + Nextion to control 4 relays. Everything works correctly. I would like the inclusion of one to disable the previous one. In order not to happen, two relays are turned on at the same time.
Here is my code:
#include "Nextion.h"
#include "NexDualStateButton.h"
int R1 = 2, R2 = 3, R3 = 4, R4 = 5;
NexDSButton bt0 = NexDSButton(0, 1, "bt0");
NexDSButton bt1 = NexDSButton(0, 2, "bt1");
NexDSButton bt2 = NexDSButton(0, 3, "bt2");
NexDSButton bt3 = NexDSButton(0, 4, "bt3");
char buffer[100] = {0};
NexTouch *nex_listen_list[] =
{
&bt0, &bt1, &bt2, &bt3,
NULL
};
void setup(void)
{
nexInit();
bt0.attachPop(bt0PopCallback, &bt0);
bt1.attachPop(bt0PopCallback, &bt1);
bt2.attachPop(bt0PopCallback, &bt2);
bt3.attachPop(bt0PopCallback, &bt3);
dbSerialPrintln("setup done");
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
digitalWrite(R1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(R3, HIGH);
digitalWrite(R4, HIGH);
}
void loop(void)
{
nexLoop(nex_listen_list);
}
void bt0PopCallback(void *ptr)
{
uint32_t dual_state;
NexDSButton *btn = (NexDSButton *)ptr;
dbSerialPrintln("Callback");
dbSerialPrint("ptr=");
dbSerialPrintln((uint32_t)ptr);
memset(buffer, 0, sizeof(buffer));
{ bt0.getValue(&dual_state);
if(dual_state){digitalWrite(R1, HIGH);}else{digitalWrite(R1, LOW);}
}
{ bt1.getValue(&dual_state);
if(dual_state){digitalWrite(R2, HIGH);}else{digitalWrite(R2, LOW);}
}
{ bt2.getValue(&dual_state);
if(dual_state){digitalWrite(R3, HIGH);}else{digitalWrite(R3, LOW);}
}
{ bt3.getValue(&dual_state);
if(dual_state){digitalWrite(R4, HIGH);}else{digitalWrite(R4, LOW);}
}
}