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. |
Ligne 19 : |
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. |
| | | |
| Tapez donc la commande suivante dans un terminal: | | Tapez donc la commande suivante dans un terminal: |
| | | |
− | echo "MCHobby test" > /dev/ttyACM0 | + | echo "Test MCHobby" > /dev/ttyACM0 |
| + | |
| + | Simple et efficace. |
| | | |
− | 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.
| + | 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 32 : |
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 == |
| + | 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}} |