Go Down

Topic: lcd et while (Read 584 times) previous topic - next topic

pouille

bonjour j'ai un souci entre un ecran lcd qui n'affiche pas la valeur "analogique"
il reste figé jusqu'a la fermeture du conctact et la je patauge  :~
pourtant code simple

je joint le code complet


Quote

int _ABVAR_1_tmpcommun;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);


void setup()   {
{
  pinMode( 3 , INPUT);
  pinMode( 13 , OUTPUT);
  pinMode( 2 , INPUT);
   lcd.init();
lcd.backlight();
  _ABVAR_1_tmpcommun = 0; 
}





 void loop()
{
   lcd.setCursor (5,0);
   lcd.setCursor(0, 1);
   lcd.setCursor(1, 0);
  delay(50);


{
    lcd.clear();
    delay(10);
  _ABVAR_1_tmpcommun = analogRead(A1);
          lcd.print("delais : ");
          lcd.print(_ABVAR_1_tmpcommun/10);

}                 
while ( digitalRead( 3) )

{
digitalWrite( 13 , HIGH );

}

digitalWrite( 13 , LOW );
delay( _ABVAR_1_tmpcommun *10);

}


skywodd

Bonjour,

Ça sent le code généré par un logiciel graphique ...

Ton code actuel fait exactement ce qui tu lui demande ...
Il lit la tension sur A1, affiche la valeur puis bloque tant que D3 est à HIGH.
Ensuite il fait le delay().

Tu veut faire quoi exactement ?
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

pouille

Merci de m'aider
presque généré par soft graphique M'enfin..
c'est le delay qui me gène l'écran ne rafraîchi pas temps
que le delay n'est pas expiré mais je ne trouve pas de soluce pour qu'il affiche tout le temp
la valeur de "a1"

skywodd

J'ai pas tout compris mais je pense que cet exemple pourrait t'aider :
http://arduino.cc/en/Tutorial/BlinkWithoutDelay
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Heloderma-kris

salut c'est normal qu'il attende la fin de delay ,
en utilisant delay ,c'est comme si tu faisai une pause dans le programe donc il n'effectue pas la suite du prog!
maintenant un delay de 50milliseconde ça doit pas trops te géné non ?
sinon c'est que j'ai pas non plus compris ce que tu cherche a fair!
XD

pouille

bonjour et Merci de m'aider
le probleme et que le dernier delay() celui avec la variable*10
est tres long plusieurs dizaine de minutes et l'ecran se fige dessus
la synoptique par elle meme est simple un potar fait varier le temp de remise en fonction d'une led

Heloderma-kris

a tout hasar est ce que sa ne viendrai pas du fait que analogread te renvoi une valeur de 0 a1023 car dans ce cas

500 qui corespond a environ 2.5v te done un delay de 5000 !

mais ci c'est plusieur minute la c'est etrange!

apres que cherche tu a lire sur digitalread(3) car cette boucle peut aussi te poser des probléme ?
"temps que tension sur 3 je mes la 13 a l'etat haut " et ce que cette 13 reste figer aussi pendant le meme laps de temps?

skywodd

Le délai maximum possible pour analogRead(A1) = 1023 c'est 1023 * 10 = 10230ms -> 10 secondes.

C'est donc ta boucle d'attente sur digitalRead(3) qui bloque ton programme plusieurs minutes.
Ça veut aussi dire que ton câblage sur la broche D3 (un bouton je suppose ?) est foireux car si au bon de 10 minutes tu as suffisamment d'interférences pour faire communiquer la broche c'est pas glorieux ...

Il faut reprendre sur de bonne bases :
-> ton schéma de montage
-> ce que tu veut faire exactement (pas de code ou autre, ton projet lui même)
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Go Up