bonjour a tous
je programme un arduino pour faire du code morse mon problème est que lorsque la séquence est initier il n'y a pas moyen de L’arrêter. Le arduino bloque les commande envoyer via série jusqu’à ce que la séquence est terminer la il exécute toute les fonction que je lui ai demander lors de la séquence initier
il y a t-il un moyen de faire arrêter un void qui est en cours ? mettre la pin reset au GND fonctionne très bien mais il faut que ce sois en soft et non en hardware car la boite de code morse est loin et lorsque je met la pin reset sur une pin I/O je revient au même problème il reset oui ça ça marche mais après que la séquence initier est terminer
merci
Danny
Hors ligne
Bonjour,
Pour réaliser ce que tu souhaites, il faut utiliser les interruptions.
Il faut dans un premier mettre un pin de l'arduino permettant les interruptions externes en entrée et activer les résistances Pull-up :
pinMode(2, INPUT_PULLUP);
C'est sur ce pin que tu mettras un interrupteur reliant ce pin au GND.
Ensuite il faut définir quelle méthode sera appelée lors de l'interruption :
attachInterrupt(0, inter, FALLING);
voir :
http://www.arduino.cc/en/Reference/AttachInterrupt
Dans ta méthode inter, il faut changer d'état une variable globale booléenne
Ensuite dans ta boucle pour envoyer tes messages en morse, il faut vérifier avant chaque envoi d'octet si la variable état le permet.
Bon courage.
Hors ligne
A ok ca cest clair
mais je ne veux pas de switch par contre il faut que en mode soft je puisse arreter le arduino
ex si je recois interup du port serie il faut que le arduino arrete
Hors ligne
J'y connais pas grand chose en arduino mais http://forum.arduino.cc/index.php?topic=60668.0
Après tu peux bricoler:
- Découper la séquence morse que tu envoies, le faire par bloc de taille/temps fixe,
- Lire le port serie entre chaque bloc et agir en fonction
- Lire le port serie entre chaque bloc et emettre une interuption pour passer par la routine d'interruption et que le code reprenne sa course après si c'est ce que tu souhaites faire
Hors ligne
Oui cest bon merci pour lidee je vais pouvoir jongler en ce sens
merci
a+
Hors ligne
Tu peux utiliser l'interruption liée au port série. IL existe pour Arduino la méthode prédéfinie serialEvent(). Va regarder ici pour te donner une idée :
http://www.arduino.cc/en/Tutorial/SerialEvent
Ensuite si tu n'as cure des données, tu peux agir comme je te l'avais proposer dans ma première réponse.
Dernière modification par Mushussu (2015-06-20 10:14:41)
Hors ligne
oui justement je m’étais dis que s’était peut être ça mon problème car la tous ce passe dans la loop() le serialRead l’appelle de mon void morse quoi faire avec les mot reçu dans le serialRead je n'utilise pas serialEvent()
j'en étais venu a la conclusion que a cause que tous ce passe dans le loop quand le arduino lance le morse le loop lui continue aussi et ça load le arduino qui n’est plus capable d'exécuter autre chose car il serait saturer est-ce une possibilité ?
merci
Danny
Hors ligne