Différences entre versions de « LCD-USB-TTL-Raspberry »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 180 : Ligne 180 :
 
do_lcd_matrix_test()
 
do_lcd_matrix_test()
 
</nowiki>
 
</nowiki>
 
{{traduction}}
 
  
 
=== Test de bas niveau - matrixtest.py ===
 
=== Test de bas niveau - matrixtest.py ===

Version du 7 février 2015 à 10:30


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

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 :-)

LCD-USB-TTL-Raspberry-00a.jpg

Détecter le périphérique

  1. Ouvrez une console sur votre Raspberry-Pi.
  2. Branchez l'afficheur LCD dans le port USB
  3. Tapez ensuite la commande dmesg

Vous verrez alors apparaître le périphérique sur lequel vous avez branché l'afficheur.

LCD-USB-TTL-Raspberry-00.jpg

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.

LCD-USB-TTL-Raspberry-10.jpg

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.