Offline
Full Member
Karma: 0
Posts: 142
|
 |
« on: December 06, 2012, 06:07:01 am » |
Bonjour tout le monde, Je viens avec une question qui me turlupine un peu depuis quelques jours : Je commande l'Arduino depuis un sketch en Python, en fait j'envoie un Char sur le port USB et suivant ce char l'arduino exécute telle ou telle action : void setup() { Serial.begin(9600); pinMode(8, OUTPUT); pinMode(12, OUTPUT); }
void loop() { if (Serial.available()) {
char ch = Serial.read(); if (ch == 'a') digitalWrite(8, HIGH); else if (ch == 'A') digitalWrite(8, LOW); else if (ch == 'b') digitalWrite(12, HIGH); else if (ch == 'B') digitalWrite(12, LOW); } delay(1000); // petite tempo }
Je sais que les interruption sont sur la Pin 2 (int 0) ou la Pin 3 (int 1). Et ce que je voudrais savoir c'est si l'Arduino tourne en boucle ou si il "démarre" que lors de la réception du caractère ... Désolé si la question semble évidente, Bonne journée, Trigger
|
|
|
|
« Last Edit: December 06, 2012, 06:10:19 am by trigger »
|
Logged
|
|
|
|
|
france
Offline
Sr. Member
Karma: 4
Posts: 272
|
 |
« Reply #1 on: December 06, 2012, 06:23:52 am » |
Il va exécuter la boucle "void loop()" mais seulement l'instruction delay(1000) en attendant.
|
|
|
|
|
Logged
|
Christian
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 142
|
 |
« Reply #2 on: December 06, 2012, 06:29:33 am » |
Merci de la réponse donc si j'ai bien compris si je supprime le delay l'arduino ne ferra absolument rien tant qu'aucun char en passe sur le port série ?
|
|
|
|
|
Logged
|
|
|
|
|
perpignan, france
Offline
Full Member
Karma: 0
Posts: 209
|
 |
« Reply #3 on: December 06, 2012, 06:42:36 am » |
non, si tu supprime la tempo, il va boucler en continu sur le "if (Serial.available())", et exécutera la suite dès qu'il recevra un caractère.
Supprimer le delay va te permettre d'avoir juste un temps de réaction plus court.
Si le but est de mettre physiquement le microcontroleur en sommeil pour économiser de l'énergie tant qu'il ne reçoit rien, ce n'est pas la solution, et je ne la connais pas. D'ailleurs est-ce possible avec l'environnement arduino ?
|
|
|
|
|
Logged
|
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ? -non, mais il y a pire : à l'endroit, ça l'installe !!
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 142
|
 |
« Reply #4 on: December 06, 2012, 06:48:00 am » |
Arf je pensais que c’était le but des interruptions :S
Je suis perdu ... help ^^
|
|
|
|
|
Logged
|
|
|
|
|
perpignan, france
Offline
Full Member
Karma: 0
Posts: 209
|
 |
« Reply #5 on: December 06, 2012, 07:04:32 am » |
Non, le but des interruptions, c'est d'interrompre à un moment le déroulement normal du code suite à un évènement extérieur (interruption) pour pouvoir exécuter immédiatement une fonction particulière. Ça permet d'avoir une réaction immédiate si par exemple tu exécutes un code qui prends beaucoup de temps, mais que tu dois quand même immédiatement réagir à un changement sur une entrée.
Ça peut aussi dans certains cas être utilisé pour réveiller un micro en mode veille, mais je ne sais pas si c'est possible avec l'arduino.
Dans ton sketch de toutes manières tu n'utilises pas les interruptions.
|
|
|
|
|
Logged
|
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ? -non, mais il y a pire : à l'endroit, ça l'installe !!
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 142
|
 |
« Reply #6 on: December 06, 2012, 07:37:45 am » |
@bricofoy
Je sais bien que je n'utilise pas les interruptions dans mon code mais je voudrais juste savoir si il y a possibilité d'en foutre sur le port série !
EDIT : je pense que je ne suis pas du tout claire en fait ^^
Ce que je souhaite avec le code du poste 1 c'est de ne pas faire travailler l'arduino pour rien ( les commandes arrivent toutes les heures +/- quelques minutes ... C'est pour ça que je souhaite utiliser les interruptions mais je ne sais pas du tout comment faire pour la mettre sur le port série ...
|
|
|
|
« Last Edit: December 06, 2012, 07:51:15 am by trigger »
|
Logged
|
|
|
|
|
perpignan, france
Offline
Full Member
Karma: 0
Posts: 209
|
 |
« Reply #7 on: December 06, 2012, 08:06:54 am » |
oui, mais pour ça il faut avant tout pouvoir mettre l'arduino "en veille" et je ne sais pas si c'est possible, en tout cas je n'en ai jamais entendu parler.
et en plus il faut pouvoir attribuer une INT au port série, mais je dirais que ça c'est secondaire, à la limite.
tu as vraiment des gros soucis d'alim ou d'autonomie du montage sur une pile, pour chercher à la mettre en veille ?
|
|
|
|
|
Logged
|
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ? -non, mais il y a pire : à l'endroit, ça l'installe !!
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4331
Arduino Hacker
|
 |
« Reply #8 on: December 06, 2012, 08:12:47 am » |
Je sais bien que je n'utilise pas les interruptions dans mon code mais je voudrais juste savoir si il y a possibilité d'en foutre sur le port série !
Oui depuis arduino 1.0 c'est possible via SerialEvent() : http://arduino.cc/en/Reference/SerialEventCe que je souhaite avec le code du poste 1 c'est de ne pas faire travailler l'arduino pour rien ( les commandes arrivent toutes les heures +/- quelques minutes ... C'est pour ça que je souhaite utiliser les interruptions mais je ne sais pas du tout comment faire pour la mettre sur le port série ...
A moins de mettre en mode "sleep" le cpu celui ci travaille constamment. Qu'il boucle sur un if() ou sur rien (fonction loop() vide) ça ne change pas grand chose  Les interruptions c'est intéressant quand tu veut "paralléliser" plusieurs taches.
|
|
|
|
|
Logged
|
|
|
|
|
perpignan, france
Offline
Full Member
Karma: 0
Posts: 209
|
 |
« Reply #9 on: December 06, 2012, 08:32:52 am » |
merci pour ces précisions  la question devenant, du coup : l'arduino permet-il d'accéder au mode sleep du cpu ?
|
|
|
|
|
Logged
|
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ? -non, mais il y a pire : à l'endroit, ça l'installe !!
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4331
Arduino Hacker
|
 |
« Reply #10 on: December 06, 2012, 08:46:07 am » |
la question devenant, du coup : l'arduino permet-il d'accéder au mode sleep du cpu ?
Oui bien sûr, fait une recherche sur le forum avec le mot clef "avr/sleep.h", tu devrais tomber sur plusieurs topic traitant du sujet 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 142
|
 |
« Reply #11 on: December 06, 2012, 09:32:57 am » |
Merci bien pour toutes ces précieuses infos 
|
|
|
|
|
Logged
|
|
|
|
|
|