Modifications

Sauter à la navigation Sauter à la recherche
3 250 octets ajoutés ,  31 décembre 2016 à 14:31
Ligne 6 : Ligne 6 :  
== Préparer votre Pi pour l'I2C ==
 
== Préparer votre Pi pour l'I2C ==
   −
Pour une introduction plus complète sur l'installation de I2C sur votre Pi vous pouvez [[Rasp-Hack-GPIO Configurer I2C faire un détour par notre tutoriel sur I2C]].
+
Pour une introduction plus complète sur l'installation de I2C sur votre Pi vous pouvez [[Rasp-Hack-GPIO Configurer I2C|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 :
 
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 :
   −
<nowiki>i2c-bcm2708
+
<nowiki>i2c-bcm2708
i2c-dev
+
i2c-dev</nowiki>
</nowiki>
      
à la fin du fichier. Ensuite, sauvegardez et redémarrez le système pour activer le pilote du matériel (hardware) I2C.
 
à la fin du fichier. Ensuite, sauvegardez et redémarrez le système pour activer le pilote du matériel (hardware) I2C.
Ligne 18 : Ligne 17 :  
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) :
 
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) :
   −
<nowiki>sudo apt-get install python-smbus
+
<nowiki>sudo apt-get install python-smbus
sudo apt-get install i2c-tools
+
sudo apt-get install i2c-tools</nowiki>
</nowiki>
      
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 :
 
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 :
   −
<nowiki>sudo i2cdetect -y 0 (si vous utilisez une version 1 de Raspberry Pi)
+
<nowiki>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)
+
sudo i2cdetect -y 1 (si vous utilisez une version 2 de Raspberry Pi)</nowiki>
</nowiki>
     −
[[Fichier:RASP-LCD-RGB-Use-01.jpg]]
+
{{ADFImage|RASP-LCD-RGB-Use-01.jpg}}
   −
Cette commande va rechercher toutes les adresses de /dev/i2c-0 ou /dev/i2c-1, et si un projet LCD d'Adafruit est connecté, il devrait afficher '''0x20'''
+
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 'packages' 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.
+
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 ==
 
== Utiliser un exemple de code Python ==
   −
Le code Python de la platine LCD pour Pi est disponible à Github à [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code].
+
Le code Python de la platine LCD pour Pi est disponible à Github à [https://github.com/adafruit/Adafruit_Python_CharLCD https://github.com/adafruit/Adafruit_Python_CharLCD].
   −
La meilleure façon de rechercher le code pour votre Pi est de connecter un câble Ethernet, et de le copier directement en utilisant  'git', qui est installé, par défaut, avec la plupart des distributions. Lancez simplement les commandes suivantes d'un compte approprié (ex. "/home/pi"):
+
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 [https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_CharLCDPlate la trouver ici sur ce GitHub]. Pour les nouveaux projets, nous recommandons d'utiliser la nouvelle bibliothèque décrite ici.
   −
<nowiki>
+
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.
sudo apt-get install git
+
 
git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git
+
Par défaut, Git est installé sur la plupart des distributions. Lancez simplement les commandes suivantes depuis un répertoire approprié (ex. "/home/pi"):
cd Adafruit-Raspberry-Pi-Python-Code
+
 
cd Adafruit_CharLCDPlate
+
<nowiki>sudo apt-get update
</nowiki>
+
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</nowiki>
    
== Tester la bibliothèque ==
 
== 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''':
   −
Une fois le code chargé dans un répertoire approprié, et la platine LCD correctement connectée, vous pouvez démarrer la démo de base de l'afficheur, qui démarre en exécutant ce fichier de la bibliothèque :
+
<nowiki>cd examples
 +
sudo python char_lcd_plate.py</nowiki>
   −
<nowiki>
+
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).
sudo python Adafruit_CharLCDPlate.py
  −
</nowiki>
     −
Si vous disposez d'un Pi rev 2 (512MB), ou si vous n'obtenez pas d'affichage du tout, cela peut-être dû à un numéro de bus I2C changé dans le hardware du Pi. Éditez le fichier Adafruit_CharLCD.py avec un utilitaire comme nano : "nano Adafruit_CharLCD.py" et changez la ligne :
+
Essayez de presser les différents boutons de la carte.
   −
lcd = Adafruit_CharLCDPlate(busnum = 0)
+
Presser Ctrl-C pour quitter le programme.
   −
pour
+
== 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.
   −
lcd = Adafruit_CharLCDPlate(busnum = 1)
+
== 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:
   −
== Utiliser le code de la bibliothèque ==
+
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 {{fname|set_color(1,0,0)}} ou en pourpre il faut appeler {{fname|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.
 +
 
 +
<syntaxhighlight lang="python">
 +
# Initialise le LCD en utilisant le bonne broches
 +
lcd = LCD.Adafruit_CharLCDPlate()
 +
</syntaxhighlight>
 +
 
 +
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 {{fname|is_pressed}} pour tester chacun des boutons. La fonction {{fname|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 {{fname|is_presssed(LCD.SELECT)}}, pour tester le bouton droit ("right" en anglais) nous utiliserons alors {{fname|is_pressed(LCD.RIGHT)}}.
 +
 
 +
<syntaxhighlight lang="python">
 +
# 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)) )
   −
Interfacer un code d'exemple avec python est très simple! Dans le dossier Adafruit_CharLCDPlate vous trouverez le fichier en script Python '''testLCD.py'''. Ce script effectue un ensemble de choses, le plus important, il importe tous les sous-modules. Vous aurez besoin des fichiers '''Adafruit_I2C.py''', '''Adafruit_MCP230xx.py''' et '''Adafruit_CharLCDPlate.py''' situés dans le même répertoire, copiez les dans votre destination finale.
+
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])
 +
</syntaxhighlight>
   −
Ensuite, on initialise la platine par '''lcd = Adafruit_CharLCDPlate()''' - cela crée un 'objet' lcd et entame la communication avec la platine et règle le LCD et les boutons.
+
Une note finale: comme pour [[Rasp-Hack-Afficheur-LCD|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!
   −
Après l'initialisation, vous pouvez nettoyer l'afficheur à l'aide de '''lcd.clear()''' et écrire du texte avec '''lcd.message("le texte doit être ici")'''  n'oubliez pas seulement 16 caractères par ligne, et elle n'effectue pas de retour à la ligne automatiquement. Pour insérer le caractère 'newline' utilisez le caractère spécial '\n' comme dans la commande :  '''lcd.message("Adafruit RGB LCD\nPlate w/Keypad!")'''.
     −
Ensuite, vous pouvez gérer le rétroéclairage avec  '''lcd.backlight(lcd.COLORNAME)''' où '''COLORNAME''' est remplacé par RED, YELLOW, GREEN, TEAL, BLUE, VIOLET pour les LCD's RGB mais pour les LCD's  monochromes, utiliser seulement ON et OFF.
+
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.  
   −
Finallement, vous pouvez interroger la platine pour connaître quel bouton a été pressé par '''buttonPressed(lcd.BUTTONNAME)''' où BUTTONNAME est '''LEFT RIGHT UP DOWN''' ou  '''SELECT'''. Cette bibliothèque n'utilise pas la gestion par des interruptions donc vous n'aurez pas d'indication par 'interrupt go off' lorsqu'un bouton sera pressé, vous devrez créer une boucle d'interrogation pour connaître quel est le bouton pressé.
+
Voila, c'est terminé!
   −
C'est terminé! Si vous désirez élaborer des messages détaillés, [http://www.diveintopython.net/native_data_types/formatting_strings.html utilisez la commande de création de chaîne en Python] et écrivez cette chaîne avec '''message()'''
+
Si vous désirez afficher des messages élaborés, [http://www.diveintopython.net/native_data_types/formatting_strings.html utilisez la commande Python permettant la création de chaine de caractères] et écrivez cette chaine avec '''message()'''
       
{{RASP-LCD-RGB-TRAILER}}
 
{{RASP-LCD-RGB-TRAILER}}
29 917

modifications

Menu de navigation