Modifications

Sauter à la navigation Sauter à la recherche
4 490 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]]
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 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.
   −
<nowiki>f = open( '/dev/ttyACM0', 'w' )
+
<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()</nowiki>
+
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}}
29 836

modifications

Menu de navigation