1 pièce(s) jointe(s)
Affichage variable et caractere indesirable
Bonjour à tous,
Je rencontre un soucis avec l'affichage de variable sur un ecran LCD, j'ai testé avec plusieurs bibliotheques differentes et le caractere change parfois mais est toujours present.
Un caractere vient systematiquement se coller apres que j'affiche une valeur recuperee dans une variable
Un exemple sera pus concret
Voici mon bout de code, soyez indulgents, ce sont mes debuts :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| #!/usr/bin/python
# Station Meteo
# on importe le pilote
import RPi_I2C_driver
import time
from time import sleep
from datetime import datetime
import os
import sys
from subprocess import *
GPIO.setwarnings(False)
# on initialise le lcd
lcd = RPi_I2C_driver.lcd()
# Fonction qui permet de passer une commande OS
def run_cmd(cmd):
p = Popen(cmd, shell=True, stdout=PIPE)
output = p.communicate()[0]
return output
# On definit les GPIO associes au sondes DHT22
sonde1 = 14
sonde2 = 23
sonde3 = 15
# On definit la commande OS dans les variables lire_*
lire_temp1 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $3 }'" % (sonde1)
lire_hum1 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $7 }'" % (sonde1)
lire_temp2 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $3 }'" % (sonde2)
lire_hum2 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $7 }'" % (sonde2)
lire_temp3 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $3 }'" % (sonde3)
lire_hum3 = "sudo nice -20 ./Adafruit_DHT 22 %d |grep Temp |awk '{ print $7 }'" % (sonde3)
# Boucle qui lit les valeurs de la sonde et verifie que ce sont des float
while True :
temperature1 = run_cmd(lire_temp1) # Lance la commande de lecture de la sonde et met en variable le resultat
humidite1 = run_cmd(lire_hum1) # Lance la commande de lecture de la sonde et met en variable le resultat
try: # Test des ...
float(temperature1) and float(humidite1) # ... valeurs pour voir si ce sont des float
print "sonde 1 => Ok"
break # Si oui on casse la boucle
except ValueError: # Sinon
print "sonde 1 erreur, nouvel essai..." # On affiche un message et on reessaye
sleep(1) # On s endors 1 seconde et on recommence la boucle
while True : # Idem au bloc du dessus avec temperature2
temperature2 = run_cmd(lire_temp2)
humidite2 = run_cmd(lire_hum2)
try:
float(temperature2) and float(humidite2)
print "sonde 2 => Ok"
break
except ValueError:
print "sonde 2 erreur, nouvel essai..."
sleep(1)
while True : # Idem au bloc du dessus avec temperature2
temperature3 = run_cmd(lire_temp3)
humidite3 = run_cmd(lire_hum3)
try:
float(temperature3) and float(humidite3)
print "sonde 3 => Ok"
break
except ValueError:
print "sonde 3 erreur, nouvel essai..."
sleep(1)
# Bloc d affichage du LCD ligne par ligne
lcd.lcd_display_string(datetime.now().strftime(' %d %b %H:%M'), 1) # Affichage de la date et heure sur la 1ere ligne
lcd.lcd_display_string(" Sal. Ch.1 Ext" , 2) # Affichage de la ligne 2
lcd.lcd_display_string("Temp :%s%s%s" %(temperature1, temperature2, temperature3) , 3) # Affichage de la ligne 3 avec t°
lcd.lcd_display_string("Hum :%s%s%s"%(humidite1, humidite2, humidite3) , 4) # Affichage de la ligne 3 avec hum |
et le resultat sur le LCD :