Pages: 1 ... 5 6 [7] 8   Go Down
Author Topic: Utiliser valeur du potentiomètre pour décaler une action  (Read 6989 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

Bon tout semble s'arranger, l'emplacement du capteur n'a plus d'importance, en gros le passage de l'objet déclenche l'action.


Maintenant il me reste une solution a trouver...


temporiser le temps ou la led verte va rester allumé, grâce au potentiomètre !


Logged

Online Online
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

fais le test comme ca
Quote
#define RVar A0 //pin potard
int potard;
int mesure;
int mesureBrute;

void setup(){
 Serial.print(9600);
}
void loop(){
mesureBrute = analogRead(RVar);
 mesure=map(mesureBrute,0,1023,0.0,100.0);
 Serial.print("mesure : ");
  Serial.println(mesure);
potard = mesure * 1000;
Serial.print("potard : ");
Serial.println(potard);
delay(2000);
}
Logged

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

Je test ça et je te dis quoi !
Logged

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

Bon j'ai bien la mesure qui s'affiche dans le terminal série, mais ça ne modifie en rien l'allumage de la led.


cependant je vois bien que le potar réagit
Logged

Online Online
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

c'était pas ca que je t'expliquais au dessus.
donne le résultat de la console avec le petit code du dessus.
Logged

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

voilà ce que donne la console, sachant que le résultat change lorsque je bouge le 1er potard :


Code:
üû9600mesure : 61
potard : -4536
mesure : 61
potard : -4536
mesure : 61
potard : -4536
mesure : 43
potard : -22536
mesure : 72
potard : 6464
mesure : 76
potard : 10464
mesure : 72
potard : 6464
mesure : 73
potard : 7464
mesure : 72
potard : 6464
Logged

France
Offline Offline
Faraday Member
**
Karma: 36
Posts: 3421
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@infobarquee :
Petit problème dans ton soft.
Tu fais un map du résultat de la conversion sur l'espace 0 à 100.
Puis tu le multiplies par 1000 (donc 0 à 100000) et ensuite tu places le résultat dans un int (-32768 à 32767).

Cherchez l'erreur.
Logged

Online Online
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@infobarquee :
Petit problème dans ton soft.
Tu fais un map du résultat de la conversion sur l'espace 0 à 100.
Puis tu le multiplies par 1000 (donc 0 à 100000) et ensuite tu places le résultat dans un int (-32768 à 32767).

Cherchez l'erreur.

effectivement smiley-wink bien vu
j'étais repartis sur l'idée du map en utilisant un int smiley-sad
long potard; serait plus appropriée
Logged

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

Ok on récupère donc une valeur dans le terminal série, ça j'ai bien pigé.

Le problème maintenant c'est :

J'analyse la sortie du potentiomètre avec :  mesureBrute=analogRead(RVar);

ensuite je transforme la valeur à l'aide la fonction map : mesure=map(mesureBrute,0,1023,0.0,5000.0);

là jusque là je pige bien  smiley-mr-green


Maintenant je veux utilisé la valeur reçu par le potentiomètre de façon à modifié le temps d'allumage d'une simple led :


digitalWrite (Ledverte, HIGH);



C'est là que tout coince, je dois pouvoir modifier en tournant le potentiomètre à 0, la led ne s'allume pas, le potentiomètre à fond, la led s'allume 5000 ms.


C'est tout con, mais ça fait 3 jours que je passe sur ce problème finalement simple  smiley-mr-green smiley-mr-green

Logged

Online Online
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

un calcul simple suffit pour trouver le coef
potar              ms
0---------------------0
maxi ???-------5000

si la valeur max mesure est 100, on multiplie par 50 pour 5000ms
mesure = 1 donc 50ms
mesure = 50 donc 2500ms
etc....
Logged

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

Pour ça que j'ai mis 5000 directement dans la map, comme ça on n'a pas besoin de rien convertir.


5000 ms sera le maximum utilisé.

Donc la led s'allumera 5 secondes maximum (mais c'est une valeur maxi, en général le temps d'allumage sera de 1,4/1?8 secondes)

Est-ce que c'est plus clair exposé comme ça ?
Logged

Online Online
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

et donc?
ca le fait ou pas?
Logged

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

Oui 5000 ça le ferait sans problème !


Mais comment je code ça  ?


Logged

Online Online
Edison Member
*
Karma: 17
Posts: 1938
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

http://arduino.cc/forum/index.php/topic,145657.msg1102114.html#msg1102114

relis un peu les posts précédents smiley-wink
tu chope la valeur mesure ou potard avec ton 5000
si détection
timer initialisé à l'instant T
prochain timer = 1er timer + valeur mesure ou potard suivant comment tu as fais ton code.
Logged

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

Voilà jusque là je comprends, maintenant j'indique au programme le début du comptage avec timerledverte=millis()

mais ensuite comment appelé timerledrouge pour allumer la led rouge TEMPS * RVar (RVar est le potar)


Code:
mesureIR=analogRead(photoIR);
  if (mesureIR<seuil) {//Serial.println("Piece detecte");
  digitalWrite (Ledverte, HIGH);
  timerledverte=millis();
 
  timerledrouge = timerledverte + RVar;
  }
   
  else {
    digitalWrite(Ledverte,LOW);
  }
 
 do {
    mesureIR = analogRead(photoIR);
  } while(mesureIR < seuil);
Logged

Pages: 1 ... 5 6 [7] 8   Go Up
Jump to: