Bonjour,
Je débute + avec l'Arduino et je ne comprends pas comment utiliser l'appel à une routine sans bloquer mon programme principal.
Pour être plus clair, mon arduino communique avec mon ordi via le port COM.
Sur le port COM je récupère une phrase (NMEA pour ceux qui connaisse) que je décompose pour avoir mon info qui se nomme LED (1 pour allumé et 0 pour éteint), pour éteindre ou allumer une led.
Quand je reçois l'info LED à 1, je dois faire clignoter une LED sur la broche 3 en permanence jusqu'à ce que je recois l'info LEd à 0 sur le port COM.
Pour cela, j'ai fait un bout de code que voici partiellement dans Void Loop:
Et ensuite j'ai crée une fonction qui fait clignoter la sortie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 if (Serial.available()) { // Si des donnees sont disponibles received = Serial.readString(); ........... if(String(nomtrame) == String ("SOS")) { String etat; etat=(valtrame.substring(0,1)); Serial.println("L'etat demandé est : " + etat); if(String(etat) == "1") { SOS(etat); Serial.println("Le SOS est lancé " ); } if(String(etat) == "0") { analogWrite(ledredPin1,0); // Enfin on change l'etat de la LED ROUGE } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 void SOS(String etat){ do { for (int i=0; i <= 2; i++){ analogWrite(ledredPin1,255); // Enfin on change l'etat de la LED ROUGE delay(400); analogWrite(ledredPin1,0); // Enfin on change l'etat de la LED ROUGE delay(400); } delay(600); for (int j=0; j <= 2; j++){ analogWrite(ledredPin1,255); // Enfin on change l'etat de la LED ROUGE delay(1500); analogWrite(ledredPin1,0); // Enfin on change l'etat de la LED ROUGE delay(1500); } delay(1); delay(2000); } while (etat=="1"); }
Est ce que vous pourriez m'orienter vers une solution ?
Merci
Partager