Différences entre versions de « LCD-USB-TTL-Raspberry »
(15 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{LCD-USB-TTL-NAV}} | {{LCD-USB-TTL-NAV}} | ||
== Intro == | == Intro == | ||
− | {{bloc-etroit|text=Comme vous | + | {{bloc-etroit|text=Comme vous pouvez le lire dans les autres sections du tutoriel, le LCD peut être facilement utilisé avec un PC/Mac (port USB), tout ce qui dispose d'un port série (ex: un Arduino). |
− | Sachez | + | Sachez que cet afficheur est utilisable tout aussi facilement sur un Raspberry-Pi :-). |
+ | |||
+ | La compatibilité est assurée pour Pi B, Pi-B PLUS et '''Raspberry Pi-2'''. }} | ||
[[Fichier:LCD-USB-TTL-Raspberry-00a.jpg|640px]] | [[Fichier:LCD-USB-TTL-Raspberry-00a.jpg|640px]] | ||
Ligne 11 : | Ligne 13 : | ||
# Ouvrez une console sur votre Raspberry-Pi. | # Ouvrez une console sur votre Raspberry-Pi. | ||
# Branchez l'afficheur LCD dans le port USB | # Branchez l'afficheur LCD dans le port USB | ||
− | # Tapez ensuite la commande ''dmesg'' | + | # Tapez ensuite la commande '''dmesg''' |
Vous verrez alors apparaître le périphérique sur lequel vous avez branché l'afficheur. | Vous verrez alors apparaître le périphérique sur lequel vous avez branché l'afficheur. | ||
Ligne 21 : | Ligne 23 : | ||
Il s'agit ici de '''/dev/ttyACM0''' | Il s'agit ici de '''/dev/ttyACM0''' | ||
− | == Test | + | == Test en script == |
Le test le plus simple c'est d'envoyer des caractères directement sur la liaison série... et vous aurez la surprise de les voir arrivés sur l'afficheur. | Le test le plus simple c'est d'envoyer des caractères directement sur la liaison série... et vous aurez la surprise de les voir arrivés sur l'afficheur. | ||
Ligne 54 : | Ligne 56 : | ||
Une fois minicom démarré, tout ce que vous taperez au clavier apparaîtra sur l'afficheur LCD. | Une fois minicom démarré, tout ce que vous taperez au clavier apparaîtra sur l'afficheur LCD. | ||
− | == Test Python == | + | == Test en Python == |
+ | === Via un fichier === | ||
Il est aussi très facile de contrôler cet afficheur en Python. Il suffit d'ouvrir un fichier sur /dev/ttyACM0 et d'écrire dedans. | Il est aussi très facile de contrôler cet afficheur en Python. Il suffit d'ouvrir un fichier sur /dev/ttyACM0 et d'écrire dedans. | ||
Ligne 62 : | Ligne 65 : | ||
python -i | python -i | ||
− | + | ||
Vous pouvez ensuite saisir les commandes suivantes pour en contrôler l'affichage. | Vous pouvez ensuite saisir les commandes suivantes pour en contrôler l'affichage. | ||
− | + | <syntaxhighlight lang="python"> | |
+ | f = open( '/dev/ttyACM0', 'w' ) | ||
f.write('I LOVE MON\nRASPBERRY PI') | f.write('I LOVE MON\nRASPBERRY PI') | ||
f.flush() | f.flush() | ||
− | f.close()</ | + | f.close() |
+ | </syntaxhighlight> | ||
La fonction flush() force Python à vider la mémoire tampon vers le périphérique (ce qui provoque l'affichage complet). | La fonction flush() force Python à vider la mémoire tampon vers le périphérique (ce qui provoque l'affichage complet). | ||
Ligne 75 : | Ligne 80 : | ||
[[Fichier:LCD-USB-TTL-Raspberry-10.jpg|640px]] | [[Fichier:LCD-USB-TTL-Raspberry-10.jpg|640px]] | ||
+ | |||
+ | ==== Quelques explications ==== | ||
+ | Le \n étant un saut de ligne, ''I LOVE MON'' est affiché sur la première ligne. Puis le reste (derrière le \n) est affiché sur la seconde ligne. | ||
+ | |||
+ | Un petit truc: pour effacer l'écran, le plus simple est de faire un double saut de ligne à l'aide de: | ||
+ | |||
+ | f.write('\n\n') | ||
+ | |||
+ | Ce tutoriel complet reprend également les commandes qui peuvent être envoyées à l'afficheur LCD (voyez le restant du tutoriel). | ||
+ | |||
+ | === Classe LcdMatrix === | ||
+ | Afin de faciliter la prise de contrôle via USB, nous avons développé une classe pouvant être utilisée directement sur Raspberry-Pi et Linux (''pas encore testé sous Windows''). | ||
+ | |||
+ | L'afficheur LCD devient vraiment facile à prendre en main. Cela nous a permis de mettre en oeuvre un support pour les caractères accentués (cfr classe EuropeanLcdMatrix) :-) | ||
+ | |||
+ | Grâce à la classe LcdMatrix, vous pouvez envoyer des ordres directement à l'afficheur LCD en utilisant un code qui devient nettement plus lisible. | ||
+ | |||
+ | Voyez ci-dessous l'exemple [https://github.com/mchobby/lcdmtrx lcdmtrx-WriteTest.py] disponible sur GitHub. Cet exemple se concentre uniquement sur l'affichage, notre bibliothèque propose également des exemples plus avancé (voir la section [[LCD-USB-TTL-Classe-Python|Classes Python]]). | ||
+ | |||
+ | <syntaxhighlight lang="python"> | ||
+ | from lcdmtrx import LcdMatrix | ||
+ | import sys | ||
+ | import time | ||
+ | |||
+ | PORT_SERIE = '/dev/ttyACM0' #identification du port série sur lequel le LCD USB est connecté | ||
+ | |||
+ | LCD_COLS = 16 # Taille du LCD 16 caractères x 2 lignes | ||
+ | LCD_ROWS = 2 | ||
+ | |||
+ | def do_lcd_matrix_test(): | ||
+ | lcd = LcdMatrix( PORT_SERIE ) | ||
+ | |||
+ | # Initialiser la taille du LCD (et sauver dans l'EEPROM) | ||
+ | lcd.set_lcd_size( LCD_COLS, LCD_ROWS ) | ||
+ | lcd.clear_screen() | ||
+ | |||
+ | # Activer/désactiver le rétro-éclairage | ||
+ | lcd.activate_lcd( True ); | ||
+ | |||
+ | # Constrat par défaut | ||
+ | lcd.contrast() | ||
+ | |||
+ | # Luminosité max + couleur RGB | ||
+ | lcd.brightness( 255 ) | ||
+ | |||
+ | # Couleur RBG | ||
+ | lcd.color( 255, 17, 30 ) | ||
+ | |||
+ | # Position d'origine | ||
+ | lcd.clear_screen() | ||
+ | |||
+ | # Auto Scroll | ||
+ | lcd.clear_screen() | ||
+ | lcd.autoscroll( True ) | ||
+ | if (LCD_ROWS == 4): | ||
+ | lcd.write("Voici une longue longue ligne de texte ") | ||
+ | time.sleep(1) | ||
+ | lcd.write("Ajoutons du texte.. ") | ||
+ | time.sleep(1) | ||
+ | lcd.write("Et encore plus....!") | ||
+ | time.sleep(1) | ||
+ | lcd.write(" Et ca scroll! :-)") | ||
+ | if (LCD_ROWS == 2): | ||
+ | lcd.write("Voici du texte..") | ||
+ | time.sleep(1) | ||
+ | lcd.write("Un peu plus....") | ||
+ | time.sleep(1) | ||
+ | lcd.write(" Et ca scroll:-)") | ||
+ | time.sleep(1) | ||
+ | |||
+ | |||
+ | # Tester avec le retour à la ligne | ||
+ | # \r fait un retour à ligne et est insensible à la valeur de autoscroll. | ||
+ | lcd.autoscroll( False ) | ||
+ | lcd.clear_screen() | ||
+ | lcd.write( "Ligne 1\rLigne 2" ) | ||
+ | time.sleep(1) | ||
+ | |||
+ | # Si on ecrit une longue ligne de texte, seul les "x" derniers | ||
+ | # caractères seront affichés sur la ligne du LCD... SANS SAT DE | ||
+ | # LIGNE. Les "y" premiers caractères sont simplement ignorés! | ||
+ | lcd.autoscroll( True ) | ||
+ | if (LCD_ROWS == 4): | ||
+ | lcd.write("Voici une longue longue ligne de texte ") | ||
+ | else: | ||
+ | lcd.write("Voici une longue ligne...") | ||
+ | time.sleep(1) | ||
+ | |||
+ | # Déplacement du curseur | ||
+ | lcd.clear_screen() | ||
+ | lcd.autoscroll( False ) | ||
+ | lcd.position( 1, 1 ) | ||
+ | lcd.write( 'a' ) | ||
+ | lcd.position( 1, LCD_COLS ) | ||
+ | lcd.write( 'b' ) | ||
+ | lcd.position( LCD_ROWS, 1 ) | ||
+ | lcd.write( 'c' ) | ||
+ | lcd.position( LCD_ROWS, LCD_COLS ) | ||
+ | lcd.write( 'd' ) | ||
+ | |||
+ | lcd.writepos( 1, 7, ':-)' ) # Déplacement de curseur + affichage | ||
+ | |||
+ | if __name__ == '__main__': | ||
+ | do_lcd_matrix_test() | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Test de bas niveau - matrixtest.py === | ||
+ | AdaFruit propose un code de test rudimentaire basé sur l'ouverture d'un port série en Python afin d'afficheur LCD + backpack sur GitHub. C'est pratique car vous pouvez créer votre propre code à partir de lui. | ||
+ | |||
+ | |||
+ | Vous pouvez le télécharger directement à l'aide des commandes suivantes que vous entrez dans un terminal: | ||
+ | |||
+ | <nowiki>cd ~ | ||
+ | wget https://raw.githubusercontent.com/adafruit/Adafruit-USB-Serial-RGB-Character-Backpack/master/matrixtest.py</nowiki> | ||
+ | |||
+ | Vous pouvez exécuter l'exemple sur le périphérique que vous avez déjà identifié dans ce tutoriel | ||
+ | |||
+ | python matrixtest.py /dev/ttyACM0 | ||
+ | |||
+ | Note: | ||
+ | Sur un Raspberry-Pi, l'utilisateur à librement accès au périphérique USB. Nous avons néanmoins remarqué que certaines installation Linux (dont "Linux Mint") nécessite l'usage d'un SUDO pour disposer du libre accès. | ||
+ | |||
+ | sudo python matrixtest.py /dev/ttyACM0 | ||
{{LCD-USB-TTL-TRAILER}} | {{LCD-USB-TTL-TRAILER}} |
Version actuelle datée du 2 janvier 2017 à 11:53
Intro
Comme vous pouvez le lire dans les autres sections du tutoriel, le LCD peut être facilement utilisé avec un PC/Mac (port USB), tout ce qui dispose d'un port série (ex: un Arduino).
Sachez que cet afficheur est utilisable tout aussi facilement sur un Raspberry-Pi :-).
La compatibilité est assurée pour Pi B, Pi-B PLUS et Raspberry Pi-2.
Détecter le périphérique
- Ouvrez une console sur votre Raspberry-Pi.
- Branchez l'afficheur LCD dans le port USB
- Tapez ensuite la commande dmesg
Vous verrez alors apparaître le périphérique sur lequel vous avez branché l'afficheur.
Si vous faite attention, vous pouvez voir le nom d'AdaFruit apparaître dans le log et la dernière ligne nous indique le périphérique sous lequel nous pourrons accéder au périphérique.
Il s'agit ici de /dev/ttyACM0
Test en script
Le test le plus simple c'est d'envoyer des caractères directement sur la liaison série... et vous aurez la surprise de les voir arrivés sur l'afficheur.
Tapez donc la commande suivante dans un terminal:
echo "Test MCHobby" > /dev/ttyACM0
Simple et efficace.
Vous pouvez également utiliser toute une série de variante de cette commande pour, par exemple, afficher l'adresse IP du Raspberry sur l'afficheur LCD.
Essayez la commande suivante
ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 > /dev/ttyACM0
Si vous trouvez cela intéressant, vous pouvez vous inpirer de ce tuto pour créer un InitScript qui afficher l'adresse IP au démarrage du Pi.
Test avec Minicom
Vous pouvez aussi tester le périphérique /dev/ttyACM0 comme une simple liaison série. Nous allons utiliser minicom, un programme qui fonctionne également en mode terminal.
Si vous avez travaillez dans une session X, vous pouvez utiliser le programme putty.
Commençons par installer Minicom
sudo apt-get install minicom
Ensuite, vous pouvez tester le LCD en tapant la commande
minicom -b 19200 -o -D /dev/ttyACM0
Une fois minicom démarré, tout ce que vous taperez au clavier apparaîtra sur l'afficheur LCD.
Test en Python
Via un fichier
Il est aussi très facile de contrôler cet afficheur en Python. Il suffit d'ouvrir un fichier sur /dev/ttyACM0 et d'écrire dedans.
Ouvrez une session Python en mode interactif à l'aide de la commande:
python -i
Vous pouvez ensuite saisir les commandes suivantes pour en contrôler l'affichage.
f = open( '/dev/ttyACM0', 'w' )
f.write('I LOVE MON\nRASPBERRY PI')
f.flush()
f.close()
La fonction flush() force Python à vider la mémoire tampon vers le périphérique (ce qui provoque l'affichage complet).
Vous pouvez alors constater le résultat sur l'écran.
Quelques explications
Le \n étant un saut de ligne, I LOVE MON est affiché sur la première ligne. Puis le reste (derrière le \n) est affiché sur la seconde ligne.
Un petit truc: pour effacer l'écran, le plus simple est de faire un double saut de ligne à l'aide de:
f.write('\n\n')
Ce tutoriel complet reprend également les commandes qui peuvent être envoyées à l'afficheur LCD (voyez le restant du tutoriel).
Classe LcdMatrix
Afin de faciliter la prise de contrôle via USB, nous avons développé une classe pouvant être utilisée directement sur Raspberry-Pi et Linux (pas encore testé sous Windows).
L'afficheur LCD devient vraiment facile à prendre en main. Cela nous a permis de mettre en oeuvre un support pour les caractères accentués (cfr classe EuropeanLcdMatrix) :-)
Grâce à la classe LcdMatrix, vous pouvez envoyer des ordres directement à l'afficheur LCD en utilisant un code qui devient nettement plus lisible.
Voyez ci-dessous l'exemple lcdmtrx-WriteTest.py disponible sur GitHub. Cet exemple se concentre uniquement sur l'affichage, notre bibliothèque propose également des exemples plus avancé (voir la section Classes Python).
from lcdmtrx import LcdMatrix
import sys
import time
PORT_SERIE = '/dev/ttyACM0' #identification du port série sur lequel le LCD USB est connecté
LCD_COLS = 16 # Taille du LCD 16 caractères x 2 lignes
LCD_ROWS = 2
def do_lcd_matrix_test():
lcd = LcdMatrix( PORT_SERIE )
# Initialiser la taille du LCD (et sauver dans l'EEPROM)
lcd.set_lcd_size( LCD_COLS, LCD_ROWS )
lcd.clear_screen()
# Activer/désactiver le rétro-éclairage
lcd.activate_lcd( True );
# Constrat par défaut
lcd.contrast()
# Luminosité max + couleur RGB
lcd.brightness( 255 )
# Couleur RBG
lcd.color( 255, 17, 30 )
# Position d'origine
lcd.clear_screen()
# Auto Scroll
lcd.clear_screen()
lcd.autoscroll( True )
if (LCD_ROWS == 4):
lcd.write("Voici une longue longue ligne de texte ")
time.sleep(1)
lcd.write("Ajoutons du texte.. ")
time.sleep(1)
lcd.write("Et encore plus....!")
time.sleep(1)
lcd.write(" Et ca scroll! :-)")
if (LCD_ROWS == 2):
lcd.write("Voici du texte..")
time.sleep(1)
lcd.write("Un peu plus....")
time.sleep(1)
lcd.write(" Et ca scroll:-)")
time.sleep(1)
# Tester avec le retour à la ligne
# \r fait un retour à ligne et est insensible à la valeur de autoscroll.
lcd.autoscroll( False )
lcd.clear_screen()
lcd.write( "Ligne 1\rLigne 2" )
time.sleep(1)
# Si on ecrit une longue ligne de texte, seul les "x" derniers
# caractères seront affichés sur la ligne du LCD... SANS SAT DE
# LIGNE. Les "y" premiers caractères sont simplement ignorés!
lcd.autoscroll( True )
if (LCD_ROWS == 4):
lcd.write("Voici une longue longue ligne de texte ")
else:
lcd.write("Voici une longue ligne...")
time.sleep(1)
# Déplacement du curseur
lcd.clear_screen()
lcd.autoscroll( False )
lcd.position( 1, 1 )
lcd.write( 'a' )
lcd.position( 1, LCD_COLS )
lcd.write( 'b' )
lcd.position( LCD_ROWS, 1 )
lcd.write( 'c' )
lcd.position( LCD_ROWS, LCD_COLS )
lcd.write( 'd' )
lcd.writepos( 1, 7, ':-)' ) # Déplacement de curseur + affichage
if __name__ == '__main__':
do_lcd_matrix_test()
Test de bas niveau - matrixtest.py
AdaFruit propose un code de test rudimentaire basé sur l'ouverture d'un port série en Python afin d'afficheur LCD + backpack sur GitHub. C'est pratique car vous pouvez créer votre propre code à partir de lui.
Vous pouvez le télécharger directement à l'aide des commandes suivantes que vous entrez dans un terminal:
cd ~ wget https://raw.githubusercontent.com/adafruit/Adafruit-USB-Serial-RGB-Character-Backpack/master/matrixtest.py
Vous pouvez exécuter l'exemple sur le périphérique que vous avez déjà identifié dans ce tutoriel
python matrixtest.py /dev/ttyACM0
Note: Sur un Raspberry-Pi, l'utilisateur à librement accès au périphérique USB. Nous avons néanmoins remarqué que certaines installation Linux (dont "Linux Mint") nécessite l'usage d'un SUDO pour disposer du libre accès.
sudo python matrixtest.py /dev/ttyACM0
Tutoriel USB + Serial RGB Backlight Character LCD Backpack créé par Tyler Cooper pour AdaFruit Industries.
Tutoriel traduit et augmenté par Meurisse D. pour MCHobby.be
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com
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.