RASP-LCD-RGB-Utiliser

De MCHobby - Wiki
Révision datée du 31 décembre 2016 à 14:31 par Admin (discussion | contributions) (→‎En détails)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ajustage Du Contraste

La platine utilise un LCD alphanumérique avec un potentiomètre de contraste externe. La première fois que vous l'utiliserez, ajustez le potentiomètre dans le coin inférieur droit jusqu'à ce que vous puissiez lire correctement le texte. Si le code n'est pas encore chargé dans le Pi, quelques rectangles peuvent apparaître à la place, ou vous pourriez ne rien voir du tout.

Préparer votre Pi pour l'I2C

Pour une introduction plus complète sur l'installation de I2C sur votre Pi vous pouvez faire un détour par notre tutoriel sur I2C.

Si vous avez installé Occidentalis, vous pouvez passer cette séquence. Pour les utilisateurs de Raspbian, éditez le fichier /etc/modules (sudo nano /etc/modules) et ajoutez y :

i2c-bcm2708
i2c-dev

à la fin du fichier. Ensuite, sauvegardez et redémarrez le système pour activer le pilote du matériel (hardware) I2C.

Avant de démarrer avec I2C sur le Pi, vous devrez effectuer quelques opération en ligne de commande (sur la console). Entrez les commandes suivantes pour ajouter le support SMBus à Python (le support SMBus comprend I2C) :

sudo apt-get install python-smbus
sudo apt-get install i2c-tools

i2c-tools n'est pas vraiment nécessaire, mais c'est un paquet très utile pour rechercher les périphériques I2C ou SMBus reliés à votre Pi. Si vous avez un périphérique I2C connecté mais que vous n'en connaissez pas l'adresse (une adresse I2C à 7-bits), ce paquet dispose d'un outil qui vous aidera à la trouver :

sudo i2cdetect -y 0 (si vous utilisez une version 1 de Raspberry Pi)
sudo i2cdetect -y 1 (si vous utilisez une version 2 de Raspberry Pi)

 
Crédit: AdaFruit Industries www.adafruit.com

Cette commande va rechercher toutes les adresses utilisées sur /dev/i2c-0 ou /dev/i2c-1. Si votre kit RGB LCD d'Adafruit y est connecté, vous devriez voir 0x20 affiché dans les résultats. 0x20 est l'adresse du kit sur le bus I2C.

Lorsque ces deux paquets sont installés, vous disposez de tout le nécessaire pour démarrer et accéder aux périphériques I2C (et SMBus) en Python.

Utiliser un exemple de code Python

Le code Python de la platine LCD pour Pi est disponible à Github à https://github.com/adafruit/Adafruit_Python_CharLCD.

Notez qu'Adafruit à fait une mise-à-jour des bibliothèques ce qui permet de l'installer séparément des autre code mettant en oeuvre des afficheurs LCD. Si vous recherchez l'ancienne bibliothèque vous pouvez toujours la trouver ici sur ce GitHub. Pour les nouveaux projets, nous recommandons d'utiliser la nouvelle bibliothèque décrite ici.

La meilleure façon de charger ce code pour votre Pi est de connecter un câble Ethernet, et d'utiliser la procédure d'installation décrite ci-dessous.

Par défaut, Git est installé sur la plupart des distributions. Lancez simplement les commandes suivantes depuis un répertoire approprié (ex. "/home/pi"):

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip git
sudo pip install RPi.GPIO
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
cd Adafruit_Python_CharLCD
sudo python setup.py install

Tester la bibliothèque

Une fois le code téléchargé et que la carte est correctement connectée sur votre Pi, vous pouvez démarrer une petite démo en exécutant simplement le script char_lcd_plate.py disponible dans le répertoire examples:

cd examples
sudo python char_lcd_plate.py

Cet exemple active le rétro-éclairage et affiche différente couleurs RGB (Si vous utilisez un afficheur monochrome il est normal de voir l'écran monochrome s'allumer et s'éteindre) puis vous demande de presser les boutons. Le nom du bouton est affiché sur l'écran lorsque vous pressez dessus (la couleur du rétro-éclairage change également).

Essayez de presser les différents boutons de la carte.

Presser Ctrl-C pour quitter le programme.

Ajuster le contraste

La carte utilise un afficheur LCD avec un potentiomètre de réglage de contraste externe. La première fois que vous l'utilisez, il faudra ajuster le contraste jusqu'à ce que vous voyez clairement l'affichage du texte sur l'écran LCD. Si vous n'avez pas encore téléchargé le code sur votre Pi alors l'écran affichera des carrés... ou peut être rien du tout.

Utiliser le code de la bibliothèque

Jetez un petit coup d'oeil au contenu du fichier char_lcd_plate.py pour voir l'usage de la classe LCD. L'utilisation de base se résume à importer la bibliothèque et créer une instance de la classe Adafruit_CharLCDPlate . La classe est suffisamment intelligente pour savoir comment dialoguer avec l'afficheur LCD dans avoir besoin de configuration ou paramètres complémentaires.

Une fois l'instance de la classe Adafruit_CharLCDPlate créée, il y a quelques fonctions utiles pour interagir avec l'afficheur:

message(text)

Affiche le texte sur l'afficheur. La chaine de caractère peut inclure un retour à la ligne ('\n'). L'afficheur LCD déplacera le curseur du LCD à la ligne suivante lorsque ce caractère est rencontré.

clear()

Efface l'écran et réinitialise la position du curseur en haut à gauche (emplacement où démarrera l'affichage du prochain message).

set_color(red, green, blue)

Fixe l'état du rétro-éclairage pour les couleurs rouge (red), verte (green) et bleue (blue). Chaque couleur peut recevoir une valeur 1 pour allumer la LED (et 0 pour l'éteindre).

Par exemple, pour afficher un rétro-éclairage rouge, il faut appeler set_color(1,0,0) ou en pourpre il faut appeler set_color(1,0,1) .

Vous trouverez You can find a more detailed write-up of the library in this character LCD guide (see the Usage and Raspberry Pi Char LCD Plate pages).

En détails

La première chose à faire est de créer une instance de la classe Adafruit_CharLCDPlate . La classe sait comment dialoguer avec la carte d'extension, le constructeur de la classe est préconfiguré pour la carte LCD.

# Initialise le LCD en utilisant le bonne broches 
lcd = LCD.Adafruit_CharLCDPlate()

La seconde différence dans Adafruit_CharLCDPlate est l'ajout d'une fonction qui permet de tester les boutons qui sont pressés. Voyez dans le code d'exemple ci-dessous les différents appels à la fonction is_pressed pour tester chacun des boutons. La fonction is_pressed retourne True si le bouton est pressé.

Cette bibliothèque n'utilise pas la gestion par des interruptions, vous n'aurez donc pas de signal d’interruption lorsqu'un bouton sera pressé. Vous devrez créer une boucle et interroger régulièrement l'état des boutons pour savoir si l'un d'entre eux pressé.

Par exemple, pour tester si le bouton de sélection "select" est pressé, nous utilisation vous pouvez appeler is_presssed(LCD.SELECT), pour tester le bouton droit ("right" en anglais) nous utiliserons alors is_pressed(LCD.RIGHT).

# Faire une liste avec valeur_de_bouton + texte + couleur_retro_eclairage.
buttons = ( (LCD.SELECT, 'Select', (1,1,1)),
            (LCD.LEFT,   'Left'  , (1,0,0)),
            (LCD.UP,     'Up'    , (0,0,1)),
            (LCD.DOWN,   'Down'  , (0,1,0)),
            (LCD.RIGHT,  'Right' , (1,0,1)) )

print 'Press Ctrl-C to quit.'
while True:
	# Passer chaque bouton en revue pour 
        # voir s'il est pressé
	for button in buttons:
		if lcd.is_pressed(button[0]):
			# SI le bouton est presse ALORS chager le message et le retro-eclairage.
			lcd.clear()
			lcd.message(button[1])
			lcd.set_color(button[2][0], button[2][1], button[2][2])

Une note finale: comme pour l'implémentation du LCD avec un MCP230xx (un GPIO extender), il n'est pas possible de contrôler le rétro-éclairage en PWM!


Un petit rappel: pour interroger la platine et savoir quel bouton a été pressé, il faut utiliser buttonPressed(lcd.NOM_DU_BOUTON_EN_ANGLAIS) où NOM_DU_BOUTON_EN_ANGLAIS est:

  • LEFT pour gauche
  • RIGHT pour droite
  • UP pour haut
  • DOWN pour bas
  • SELECT pour le bouton de sélection.

Voila, c'est terminé!

Si vous désirez afficher des messages élaborés, utilisez la commande Python permettant la création de chaine de caractères et écrivez cette chaine avec message()



Source: Adafruit 16x2 Character LCD + Keypad for Raspberry Pi écrit par LadyAda pour AdaFruit. Crédit AdaFruit Industries
Réalisé avec l'aide de Mr Carette J. à qui nous remettons tous nos remerciements.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com