Thread ou comment faire tourner une routine en même temps que le programme principal
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:
Code:
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
}
} |
Et ensuite j'ai crée une fonction qui fait clignoter la sortie:
Code:
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