Modifications

Sauter à la navigation Sauter à la recherche
6 765 octets ajoutés ,  2 janvier 2017 à 11:53
Ligne 1 : Ligne 1 :  
{{LCD-USB-TTL-NAV}}
 
{{LCD-USB-TTL-NAV}}
 
== Intro ==
 
== Intro ==
{{bloc-étroit|text=Comme vous l'avez dans les autres sections du tutoriel, le LCD peut être utilisé avec un PC/Mac (port USB) ou un Arduino (en liaison série) .
+
{{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 qu'il est aussi possible d'utiliser l'afficheur directement sur un Raspberry-Pi :-) }}
+
Sachez que cet afficheur est utilisable tout aussi facilement sur un Raspberry-Pi :-).
   −
== Détecter ==
+
La compatibilité est assurée pour Pi B, Pi-B PLUS et '''Raspberry Pi-2'''. }}
 +
 
 +
[[Fichier:LCD-USB-TTL-Raspberry-00a.jpg|640px]]
 +
 
 +
== Détecter le périphérique ==
 
# 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.
   −
[[Fichier:LCD-USB-TTL-Raspberry-00.jpg|640px]]
+
[[Fichier:LCD-USB-TTL-Raspberry-00.jpg|480px]]
 +
 
 +
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
 +
 
 +
<nowiki>ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 > /dev/ttyACM0</nowiki>
 +
 
 +
Si vous trouvez cela intéressant, vous [[Rasp-Hack-Afficheur-LCD-InitScript|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.
 +
 
 +
<syntaxhighlight lang="python">
 +
f = open( '/dev/ttyACM0', 'w' )
 +
f.write('I LOVE MON\nRASPBERRY PI')
 +
f.flush()
 +
f.close()
 +
</syntaxhighlight>
 +
 
 +
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.
 +
 
 +
[[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}}
29 910

modifications

Menu de navigation