Pages: 1 [2]   Go Down
Author Topic: DS1820 et Keypad  (Read 2620 times)
0 Members and 1 Guest are viewing this topic.
Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3642
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il me semble que le problème vient de l'état de ton boolean lecture_en_cours et de ces lignes :

//if(currentMillis - previousMillis > interval){
         // previousMillis = currentMillis;  

Combien vaut interval ? On dirait en fait que lecture_en_cours ne repasse pas en false parce que la condition au-dessus n'est pas vérifié et donc lecture_en_cours ne repasse pas en false.
Logged


0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai testé avec interval = 1000.
Est-ce OK comme valeur ?  (pour faire 1 seconde).

Code:
long interval = 1000;  
Logged

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

En fait je viens de relire ton code mais je comprends pas bien : pourquoi mettre un delay (enfin l'histoire avec les millis()) sur la lecture clavier ? N'est-ce pas plutôt sur la mesur ede température que tu veux faire cela ?

Le schéma de ton code devrait être plutôt :

Code:
void loop(){
currentMillis=millis();
if (if(currentMillis - previousMillis > interval){
previousMillis = currentMillis;  
lecture_température;
}
lecture_clavier;
}

Comme cela ton code est consacré à 99% sur la lecture clavier (donc + réactif) et toute les secondes tu as une lecture de température. Tu peux même encore optimiser le code par exemple en réinitialisant previousMillis à l'appuie sur une touche clavier, ce qui laisserait le temps à l'utilisateur de tout taper sans que des mesures se mettent au milieu.
« Last Edit: January 05, 2011, 07:52:22 am by B@tto » Logged


Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sur les boutons poussoir, il faut tout de même prévoir une petite temporisation pour éviter un effet de "rebond", le bouton n'est pressé qu'une fois, mais est lu comme appuyé plusieurs fois....
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

B@tto,
Jean-François a décrit le principe; il reste à croiser les fonctions, car il est évident que la réactivité est attendue au niveau du clavier. Au niveau de mon code, la tempo est bien sur la partie lecture DS1820 pour donner priorité au clavier.
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour le bouton poussoir, cela reste un détail dès lors que je serai arrivé à faire marcher ce &@#! de code  smiley-wink
Logged

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

Jean-François avait fait l'inverse justement (lecture clavier toutes les secondes), à moins que quelque chose m'échappe ou qu'il se soit trompé, mon "schéma" me semble plus adapté (avec tout le respect que je te dois Jean-François ! ^^).
Logged


Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Aucun soucis B@tto.

Ce qu'il faudrait faire c'est ne pas mettre de pause à la lecture du clavier tant que celui ci n'est pas sollicité. Dès qu'un bouton est utilisé, il faut mettre un mini-pause sur la lecture de ce dernier (entre 5 et 10 ms devrait suffire), afin d'éviter cet effet de rebond.
La réactivité du clavier ne devrait pas être trop altérée.
« Last Edit: January 06, 2011, 06:23:34 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Pages: 1 [2]   Go Up
Jump to: