Offline
Full Member
Karma: 0
Posts: 196
|
 |
« on: January 29, 2013, 07:26:48 am » |
Bonjour à tous,
Dans le cadre de mon projet actuellement en préparation, j'aimerais pouvoir augmenter ou diminuer le temps à l'aide d'un potentiomètre pour décaler le déclenchement d'une action.
Je m'explique, j'ai une barrière infrarouge, cette barrière une fois déclenché déclenche une action. Avec un potentiomètre j'aimerais donc pouvoir temporiser (ajouter quelques secondes) entre le moment ou celle-ci est déclenché et le moment ou l'action doit être faite.
Déclenchement ---> potentiomètre = décalage de 1,5 secondes ---> action
Les 1,5 secondes sont données à titre indicatif mais il faut que je puisse agir pour baisser à 0,6 secondes (exemple) à 3 secondes.
Merci pour vos lumières
EDIT :
J'ai édité ce post après avoir eu différentes réponses. C'est en effet plus clair mais la solution n'est pas encore trouvé...
Voilà je récupère sur la sortie Analogique 1 une valeur comprise entre 0 et 1023. Avec la fonction map, je récupère donc une valeur du potentiomètre entre 0 et 100 qui seront des secondes. Donc de 0 à 100 secondes.
Maintenant je souhaite utiliser cette valeur pour décaler dans le temps l'action A. donc action A+resultat potentiomètre= A+0 à 100 secondes.
Voilà en espérant avoir été assez clair.
|
|
|
|
« Last Edit: February 01, 2013, 05:00:50 pm by gunsman76 »
|
Logged
|
|
|
|
|
france
Offline
Sr. Member
Karma: 4
Posts: 276
|
 |
« Reply #1 on: January 29, 2013, 07:34:27 am » |
delay(1500); //Attendre 1.5s Voir ici http://arduino.cc/en/Reference/delay
|
|
|
|
|
Logged
|
Christian
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #2 on: January 29, 2013, 07:36:07 am » |
Merci pour ta réponse, mais la fonction delay n'est pas relié au potentiomètre et bloque le programme pour la suite...
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 6
Posts: 2438
|
 |
« Reply #3 on: January 29, 2013, 07:43:01 am » |
Merci pour ta réponse, mais la fonction delay n'est pas relié au potentiomètre et bloque le programme pour la suite...
bonjour ton potentiometre va renvoyer une valeur comprise entre 0 et 1023 sur une entrée ana de l'arduino sert toi de la fonction millis() qui n'est pas bloquante en appliquant un facteur derivé du potentiometre entre 0 et 1000 (pour faire simple) avec un multiplicateur de 1 tu aura une latitude de 1000 ms = 1 seconde resolution 1 ms avec un multi de 10 latitude de 10 seconde avec une resolution de 10 ms etc ...
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #4 on: January 29, 2013, 07:46:56 am » |
A merci !
Je me demandais si c'était possible c'est donc parfaitement réalisable.
Oui il ne faut pas que cela bloque, car pour tout expliquer lorsque le déclenchement se fait, je pas 3 pin en mode HIGH mais chacun des pin à une temporisation différentes en fonction justement du potentiomètre (donc 3 potentiomètres puisque je vais gérer 3 pin).
Les petits montages simple sont simple (la Palisse...) mais lorsqu'on veut vraiment adapter l'arduino à une fonction bien spécifique il faut faire marcher la matière grise !
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 7
Posts: 1667
Do or DIY
|
 |
« Reply #5 on: January 29, 2013, 07:48:19 am » |
delay(analogRead(PinPotard)*facteur);
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #6 on: January 29, 2013, 07:51:47 am » |
La fonction delay ne va pas trop bloquer mon programme ?
1 --> déclenchement
2 --> action 1 + 1,2 secondes sur pin 5 3 --> action 2 + 1,4 secondes sur pin 6 4 --> action 3 + 1,8 secondes sur pin 7
les secondes peuvent être plus ou moins importante et toujours par rapport au déclenchement.
|
|
|
|
|
Logged
|
|
|
|
|
france
Offline
Sr. Member
Karma: 4
Posts: 276
|
 |
« Reply #7 on: January 29, 2013, 09:48:55 am » |
// déclenchement à t=0 delay(1200;) //Attendre t=1.2 s // Action 1,2 secondes sur pin 5
delay(200); // 200 ms plus tard, soit t=1.4 s //Action 1,4 secondes sur pin 6
delay(400); //400 ms plus tard soit t = 1.8 s // action 1,8 secondes sur pin 7
Sinon avec la fonction millis() et des tests sur t
|
|
|
|
|
Logged
|
Christian
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #8 on: January 29, 2013, 10:10:35 am » |
Merci à tous pour vos réponses, mais en fait soit je me suis mal exprimé, soit vous m'avez mal compris.
Les temps que je donne ne sont pas figé... c'est pour ça qu'il me faut un potard pour justement pouvoir intervenir sur le temps entre le moment ou la cellule détecte l'objet et le moment ou l'on passe à l'action.
Sinon je n'aurais embêter personne, j'aurais justement joué avec la fonction delay.
J'ai un déclenchement A, je souhaite que ce déclenchement déclenche une action X seconde plus tard. Sachant que X est déterminé par la position du Potard.
Voilà en espérant avoir été plus clair.
Donc dans le programme, il ne faut pas que j'ai une fonction delay
Merci encore pour votre aide
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 7
Posts: 1667
Do or DIY
|
 |
« Reply #9 on: January 29, 2013, 10:40:08 am » |
Interruption temporelle : long Depart; boolean Flag; .... if(digitalRead(10)==HIGH){ // un bouton est appuyé Depart=millis(); Flag=TRUE; // on lève le flag pour signigier une nouvelle action }
if((millis()-Depart)>analogRead(Potar*Facteur) && Flag==TRUE){ // si le temps est écoulé et que l'action ne s'est pas déjà produite Action(); Flag=FALSE; // le flag est abaissé pour eviter de relancer Action() au prochain passage }
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #10 on: January 29, 2013, 10:53:03 am » |
Quand tu dis "bouton appuyer" en fait c'est le déclenchement de L'infrarouge ?
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 7
Posts: 1667
Do or DIY
|
 |
« Reply #11 on: January 29, 2013, 12:13:26 pm » |
Oui, bah je vais pas t'écrire tout le code non plus 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #12 on: January 29, 2013, 01:25:13 pm » |
Non !!!
Et merci beaucoup, j'ai fait un pas de géant aujourd'hui !
Un grand merci à tous ceux qui ont répondu.
Demain après midi, je commence mon petit code, je vous tiendrai au courant au fur et à mesure de son évolution.
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4351
Arduino Hacker
|
 |
« Reply #13 on: January 30, 2013, 03:22:38 am » |
Bonjour, Juste pour information il existe un fonction toute prête pour "mapper" deux fourchettes de valeur http://arduino.cc/en/Reference/mapdelay(map(analogRead(A0), 0, 1023, 1000, 10000)); // délai entre 1s et 10s suivant la valeur du potentiomètre
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Full Member
Karma: 0
Posts: 196
|
 |
« Reply #14 on: January 30, 2013, 06:43:44 am » |
La fonction delay va stopper le programme et empêcher l'execution des autres tâches ?
|
|
|
|
|
Logged
|
|
|
|
|
|