Go Down

Topic: DS1820 et Keypad (Read 2927 times) previous topic - next topic

B@tto

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.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

kafifi

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

Code: [Select]
long interval = 1000;  

B@tto

#17
Jan 05, 2011, 01:52 pm Last Edit: Jan 05, 2011, 01:52 pm by B@tto Reason: 1
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: [Select]
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.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Jean-François

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....
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

kafifi

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.

kafifi

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

B@tto

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 ! ^^).
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Jean-François

#22
Jan 06, 2011, 12:23 pm Last Edit: Jan 06, 2011, 12:23 pm by jfs Reason: 1
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.
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

Go Up