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:

72 thoughts on “RaspBerry Pi et afficheur LCD Hitachi HD44780 1602 [PART 2]

  • October 16, 2012 at 4:03 pm
    Permalink

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

    Reply
    • October 17, 2012 at 7:44 pm
      Permalink

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

      Reply
      • March 20, 2013 at 12:36 pm
        Permalink

        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.

        Reply
        • March 21, 2013 at 9:16 am
          Permalink

          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” 🙂

          Reply
  • Pingback:Raspberry PI ~ 11 : Relier à un écran et afficher du texte | IdleBlog

  • December 17, 2012 at 9:19 pm
    Permalink

    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

    Reply
    • December 18, 2012 at 11:43 am
      Permalink

      Essaye de mettre une petite resistance (330ohms par exemple) a la place du potentiometre et dis moi ce que ca fait

      Reply
  • December 18, 2012 at 4:12 pm
    Permalink

    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

    Reply
    • December 18, 2012 at 5:14 pm
      Permalink

      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

      Reply
  • December 20, 2012 at 2:07 pm
    Permalink

    Bravo a toi 🙂

    Reply
  • Pingback:Raspberry | DJERFY

  • January 4, 2013 at 6:30 pm
    Permalink

    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 😀

    Reply
    • January 4, 2013 at 10:18 pm
      Permalink

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

      Reply
      • April 5, 2013 at 4:01 pm
        Permalink

        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

        Reply
  • April 5, 2013 at 4:10 pm
    Permalink

    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 !

    Reply
    • April 12, 2013 at 11:08 am
      Permalink

      pas de quoi 🙂

      Reply
    • October 27, 2013 at 9:58 pm
      Permalink

      Je galère pour afficher mon adresse IP, pourrais-tu me dire comment tu as fait ?

      Merci !

      Valentin

      Reply
  • April 16, 2013 at 10:20 pm
    Permalink

    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

    Reply
    • April 17, 2013 at 11:37 am
      Permalink

      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.

      Reply
  • May 27, 2013 at 6:59 pm
    Permalink

    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

    Reply
    • May 27, 2013 at 8:26 pm
      Permalink

      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 ?

      Reply
  • May 27, 2013 at 9:47 pm
    Permalink

    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 !

    Reply
  • Pingback:Faire de son Raspberry Pi une Web Radio | StefTech

  • August 30, 2013 at 1:25 pm
    Permalink

    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

    Reply
    • September 3, 2013 at 12:51 pm
      Permalink

      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 ?

      Reply
  • September 11, 2013 at 12:33 pm
    Permalink

    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 ?

    Reply
  • September 12, 2013 at 12:59 pm
    Permalink

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

    Reply
    • September 13, 2013 at 2:03 pm
      Permalink

      Il existe des mini breadboards. Sinon vous pouvez utiliser des plaques à pastilles

      Reply
  • September 14, 2013 at 8:20 pm
    Permalink

    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

    Reply
  • September 16, 2013 at 1:31 pm
    Permalink

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

    Reply
    • September 18, 2013 at 12:09 am
      Permalink

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

      Reply
      • April 23, 2016 at 1:14 pm
        Permalink

        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

        Reply
        • May 16, 2016 at 8:41 pm
          Permalink

          Je pense que tu devrais installer python 2.7

          Reply
  • January 25, 2014 at 5:17 pm
    Permalink

    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.

    Reply
    • January 26, 2014 at 11:15 am
      Permalink

      Quel est le header de ton fichier python ?

      Reply
      • January 26, 2014 at 2:47 pm
        Permalink

        c’est lemême que dans le script proposé :

        #!/usr/bin/python

        ############################
        # Imports #
        ############################
        import threading
        import RPi.GPIO as GPIO
        from time import sleep
        import subprocess

        Reply
        • January 27, 2014 at 12:08 pm
          Permalink

          mmm je vois pas :/
          tu as bien installé tous les modules ?

          Reply
          • January 28, 2014 at 9:17 am
            Permalink

            Ouu, j’ai suivi le tuto à la lettre. Je vais réinstaller l’ensemble sur un OS tout frais pour voir.
            Merci quand même.
            A. P

  • January 28, 2014 at 7:36 pm
    Permalink

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

    pi@ArnoPi ~/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

    Reply
  • January 28, 2014 at 7:38 pm
    Permalink

    Voila la version de Python installée :

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

    Reply
    • January 29, 2014 at 11:35 am
      Permalink

      j’utilisai un 2.7.1 mais je sais pas si ca peut jouer :/

      Reply
  • April 18, 2014 at 11:26 pm
    Permalink

    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

    Reply
    • April 22, 2014 at 2:21 pm
      Permalink

      Oui tu peux relier toutes les masses entre elles, il faut juste qu’elles soient reliées à la masse de l’arduino

      Reply
    • June 2, 2014 at 7:09 pm
      Permalink

      Je ne dispose pas de ce module mais je pense qu’ils fonctionnent tous à peu prêt de la même manière

      Reply
  • August 5, 2014 at 1:12 pm
    Permalink

    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 ?

    Reply
    • August 8, 2014 at 11:00 am
      Permalink

      Supprime le potentiometre si tu en as mis un et cela devrait aller

      Reply
  • August 28, 2014 at 5:11 pm
    Permalink

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

    Reply
  • August 28, 2014 at 7:17 pm
    Permalink

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

    Reply
  • November 8, 2014 at 10:18 pm
    Permalink

    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 ?

    Reply
    • November 9, 2014 at 11:14 am
      Permalink

      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é ?

      Reply
  • February 15, 2015 at 10:52 am
    Permalink

    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

    pi@rogers-raspberry ~/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

    Reply
    • February 18, 2015 at 1:33 pm
      Permalink

      Le shell utilisé ne doit pas etre le bon.

      Reply
  • February 21, 2015 at 11:25 pm
    Permalink

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

    merci par avance

    Reply
  • April 4, 2015 at 7:22 pm
    Permalink

    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 ?

    Reply
  • August 21, 2015 at 11:58 am
    Permalink

    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 !

    Reply
  • August 21, 2015 at 12:24 pm
    Permalink

    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 !

    Reply
    • August 21, 2015 at 5:47 pm
      Permalink

      Si je retrouve mon montage je t enverrai des photos.

      Reply
  • August 22, 2015 at 2:31 pm
    Permalink

    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

    Reply
  • September 12, 2015 at 3:02 pm
    Permalink

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

    Reply
    • September 17, 2015 at 11:59 am
      Permalink

      il suffit de l’executer en faisant:
      chmod +x test.py
      ./test.py

      Reply
  • September 18, 2015 at 5:42 pm
    Permalink

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

    Reply
  • February 3, 2016 at 11:35 am
    Permalink

    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

    Reply
    • February 14, 2016 at 11:33 am
      Permalink

      la connectique est elle correcte ?

      Reply
  • November 30, 2016 at 10:16 pm
    Permalink

    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

    Reply
    • December 8, 2016 at 12:16 pm
      Permalink

      Cela ressemble a un probleme de cablage. Pourriez vous vérifier vos connexions

      Reply
  • December 10, 2016 at 10:05 am
    Permalink

    Oui c’etais bien ca .. 🙂

    MErci

    Reply

Leave a Reply

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