Je suis élève en terminale STI2D et j'ai en projet de créer une application grâce à appinventor afin de communiquer avec un arduino.
Mon rôle est d'envoyer un message (bit, texte) à l'arduino et l'arduino doit me répondre lorsqu'il a bien reçu le message, il doit m'envoyer quelque chose afin d'allumer un bouton sur l'application, un système d'accusé de réception.
La partie arduino fonctionne très bien.
Le soucis est que je ne sais pas quoi mettre comme code dans app inventor pour l'accusé de réception.
votre application appInventor doit écouter le port série après avoir envoyé quelque chose et attendre un marqueur de bonne réception et au bout d'un certain temps abandonner et considérer que l'envoi a échoué.
Sur Arduino on ferait
bool attendreReponse(unsigned long dureeAttenteMax)
{
const char marqueurReponseOK = 'K'; // on attend le symbole ASCII 'K' pour dire OK
unsigned long tempsDepart = millis();
bool reponseRecue = false;
while (millis() - tempsDepart <= dureeAttenteMax) {
if (Serial.read() == marqueurReponseOK) { // Serial.read() retourne -1 s'il n'y a rien à lire
reponseRecue = true;
break; // on sort du while
}
}
return reponseRecue;
}
je n'utilise pas appInventor mais il y a une notion d'horloge système qui marche comme millis() sur arduino, donc à utiliser sans doute un peu de manière similaire