Bonjour a tous,
Je suis entrain de programmer un écran Nextion 2.4 sans passer par une bibliothèque, c'est une connexion série TX RX avec arduino mega.
Le but est de gérer un système d'air conditionner.
petite explication :
Avec un Serial Event je lis les données reçu dans une chaîne uint8_t ensuite,
avec les premier if, je contrôle quel bouton a été cliqué puis j'attribue vrai ou faux a une variable boolean.(sorte de drapeaux).
avec les 2ème if je test cette variable, si vrai ou faux, j’exécute le code voulue.
Je poste le bout du code avec le bouton allumage et extinction du système.
Mon Problème :
si dans le 2ème if je ne met pas de code, l'arduino reçois de suite chaque bouton clique, des que je rajoute du code ça galère, le serial ne reçois pas toutes les données cliquer, sur l’écran l'animation du clique fonctionne, un sorte de délai pas possible.
Je demande votre aide, pour résoudre mon problème, aussi d'apprendre a améliorer mon code.
Code:int power_btn_read[7]; int FanPosition; uint8_t temp[8] = {0}, dataReceive_nextion[7] = {0}; boolean PowerStatus ; void setup() { Serial.begin(9600); Serial1.begin(9600); memset(temp, 0, sizeof(temp)); // reset array } void loop() { /*- - - Check which button is pressed - - -*/ // ON OFF Button if((dataReceive_nextion[0] == 101 && dataReceive_nextion[1] == 0 && dataReceive_nextion[2] == 15 && dataReceive_nextion[3] == 0)) { Serial.println("You press the POWER button"); memset(dataReceive_nextion, 0, sizeof(dataReceive_nextion)); // reset array Serial1.print("get power_btn1.val"); Serial1.write(0xff); Serial1.write(0xff); Serial1.write(0xff); memset(temp, 0, sizeof(temp)); // reset array Serial1.readBytes(temp, 8); if(temp[0] == 113 && temp[1] == 0){PowerStatus = false;} else if(temp[0] == 113 && temp[1] == 1){PowerStatus = true;} } if(PowerStatus == true) { //Serial.println("The System is ON"); Serial1.print("power_btn1.val="); Serial1.print(1); Serial1.write(0xff); Serial1.write(0xff); Serial1.write(0xff); } else { //Serial.println("The System is OFF"); Serial1.print("power_btn1.val="); Serial1.print(0); Serial1.write(0xff); Serial1.write(0xff); Serial1.write(0xff); } void serialEvent1() { int inChar; while (Serial1.available()) { // get the new byte: Serial1.readBytes(dataReceive_nextion, 7); } }
-----