Caractères spéciaux écran LCD


bonjour,

nous travaillons actuellement sur un projet qui est une station météo.
nous avons bien toutes nos valeurs qui apparaissent sauf pour une "page" où 4 caractères bizarres apparaissent.
on utilise arduin 1.0.6 avec un dht22 pour mesurer la température et l'humidité avec un bmp085 pour la pression atmosphérique.
le problème semble venir du bmp pour la pression / altitude
avez vous une idée d'où cela peut il venir ?
merci d'avance  :d  

code: [select]
#include <wire.h>
#include <adafruit_bmp085.h>
#include <liquidcrystal.h> //librairie pour l'écran lcd
#include <dht.h> //librairie pour le capteur dht

adafruit_bmp085 bmp;
 
liquidcrystal lcd(12, 11, 5, 4, 3, 2); //initialisation de l'écran lcd avec les numéros des pins utilisés
 
#define dhtpin 8 //pin auquel est connecté le capteur dht
 
#define dhttype dht22 //si vous utiliser le dht 11
//#define dhttype dht22 //si vous utiliser le dht 22  (am2302)
//#define dhttype dht21 //si vous utiliser le dht 21 (am2301)
 
const int inttimepause = 1000; //par défaut on actualise les valeures toutes les 5 secondes
 
float flthumidity; //pourcentage d'humidité mesuré
float flttemperature; //température mesurée en celsius
 
dht dht(dhtpin, dhttype); //on initialise le capteur dht

const int lumipin = a0; //on définit le pin de la photorésistance
int lumivalue = 50; //on définit la variable qui va retenir la valeur de la photorésistance
int lumilcdvalue = 0;
 

byte soleil[8] = {
    b00100,
    b10101,
    b01110,
    b11111,
    b01110,
    b10101,
    b00100,
};

byte hum[8] = {
    b00100,
    b01010,
    b01010,
    b01010,
    b01110,
    b11111,
    b11111,
    b01110,
};
 


void setup()
{
  lcd.createchar(0, soleil);
  lcd.createchar(1, hum);
  lcd.begin(20, 4); //on indique le nombre de colonnes et de lignes de l'écran
  lcd.clear(); //on efface tout ce qui se trouve sur l'écran
  bmp.begin();
}
 
void loop()
{
  flthumidity = dht.readhumidity(); //on lit le pourcentage d'humidité
  flttemperature = dht.readtemperature(); //on lit la température en degrés celsuis
  if (isnan(flttemperature) || isnan(flthumidity)) //si les valeures retournées ne sont pas des nombres :
  {
    lcd.setcursor(0, 1); //positionnement du curseur
    lcd.print(dhttype); //on affiche le type de capteur
    lcd.setcursor(5, 1);
    lcd.print(" illisible"); //on affiche l'erreur
  }
  else
  {
    //mise en forme et affichage des informations sur l'écran lcd
    lcd.setcursor(0, 0); //positionnement du curseur
    lcd.print("temperature : ");
    lcd.setcursor(7, 1);
    lcd.print(flttemperature); //affichage de la température
    lcd.setcursor(13, 1);
    lcd.print((char)223); //affiche le caractère ° (degrés)
    lcd.setcursor(14, 1);
    lcd.print("c"); //en degrés celsuis
    lcd.setcursor(0, 2);
    lcd.print("humidite    : ");
    lcd.setcursor(7, 3);
    lcd.print(flthumidity); //affichage de l'humidité
    lcd.setcursor(13, 3);
    lcd.print("%");
  }
  
   lcd.setcursor(4,1);
   lcd.write((uint8_t) 0);
   lcd.setcursor(4,3);
   lcd.write((uint8_t) 1);


  lcd.nodisplay();
  delay(500);
  lcd.display();
  delay(3000);
  lcd.clear();
    
  lcd.setcursor(0, 0);
  lcd.print("pression");
  lcd.setcursor(7, 1);
  lcd.print(bmp.readpressure()/100);
  lcd.println(" hpa");
 
  lcd.setcursor(0, 2);
  lcd.print("altitude :");      // readaltitude() peut prendre un argument : la pression
  lcd.setcursor(7, 3);
  lcd.print(-bmp.readaltitude(101325));  // actuelle au niveau de la mer, en pascals.
  lcd.println(" metres");     // par exemple : 1015 millibars = 101500 pa
 
  lcd.nodisplay();
  delay(500);
  lcd.display();
  delay(3000);
  lcd.clear();
  delay(500);
  
   lumivalue = analogread(lumipin); //on lit la valeur de la photorésistance

/* pour utiliser la valeur de la photorésistance, il faut faire un peu de math.
la photorésistance fournit un nombre à 10-bits.
mais analogwrite() utilise des chiffres à 8-bits.
il faut diviser la valeur par 10 pour ramener celle-ci à un % */
lcd.setcursor(0, 0);
lcd.print("luminosite :");
lcd.setcursor(8,1);
lcd.print (lumilcdvalue = lumivalue);
lcd.setcursor(9, 1);
lcd.print("%");

  lcd.nodisplay();
  delay(500);
  lcd.display();
  delay(3000);
  lcd.clear();
  delay(500);
  
}

bonjour,
boule de cristal en panne.
comment veux-tu que l'on sache ce qui se passe, on n'a pas ton soft, ton montage et encore moins les caractéristique du matériel utilisé.
avec les éléments fournis, le comportement de votre montage parait normal.  :smiley-mr-green:


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Caractères spéciaux écran LCD


arduino

Comments