Pages: [1] 2 3 ... 8   Go Down
Author Topic: Utiliser valeur du potentiomètre pour décaler une action  (Read 8188 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
God Member
*****
Karma: 15
Posts: 877
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

delay(1500);  //Attendre 1.5s

Voir ici http://arduino.cc/en/Reference/delay
Logged

Christian

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Faraday Member
**
Karma: 34
Posts: 5165
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Faraday Member
**
Karma: 39
Posts: 3737
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

delay(analogRead(PinPotard)*facteur);
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
God Member
*****
Karma: 15
Posts: 877
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

// 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 Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Faraday Member
**
Karma: 39
Posts: 3737
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Interruption temporelle :
Code:
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 Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quand tu dis "bouton appuyer" en fait c'est le déclenchement de L'infrarouge ?


Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3737
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, bah je vais pas t'écrire tout le code non plus smiley-wink
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Juste pour information il existe un fonction toute prête pour "mapper" deux fourchettes de valeur smiley-wink
http://arduino.cc/en/Reference/map

Code:
delay(map(analogRead(A0), 0, 1023, 1000, 10000)); // délai entre 1s et 10s suivant la valeur du potentiomètre
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La fonction delay va stopper le programme et empêcher l'execution des autres tâches ?
Logged

Pages: [1] 2 3 ... 8   Go Up
Jump to: