Modifications

Sauter à la navigation Sauter à la recherche
5 183 octets ajoutés ,  2 janvier 2017 à 11:53
Ligne 1 : Ligne 1 :  
{{LCD-USB-TTL-NAV}}
 
{{LCD-USB-TTL-NAV}}
 
== Intro ==
 
== Intro ==
{{bloc-etroit|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 :-).
 +
 
 +
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]]
   −
== Détecter ==
+
== 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.
Ligne 21 : Ligne 23 :  
Il s'agit ici de '''/dev/ttyACM0'''
 
Il s'agit ici de '''/dev/ttyACM0'''
   −
=== Test simple ===
+
== 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 28 : Ligne 30 :  
  echo "Test MCHobby" >  /dev/ttyACM0
 
  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.
+
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
 
Essayez la commande suivante
Ligne 34 : Ligne 38 :  
  <nowiki>ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 > /dev/ttyACM0</nowiki>
 
  <nowiki>ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 > /dev/ttyACM0</nowiki>
   −
En [[Rasp-Hack-Afficheur-LCD-InitScript|vous inspirant de ce tuto]], vous pourriez créer un InitScript pour afficher l'adresse IP au démarrage du Pi.
+
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 ===
+
== 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.
 
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.
   Ligne 52 : 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.
 +
 
 +
 
 +
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 878

modifications

Menu de navigation