RaspBerry Pi et afficheur LCD Hitachi HD44780 1602 [PART 2]

Voici la suite du tutoriel sur l’intégration et l’utilisation d’un afficheur LCD HD44780 sur un RaspBerry Pi.

Pour ceux qui n’ont pas lu la première partie, je vous conseille de le faire.

Montage LCD sur RaspberryPi

Un schéma étant souvent plus évocateur que de longs discours, j’ai préparé tout le câblage sur grâce au logiciel fritzing.

Le montage suivant permet la connection d’un écran LCD HD44780 sur votre RaspBerry Pi. N’hésitez pas à cliquer sur l’image pour l’agrandir.

Le pin RW (Pin 5 du LCD) permet de spécifier à l’afficheur si on souhaite envoyer ou recevoir des données. Dans notre cas, on souhaite uniquement recevoir des données provenant du RaspBerry Pi, c’est pourquoi je l’ai relié directement à la masse.

De plus, il faut savoir que votre RaspBerry Pi ne supportera pas 5V en entrée sur les ports GPIO. Le fait de relier le pin RW à la masse m’assure donc que je n’enverrai pas du 5V à mon RaspBerry Pi, ce qui pourrait l’endommager.

Vous noterez également que le pin 3 de l’afficheur LCD est directement branché à la masse. Sa tension qui doit se situer entre 0V et 5V permet de définir le contraste de l’afficheur LCD. Comme expliqué dans la première partie du tutoriel, il est possible de connecter un potentiomètre afin de régler le contraste (le point suivant illustre cela).

Vous noterez également que le pin 15 de l’afficheur LCD HD44780 est relié à une résistance. Je l’ai mise car ce pin qui sert au backlight est alimenté en 5V et je n’ai voulu prendre aucun risque.

Vous voyez il est relativement simple de connecter un afficheur LCD HD44780 à votre RaspBerry Pi.

Montage LCD sur RaspberryPi avec Potentiomètre

L’utilisation d’un potentiomètre va vous permettre de régler le contraste en jouant sur le pin 3 de votre afficheur LCD. Le reste de la connectique est identique au schéma précédent.

Premier branchement du LCD sur votre RaspBerry Pi

Je vous conseille de souder déjà les cables avec votre afficheur LCD:

Vous remarquerez que j’ai utilisé exactement les mêmes coloris de câbles que dans mon schéma. C’est important pour éviter de se perdre dans les fils.

Vu que je suis sympa çà me gène pas si vous vous moquez de mes soudures (j’en avais pas refait depuis 12 ans :-)).

Ensuite effectuez toutes les connexions sur votre breadboard:


Vous pouvez ensuite effectuer les connexions vers votre RaspBerry Pi.

ATTENTION: Ne branchez que le pin d’alimentation 5V que si vous êtes sûr de votre montage.

Une fois votre afficheur LCD HD44780 correctement branché sur votre RaspBerry Pi, vous devriez avoir quelque chose comme çà:

Afficher du texte sur votre LCD HD44780

L’intérêt d’avoir un afficheur LCD connecté à votre RaspBerry Pi est d’y afficher du texte.

Pour pouvoir faire cela, nous allons utiliser le langage Python et la bibliothèque RPi-GPIO qui permet d’envoyer des commandes ou des données via les pins de votre RaspBerry Pi.

Installation de RPi-GPIO

Téléchargez RPi-GPIO:

wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.3.1a.tar.gz

Extraire l’archive puis naviguer dans le répertoire créé:

tar zxf RPi.GPIO-0.3.1a.tar.gz
cd RPi.GPIO-0.3.1a

Installez la bibliothèque RPi-GPIO puis supprimer les fichiers inutiles:

python setup.py install
cd ..
rm -rf RPi.GPIO-0.3.1a/

 Afficher du texte sur le LCD en Python

Voici le code Python qui me sert à afficher des informations systèmes sur mon afficheur LCD connecté à mon RaspBerry Pi:

#!/usr/bin/python
 
############################
# Imports                  #
############################
import threading
import RPi.GPIO as GPIO
from time import sleep
import subprocess
 
############################
# Class de controle du LCD #
############################
class HD44780(threading.Thread):
	######################
	# Variable Shared    #
	######################
	_PULSE = 0.00005
	_DELAY = 0.00005
 
	######################
	# Constructeur       #
	######################
	def __init__(self, pin_rs=7, pin_e=8, pins_db=[25, 24, 23, 18], lcd_width=16):
		self.message = ""
		self.currentmessage = "azertyuiop"
		self.stop = False
		self.lcd_width = lcd_width
		self.pin_rs = pin_rs
		self.pin_e = pin_e
		self.pins_db = pins_db
		GPIO.setmode(GPIO.BCM) 				# Use BCM GPIO numbers
		GPIO.setup(self.pin_e, GPIO.OUT)
		GPIO.setup(self.pin_rs, GPIO.OUT)
		for pin in self.pins_db:
			GPIO.setup(pin, GPIO.OUT)
 
		self.Clear()
		threading.Thread.__init__(self)
 
	######################
	# Demarrage du Thread# 
	######################
	def run(self):
		while self.stop == False:
			if self.message != self.currentmessage:
				self.currentmessage = self.message
				self.LcdMessage()
			sleep(1)
 
	######################
	# Arret du Thread    # 
	######################	
	def Stop(self):
		self.stop = True
 
	######################
	# Initialisation LCD # 
	######################
	def Clear(self):
		""" Blank / Reset LCD """
		self.LcdByte(0x33, False) # $33 8-bit mode
		self.LcdByte(0x32, False) # $32 8-bit mode
		self.LcdByte(0x28, False) # $28 8-bit mode
		self.LcdByte(0x0C, False) # $0C 8-bit mode
		self.LcdByte(0x06, False) # $06 8-bit mode
		self.LcdByte(0x01, False) # $01 8-bit mode
 
	######################
	#Execution sur le LCD# 
	######################
	def LcdByte(self, bits, mode):
		""" Send byte to data pins """
		# bits = data
		# mode = True  for character
		#        False for command
 
		GPIO.output(self.pin_rs, mode) # RS
 
		# High bits
		for pin in self.pins_db:
			GPIO.output(pin, False)
		if bits&0x10==0x10:
			GPIO.output(self.pins_db[0], True)
		if bits&0x20==0x20:
			GPIO.output(self.pins_db[1], True)
		if bits&0x40==0x40:
			GPIO.output(self.pins_db[2], True)
		if bits&0x80==0x80:
			GPIO.output(self.pins_db[3], True)
 
		# Toggle 'Enable' pin
		sleep(HD44780._DELAY)    
		GPIO.output(self.pin_e, True)  
		sleep(HD44780._PULSE)
		GPIO.output(self.pin_e, False)  
		sleep(HD44780._DELAY)      
 
		# Low bits
		for pin in self.pins_db:
			GPIO.output(pin, False)
		if bits&0x01==0x01:
			GPIO.output(self.pins_db[0], True)
		if bits&0x02==0x02:
			GPIO.output(self.pins_db[1], True)
		if bits&0x04==0x04:
			GPIO.output(self.pins_db[2], True)
		if bits&0x08==0x08:
			GPIO.output(self.pins_db[3], True)
 
		# Toggle 'Enable' pin
		sleep(HD44780._DELAY)    
		GPIO.output(self.pin_e, True)  
		sleep(HD44780._PULSE)
		GPIO.output(self.pin_e, False)  
		sleep(HD44780._DELAY) 	
 
	######################
	#Affichage sur le LCD# 
	######################	
	def LcdMessage(self):
		""" Send string to LCD. Newline wraps to second line"""
		self.Clear()
		text = self.currentmessage
		self.LcdByte(0x80, False)
		for c in text:
			if c == '\n':
				self.LcdByte(0xC0, False) # next line
			else:
				self.LcdByte(ord(c),True)
 
	######################
	#Definir le message  # 
	######################
	def LcdSetMessage(self, text):
		self.message = text.ljust(self.lcd_width," ")
 
################################
# Class Informations Systeme   #
################################
class SysInfo(threading.Thread):
	######################
	# Constructeur       #
	######################
	def __init__(self):
		self.count = 0
		self.lcd = HD44780()
		self.stop = False
		threading.Thread.__init__(self)
 
	######################
	# Demarrage du Thread# 
	######################
	def run(self):
		self.lcd.start()
		while self.stop == False:
			if self.count == 0: #UPTIME
				self.lcd.LcdSetMessage("Uptime:\n"+self.SysUptime())
			elif self.count == 1: #LOAD
				self.lcd.LcdSetMessage("Load:\n"+self.SysLoadAvg())
			elif self.count == 2: #CPU
				self.lcd.LcdSetMessage("Cpu:\n"+self.SysCpu())
			elif self.count == 3: #MEMORY
				self.lcd.LcdSetMessage("Memory:\n"+self.SysMemory())
			elif self.count == 4: #DRIVE
				self.lcd.LcdSetMessage("Disk Root:\n"+self.SysDisk())
			else:
				self.lcd.LcdSetMessage("ZeM.fr    ZeM.fr\nRoxXxXxXxXxXxXxX")
			self.count += 1
			if self.count == 6:
				self.count = 0
			sleep(5)
 
	######################
	# Arret du Thread    # 
	######################
	def Stop(self):
		self.lcd.Stop()
		self.stop = True	
 
	######################
	# Memory             # 
	######################		
	def SysMemory(self):
		try:
			command="free -h"
			process=subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
			stdout_list=process.communicate()[0].split('\n')
			for line in stdout_list:
			  data=line.split()
			  try:
				  if data[0]=="Mem:":
					  total=str(data[1])
					  used=str(data[2])
					  free=str(data[3])
			  except IndexError:
				  continue	
		except:
			return "Error"
		return str(used)+ " / "+str(total)
 
	######################
	# Disk              # 
	######################		
	def SysDisk(self):
		try:
			command="df -H /"
			process=subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
			stdout_list=process.communicate()[0].split('\n')
			for line in stdout_list:
			  data=line.split()
			  try:
				  if data[len(data)-1]=="/":
					  total=str(data[1])
					  used=str(data[2])
			  except IndexError:
				  continue	
		except Exception, e:
			print e
			return "Error"
		return str(used)+ " / "+str(total)
 
	######################
	# CPU                # 
	######################	
	def SysCpuGetTimeList(self):
		statFile = file("/proc/stat", "r")
		timeList = statFile.readline().split(" ")[2:6]
		statFile.close()
		for i in range(len(timeList))  :
			timeList[i] = int(timeList[i])
		return timeList
	def SysCpu(self):
		try:
			x = self.SysCpuGetTimeList()
			sleep(2)
			y = self.SysCpuGetTimeList()
			for i in range(len(x)):
				y[i] -= x[i]
			cpuPct = 100 - (y[len(y) - 1] * 100.00 / sum(y))
		except:
			return "Error"
		return str('%.2f' %cpuPct)+"%"
 
	######################
	# Load Average       # 
	######################
	def SysLoadAvg(self):
		try:
		 f = open( "/proc/loadavg" )
		 contents = f.read().split()
		 f.close()
		except:
			return "Error"
		return contents[0]+" "+contents[1]+" "+contents[2];		
 
	######################
	# Systeme Uptime     # 
	######################
	def SysUptime(self):
		try:
			f = open( "/proc/uptime" )
			contents = f.read().split()
			f.close()
			total_seconds = float(contents[0])
			MINUTE  = 60
			HOUR    = MINUTE * 60
			DAY     = HOUR * 24
			days    = int( total_seconds / DAY )
			hours   = int( ( total_seconds % DAY ) / HOUR )
			minutes = int( ( total_seconds % HOUR ) / MINUTE )
			seconds = int( total_seconds % MINUTE )
			string = ""
			if days > 0:
				string += str(days) + "d "
			if len(string) > 0 or hours > 0:
				string += str(hours) + "h "
			if len(string) > 0 or minutes > 0:
				string += str(minutes) + "m "
			string += str(seconds) + "s "
		except:
			return "Error"
		return string;	
 
######################
# MAIN STARTER       # 
######################	
if __name__ == '__main__':
 
	si = SysInfo()
	si.start()
	q = str(raw_input('Press ENTER to quit program'))
	si.Stop()

Ce script Python contient 2 classes:

  • la classe HD44780 qui permet de contrôler l’afficheur LCD
  • la classe SysInfo qui permet de récupérer certaines informations propres au système

Le script contient également un lanceur afin d’exécuter le main.

Voici une vidéo montrant le résultat produit par ce script:

71 Responses to RaspBerry Pi et afficheur LCD Hitachi HD44780 1602 [PART 2]

  1. Merci pour ce tuto très intéressant.
    J’essai de reproduire votre montage cependant je suis intéressé par plus de précision. Il me manque les références de la résistance ainsi que du potentiomètre. Pouvez-vous me donner ça ? (J’ai pas envie de griller mon Pi tout neuf :p)

    Sinon bravo pour votre site !!

    • jhd says:

      N importe quel potentiometre peut fonctionner. Pour la resistance, une 330ohm suffira

      • herve says:

        C’est une bêtise de dire que n’importe quel potar peut fonctionner !
        Il y a un monde entre les électroniciens et les bricoleurs de l’informatique !
        Pour comprendre ce que je veux dire, il suffit juste de piger la 1ére des lois de l’électricité & électronique: la loi d’ohm.

        Si vous jouez avec des piles ou des petites alims, merci la conso ou le “POUF” que ça risque de faire… Et en plus ca peut chauffer… grave…
        Un potar correct pour un retro éclairage sera > 10Kohm…. 20Kohm étant souvent désigné par les fabricants.

        • jhd says:

          C’est vrai qu’il y a un monde entre les électroniciens et les bricoleurs de l’informatique.

          Maintenant on travaille avec du 3.3v, 5 au max donc je pense que n’importe quel potar à pas cher sera suffisant pour nos “bidouilles” 🙂

  2. […] la même chose, avec un écran moins cher (mais du coup de moindre capacité) a base de librairie python, très bien expliqué par notre amis […]

  3. Thomas says:

    Bonjour, merci pour votre tuto 🙂
    J’ai cependant une question, j’ai du faire une erreur quelque part .. les messages s’affichent bien cependant tout est assez sombre (je n’ai pas de potentiomètre), une idée sur l’erreur que j’aurais pus faire ??

    Merci

  4. Thomas says:

    Justement le truc que je ne comprend pas c’est que j’ai mis une résistance de 330ohms :
    http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=350394603083&ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_1455wt_1157

    Et avec cette afficheur LCD :
    http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=300664184556&ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649#ht_2242wt_1397

    Je ne comprend pas mais j’avoue ne pas être calé en électronique :/

    Mais si je comprend bien le schéma tous les câbles noirs sont relié entre eux, les rouges (partiellement) entre eux via la résistance et les jaunes & bleue sont connecté directement sans y touché ? (je n’ai pas de carte intermédiaire)

    Voir photo ci-dessous :
    http://img825.imageshack.us/img825/976/dsc0484mg.jpg

    • jhd says:

      Essaye de faire la meme connectique que mon schéma avec le potentiomètre sauf que tu le remplaces par une résistance.
      Si çà ne change rien, alors mets une résistance de 1Kohms pour tester

  5. Thomas says:

    Finalement, autant pour moi javais juste mal connecté le backlight, ça marche nickel 🙂

    http://img14.imageshack.us/img14/4382/dsc0489vu.jpg

    Merci encore !

  6. jhd says:

    Bravo a toi 🙂

  7. […] d’un écran LCD ( 16 x 2, rétro-éclairé en bleu ) qui fonctionnera depuis le port GPIO. Cet article me semble fort […]

  8. giannini says:

    Bonjour,
    Je voulais savoir sic’est possible de mettre un interupteur pour eteindre l’ecran directement sur le 5V ?
    Ou peut on l’eteindre via python ?

    Et merci beaucoup pour tout tes tutos, ils sont terribles 😀

    • jhd says:

      Je n ai pas essayer ms en intercalant un switch entre l ecran et le 5v ca doit marcher 😉

      • mackoomba says:

        Je confirme, mettre un interrupteur entre le RPi et le LCD fonctionne
        Cependant, si le script tourne en continu, il reste un petit courant residuel dans le LCD qui s’éclaire légèrement, a voir si ce n’est pas dommageable pour le LCD et/ou le RPi

  9. mackoomba says:

    Je aussi réalisé ce tuto et adapté a mes besoins, non sans mal pour certaines infos…
    J’ai donc maintenant l’affichage en supplément: Date et Heure, Adresse IP locale, Adresse IP internet, temperature CPU ARM

    Merci en tous cas pour ce tuto complet !

  10. Anonymous says:

    Merci pour ce tuto que j’ai suivi à la lettre sans aucun problème. J’aimerai cependant savoir s’il est possible d’afficher des caractères grecs sur l’écran, genre alpha ou beta ? Merci

    • jhd says:

      Il est possible d’afficher ce que l’on veut (même des caractères perso) maisje ne me souviens plus comment :/
      Une recherche google devrait t’aider.

  11. seb says:

    Merci pour ce tuto ! J’utilise actuellement le code pour un petit programme pour me faire un radio réveil basé sur mpc, et j’aimerai pouvoir éteindre l’écran. C’est faisable, mais je n’arrive pas à saisir comment envoyer l’instruction à l’afficheur LCD….
    J’ai essayé en m’inspirant de ca https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/blob/master/Adafruit_CharLCD/Adafruit_CharLCD.py et de ca https://www.sparkfun.com/datasheets/LCD/HD44780.pdf .
    Une idée?
    Merci d’avance

    • jhd says:

      Je n’ai plus ma maquette pour regarder mais tu pourrais mettre un potentiometre pour reduire la luminosité, sinon l’exemple python que tu donne est bon as tu testé cet exemple ?

  12. seb says:

    Je viens de tester l’exemple, le \n ne fonctionne pas comme dans ton script, par conséquent les lignes se chevauchent.. J’ai quand même testé la fonction dusplayoff, cela vide l’écran mais n’éteint pas la LED. Après quelques recherches, je crois que je vais devoir mettre un interrupteur physique entre le 5V et le LCD.
    Merci quand même , ton script fait des merveilles !

  13. […] de gérer un écran LCD de type "HD44780" (disponible sur ebay pour quelques euros) sur zem.fr . J’ai juste mis le code dans un module Python indépendant […]

  14. Guillaume says:

    Bonjour,

    J’ai suivi votre tuto et tout fonctionne sauf que lorsque je lance le script j’ai quelques problèmes d’affichage.

    L’uptime et les % CPU s’affichent mais pas le reste.

    J’ai pensé à un pb de droits donc pour le memory et le disk j’ai ajouté un sudo dans les commandes mais ça ne fonctionne toujours pas.
    J’ai donc essayé de taper les commandes dans le terminal qui m’affiche bien les différents pourcentages.

    Même le Zem.fr RoxX… ne s’affiche pas 🙁

    Une petite idée de ce qui pourrait bugger ?
    Quelqu’un a également eu ce problème ?
    Peut-être le script à adapter…

    Merci

    • jhd says:

      Bizarre.Si tu arrives a afficher du texte c’est que la partie connectique est fonctionnelle.

      L’erreur viendrait donc du code. Tu as modifié le code ?

  15. Isador says:

    Bonjour,

    Excellent, merci pour ce superbe montage !

    Tout fonctionne, cependant seul la section “Disk Root” s’affiche avec ce script.

    Je n’ai pas touché au code, j’ai repris le même. Le contraste est au plus bas, car je n’utilise pas de potentiomètre (mais aucun rapport, je pense..).
    Une idée, peut-être ?

  16. Isador says:

    Bonjour,

    Excellent tuto.
    Après quelques tentatives, tout a fini par fonctionner.

    Cependant, n’étant pas électronicien, je me posais une question : La Breadboard qui sert d’intermédiaire est-elle indispensable pour relier nos 2 équipements ??

    Je voudrais en fait me faire un réveil, qui affiche la musique jouée sur cet écran,
    cela parait compliqué de placer la BreadBoard dans le boitier du futur réveil..

    Merci :).

  17. Isador says:

    Ok, merci.
    Je me suis donc penché vers une plaque à pastilles, mais du coup mon montage ne marche plus..

    Je ne sais pas si il y a quelque chose de particulier à faire par rapport à une Breadboard ??

    Merci !

    Photo du montage mais désolé, on voit pas grand-chose.. :
    http://hpics.li/8aec515

  18. Isador says:

    Bon, je crois avoir compris pourquoi..
    A priori, la différence avec une Breadboard, c’est qu’il faut absolument souder ^^
    (source : http://www.sonelec-musique.com/electronique_bases_realisation_ci_veroboard.html )

    Désolé d’avoir posé cette question, à priori inutile, et merci encore.

  19. Isador says:

    Bon, je rencontre un petit souci, j’ai pu faire mon montage sans problème, j’ai modifié seulement la 2nde partie de ton script (autrement dit, à partir de “def run(self)” ).

    J’affiche séquentiellement le nom d’une musique, le nom d’un artiste, l’heure et la RAM. De temps à autre, le LCD affiche des chaines de caractères très étranges, du style : “%F z WfV ” Cela me remplace la séquence qui devait s’afficher, et cela aléatoirement.. As-tu rencontré cela par hasard ?? Cela viendrait de mon script ?
    Merci, et désolé de tant de questions..

    • jhd says:

      C’est probablement une erreur de script. Vérifie qu’il n’y a pas de caractères spéciaux par exemple

      • Vivien says:

        J’ai le meme probleme et dailleur quand je lance le truc dans python (oui je suis novice) il me met invalide synthaxe je ne c pas quoi faire sur les 2 ecran que j’ai recu je n’arive pas a en faire marcher un corectement
        sniff

  20. @rno says:

    Bonjour,

    Merci pour cet article.

    J’ai un petit souci. Lorsque je lance le script par sudo python test.py, j’obtiens l’erreur suivante :

    Traceback (most recent call last):
    File “test.py”, line 290, in
    si = SysInfo()
    File “test.py”, line 147, in __init__
    self.lcd = HD44780()
    File “test.py”, line 32, in __init__
    GPIO.setmode(GPIO.BCM) # Use BCM GPIO numbers
    AttributeError: ‘module’ object has no attribute ‘setmode’

    J’ai bien fait les mises à jours (sudo apt-get update et upgrade), j’ai téléchargé les mises à jours GPIO tel qu’indiqué dans le tuto.

    Une petite idée de ce qui pourrait clocher ? Mes connaissances en python sont vraiment trés limitée.

    Merci d’avance.

  21. @rno says:

    Voila. J’ai tout réinstallé mais ily a un truc qui passe mal. Au moment de l’install de lalibrairie GPIO. Peut-être une mauvaise version de Python ??

    [email protected] ~/RPi.GPIO-0.3.1a $ sudo python setup.py install
    running install
    Checking .pth file support in /usr/local/lib/python2.7/dist-packages/
    /usr/bin/python -E -c pass
    TEST PASSED: /usr/local/lib/python2.7/dist-packages/ appears to support .pth files
    running bdist_egg
    running egg_info
    writing RPi.GPIO.egg-info/PKG-INFO
    writing top-level names to RPi.GPIO.egg-info/top_level.txt
    writing dependency_links to RPi.GPIO.egg-info/dependency_links.txt
    reading manifest file ‘RPi.GPIO.egg-info/SOURCES.txt’
    reading manifest template ‘MANIFEST.in’
    writing manifest file ‘RPi.GPIO.egg-info/SOURCES.txt’
    installing library code to build/bdist.linux-armv6l/egg
    running install_lib
    running build_py
    creating build
    creating build/lib.linux-armv6l-2.7
    creating build/lib.linux-armv6l-2.7/RPi
    copying RPi/__init__.py -> build/lib.linux-armv6l-2.7/RPi
    running build_ext
    building ‘RPi.GPIO’ extension
    creating build/temp.linux-armv6l-2.7
    creating build/temp.linux-armv6l-2.7/source
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c source/py_gpio.c -o build/temp.linux-armv6l-2.7/source/py_gpio.o
    source/py_gpio.c:23:20: fatal error: Python.h: No such file or directory
    compilation terminated.
    error: command ‘gcc’ failed with exit status 1

  22. @rno says:

    Voila la version de Python installée :

    [email protected] ~/RPi.GPIO-0.3.1a $ python
    Python 2.7.3 (default, Jan 13 2013, 11:20:46)
    [GCC 4.6.3] on linux2

  23. Kyar says:

    Salut, je te remercie tout d’abord pour ce tuto très bien fait, et je me posais une question : peut-on relier toutes les masses ensemble? C’est à dire relier les fils entre eux et les souder ? (sur le schéma il y’a 3 fil noir qui vont à la masse sans le fil de la résistance variable)
    C’est à dire souder les trois fils entre eux et souder le tout à un fil qui va à la masse.
    J’essaye de me débrouiller pour tout souder au maximum et de me passer de la plaque pour une utilisation nomade.

    Je te remercie d’avance

  24. kayoss says:

    bonjour
    est ce que le même schéma de câblage est utilisé pour le RGB backlight negative LCD 16×2 + extras
    http://www.adafruit.com/products/399

    je vous remercie en avance

  25. michael says:

    bonjour

    merci pour le tuto

    Je l’ai suivi a la lettre, cependant, l’écran est bien allumé, mais rien ne s’affiche dessus..

    J’ai vérifier les branchements, il me semble bon, et le programme en python s’execute sans me donnez d’erreur.. 🙁

    une idée ?

  26. michael says:

    bon.. pas de potentiometre..

    est-ce que la valeur de la résistance relié au pin 15 de l’ecran peut jouer sur le fait que rien ne s’affiche ?

    le programme s’excécute bien.. il me demande bien de presser enter si je veux sortir, et aucune erreur de ce coté..

    je ne comprends pas….
    (j’ai tester deux lcd différent.. donc forcément je commence a me dire que le problème vient de moi.. mais je ne vois pas ou..)

  27. michael says:

    et a bien regarder, je n’ai jamais de carré afficher sur le lcd..

  28. Fred says:

    Bonjour,
    (désolé je découvre )
    j’ai une question, j’ai suivi ton tuto mais je n’arrive pas à lancer le code python.
    à chaque fois ça me marque “command not found”
    j’immagine que c’est un probleme de librairie ?
    je pense avoir bien installer le RPi-GPIO tout à l’air de bien se passer.

    j’ai donc créer le fichier test.py avec la commande
    sudo nano test.py et j’ai collé ton code à l’intérieur.
    l’emplacement du fichier test.py à une incidence ?

    • Fred says:

      Finalement j’ai réussi, je lançais la commande n’importe comment ^^

      Par contre je trouve le rétroéclairage un peu trop fort, peut on mettre un autre potentiometre sur le pin 15 du lcd pour faire varier la luminosité ?

  29. RogerS says:

    Bonjour
    j’ai tenté d’utiliser ton code mais j’ai un soucis dans les premières lignes
    j’ai nomé le fichier python affiche_1602.py
    voici les messages d’erreurs :

    il doit y avoir un soucis de déclaration de variables path dans python ?
    merci par avance

    [email protected] ~/tests $ sudo ./affiche_1602.py
    ./affiche_1602.py: 9: ./affiche_1602.py: import: not found
    ./affiche_1602.py: 10: ./affiche_1602.py: import: not found
    from: can’t read /var/mail/time
    ./affiche_1602.py: 12: ./affiche_1602.py: import: not found
    ./affiche_1602.py: 17: ./affiche_1602.py: Syntax error: “(” unexpected

  30. RogerS says:

    Et il faut utiliser quel shell alors ?
    j’ai installé la dernière version de rabian sur mon raspberry

    merci par avance

  31. maq says:

    Bonjour,

    Merci pour tes tutos
    J’ai câblé l’afficheur HD44780, j’ai uniquement la première ligne de l’afficheur ou on peut voir les carré noir.
    Lorsque j’exécute le script aucune erreur n’apparaît mais l’afficheur affiche toujours une ligne de carré noir, c’est tout.

    Mon câblage est strictement identique à celui présenter plus haut, d’ou vient le problème ?

  32. Pierre says:

    Tout d’abord merci pour ce tuto.

    Je l’avais suivi sans problème il y a quelques mois. Mais j’ai dû recommencé avec un autre écran LCD (similaire au précédent). Et là j’ai un problème de contraste.
    Mon schema est celui sans potentio. Peut-être qu’avec ce nouvel écran LCD j’ai besoin d’en mettre un.
    Mais dans ton schéma n°2 je ne vois pas clairement où il se place et où se relie la pin 3

    Merci infiniment de ton aide. Je suis vraiment coincé et j’en ai vraiment besoin !

  33. Pierre says:

    Merci pour ce tuto

    Je l’avais suivi une 1ere fois, sans souci.
    Mais je le refais avec un nouveau mais identique LCD et j’ai un problème de contraste.

    Je vais essayer la version avec potentiomètre mais je ne vois pas bien où il se met (quel trou exactement-)

    Bon c’est un peu ancien mais merci beaucoup pour ton aide !

  34. Pierre says:

    Merci !

    A vrai dire, je m’y perds et pardon de te solliciter.

    Pour un travail artistique, j’ai besoin de relier mon RPI à un afficheur et d’y faire tourner un script python.

    J’ai donc suivi ton tuto (merci beaucoup). Ça marche plus ou moins or j’ai besoin que cela marche à 100%

    Je suis revenu à mon premier écran LCD donc a priori plus de souci de constraste. Je l’ai testé c’est ok.

    Mais après avoir un peu touché la breadboard, je me décide à lancer une simulation “normale” (c’est pour une expo) et là :
    l’affichage est complètement farfelu : caractères aléatoires, blocs blancs, fond noir… Rien ne marche plus correctement.

    Questions :

    1/ Est-ce qu’à force de manipuler la breadboard (pour cabler/décabler mes différents tests), j’ai pu généré des faux-contacts ?
    2/ Dois-je pour stabiliser le montage remplacer cette breadboard par une plaque soudée (mais comme je n’y connais rien, existe-t-il des plaques à souder où je peux retrouver ton schéma ?)

    BRef comment faire pour que ton super tuto marche à tous les coups chez moi et pas de façon boiteuse ???

    1000 merci, vraiment, car je suis un peu en panique à l’idée de ne pas réussir à faire fonctionner correctement ce travail

  35. Charly says:

    Bonjour a tous, j’ai un petit problème non dans le câblage mais plutot dans le programme je ne vois pas du tout le placer, j’ai bien tout télécharger et installer, crée le fichier “test.py” mais rien ne sa passe :/ auriez vs une solution merci ^^.

  36. Charly says:

    Merci ça marche parfaitement, c’est toi qui à fait le programme python ?

  37. Simon says:

    Bonjour,
    Merci pour la tuto qui est niquel 🙂
    J’ai cependant un problème :

    J’ai suivi exactement le câblage mais après exécution du script , rien ne se passe mon écran reste dans l’état de ta 4ème photo avec une ligne noire.
    J’ai essayé de jouer avec le contraste mais cela me fais juste changer le contraste.
    Aurai-tu une idée pour mon cas ?

    Merci

  38. Raf says:

    Bonjour,

    Je debute en manip 🙂 c’est trop top !! je m’eclate comme un fou 🙂

    J’ai suivi le tuto ca marche nikel !! trop content de moi 😉 mais ca m’affiche n’iumporte quoi :/ je sais pas pourquoi 🙁
    On voit bien que ca change mais les carateres sont n’importe quoi .. sniff je cherche ..

    Merci

Leave a Reply

Your email address will not be published. Required fields are marked *