Pilote MicroPython pour 8x7 Segments DFRobot (DFR0646-G ou DFR0646-R)

Bonjour à tous,

Après la documentation du pilote MicroPython pour le "Gravity: 4-Digital LED Segment Display Module" dans l'article précédent.

Cette fois c'est le "Gravity: 8-Digital LED Segment Display Module" de DFRobot qui est à l'honneur.

DFR0646 - displaying "Amigos" text
 

Le DFR0646 propose les caractéristiques suivantes:

  • 8 chiffres
  • 16 niveaux de luminosités
  • Clignotement (0.5, 1, 2 hertz)
  • Chipset VK16K33
  • Couleur multiple (red, green)
  • Expose un connecteur Gravity (pour raccordement rapide)
  • DFR0646

DFR0646 : sous le capot

Ce module 8 digits utilise le chipset VK16K33 qui n'est pas très documenté... et la bibliothèque Arduino proposé par DFRobot (pour les 4 & 8 digits) est juste horreur! Je ne connais aucun programmeur qui pourrait être fier d'une telle production.

Bref, après avoir déniché la fiche technique du VK16K33 chez SparkFun et après un peu de retro-engineering, j'ai reconstitué les informations nécessaires pour comprendre comment les Digits sont contrôlés.

DFR0646 - identification des signaux
Cliquer pour agrandir

Par changes les lignes (rows) du VK16K33 sont toutes raccordées de sorte à activer les mêmes segments (A..G) de chaque digits. Les colonnes (les COMmon) sont elles raccordées séparément sur chaque digits (et dans l'ordre croissant des de gauche à droite).

Et enfin, il ne reste plus qu'à identifier la façon de coder les digits dans la mémoire du VK16K33... ce qui est maintenant relativement simple.

Encodage des segments dans un octets de la RAM du VK16K33

Le raccordement

Il est strictement identique à l'afficheur 4 digits.
Raccorder le module sur le Pico (ou tout autre plateforme MicroPython) est relativement simple.

Source: esp8266-upy/grav-digital-led

Les exemples

Les exemples et raccordements sont identique à la version 4 digits (voir le dépôt)... avec une méthode en plus pour le contrôle de clignotement.

A noter que pour l'afficheur 8 digits, la bibliothèque propose le fichier ledseg8.py et la classe LedSegment8 .
Les contrôleurs étant différent pour la version 4 digits (TM1650) et la version 8 digits (VK16K33), il est préférable d'avoir des implémentations distinctes.

from machine import I2C
from ledseg8 import LedSegment8, VK16K33_BLINK_1HZ, VK16K33_BLINK_2HZ, VK16K33_BLINK_0HZ5
from time import sleep

# Raspberry-Pi Pico
i2c = I2C(1) # sda=GP6, scl=GP7
dis = LedSegment8( i2c ) # DFR0646 8 digit LED display

# Display integers
dis.int( 4289213 )
sleep(2)
dis.int(-4366444)
sleep(2)

# Display float
dis.float(0.101)
sleep(2)
dis.float(7890.101)
sleep(2)
dis.float(-3.14159265) # pi
# other test dis.float(-13.14159265)
sleep(2)
dis.float(6.283185307179586) # taux

# Brightness control (0..7)
for i in range( 16 ): # 0..15
	dis.brightness( i )
	dis.print( 'br  %s' % i )
	sleep(1)

d = {VK16K33_BLINK_1HZ:"1 Hz", VK16K33_BLINK_2HZ:"2 Hz", VK16K33_BLINK_0HZ5 : "0.5Hz"}
for freq in (VK16K33_BLINK_1HZ, VK16K33_BLINK_2HZ, VK16K33_BLINK_0HZ5):
		dis.print( "Bl %s" % d[freq] )
		dis.blink( freq )
		sleep( 5 )
dis.blink_off()

dis.print( "end" )
sleep(2)
# Switch display off
dis.off()

Ressources

Je vous invite à jeter un oeil dans le dépôt esp8266-upy/grav-digital-led .

Le dépôt esp8266-upy reprend également de très nombreux autres pilotes MicroPython.

Liste d'achat

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.

Aucun commentaire