IDLabs-IoT Le site dédié aux objets connectés

Un site des laboratoires pédagogiques de l'école CampusID

Auteur : Caroline BANCHEREAU

BLINKT !

Posted on 7 janvier 2018  in Raspberry

1. Présentation

Blinkt! est une bande de 8 led rgb très lumineuses qui se branche sur le port GPIO du raspberry pi 3/2/B+/A+/Zero. On peut se procurer cet accessoire à un prix très accessible (aux alentours de 5-6€ en moyenne). On peut contrôler individuellement la couleur, l’intensité de lumière ainsi que la fréquence de chacun des pixels.

Nous utiliserons ici le raspberry pi 3 avec la dernière version desktop de Raspbian installée (« stretch »).

2. Connexion

Voici comment connecter la bande de led Pimoroni Blinkt! sur le port GPIO du raspberry pi
/!\ La bande possède deux angles arrondis, ceux-ci se placent côté extérieur du Raspberry

On peut désormais brancher l’alimentation du raspberry

 

3. Installation

Il est nécessaire d’installer le logiciel Blinkt! pour pouvoir commencer à utiliser la barre de led.
Ouvrir un terminal et taper la ligne suivante :

curl https://get.pimoroni.com/blinkt bash

4. Exécuter du code Python

Trois choix possible

a) Utiliser le terminal

Taper

python

dans le terminal puis valider

b) Utiliser l'IDE Python

Cela nous permet d’exécuter le code au fur et à mesure dans la console.

c) Ecrire un script et l’exécuter
On peut alors comme précédemment, choisir l’IDE Python puis File -> New File

Ou alors, on peut utiliser l’IDE “Thonny” plus simple pour les non-initiés à Python
Il est même disponible en “Simple Mode” qui nous permet de voir toutes nos variables sur le côté et de débuguer de façon simplifiée

5. Importer des méthodes

Pour pouvoir manipuler les leds, il faudra commencer par importer des méthodes. A chaque besoin d’une nouvelle méthode il faudra l’importer en précisant que l’on est en train de travailler avec la barre de led blinkt!
On commence à écrire

from blinkt

Puis

import

suivi du nom de la méthode que l’on souhaite importer. Si on veut en importer plusieurs, il suffit de séparer les méthodes par une virgule.
Exemple d’import :

from blinkt import show, clear

6. Lumière !

Avant de continuer, faisons un premier essai et allumons notre première led

  • On importe les quelques méthodes nécessaires pour allumer une led (on verra une liste des méthodes les plus utiles un peu plus loin)

from blinkt import set_pixel, set_brightness, show, clear

  • On définit la brillance voulue (100% pour tester le potentiel d’éclairage)

set_brightness(1)

  • Par sécurité, on va éteindre toutes les leds qui seraient déjà allumées

clear()

  • On peut alors décider quelle led allumer (la première led = indice 0) et la couleur RGB (lumière blanche = 255, 255, 255)

set_pixel(0, 255, 255, 255)

  • On peut alors finalement afficher le résultat

show()

On voit à quel point la luminosité est importante !!
Pour modifier la luminosité, il suffit de modifier la valeur de la méthode set_brightness() comprise entre 0 et 1

set_brightness(0.5) show() #luminosité de 50%
set_brightness(0.1) show() #luminosité de 10%

7. Les méthodes

Voici une liste non exhaustive des méthodes utiles pour la manipulation des leds :

  • Méthodes Blinkt

blinkt.clear()

Permet d’éteindre toutes les leds

blinkt.set_all(r, g, b, brightness=None)

Permet d’affecter une même couleur à toutes les leds

blinkt.set_brightness(brightness)

Permet d’affecter une luminosité à toutes les leds

blinkt.set_clear_on_exit(value=True)

Permet d’éteindre toutes les leds à la fin de l’exécution du script

blinkt.set_clear_on_exit(False)

Va ainsi permettre de ne pas éteindre les leds à la fin de l’exécution

blinkt.set_pixel(x, r, g, b, brightness=None)

Permet d’affecter une couleur à une led en particulier (0<x<7)

blinkt.show()

Permet d’afficher le résultat sur la barre de led

NB : en tapant

from blinkt import

suivi du nom des fonctions précédentes, il suffit alors d’appeler les méthodes sans le “blinkt.” avant chacune d’elles dans notre code

 

  • Méthodes Python

time()

Permet de manipuler le temps

On pensera aussi à utiliser les itérations et conditions habituelles pour pouvoir créer une animation

while condition: code à exécuter

for i in range(valeur_max): code à exécuter

if condition: code à exécuter

elif condition: code à exécuter

else: code à exécuter

8. Un exemple

Admettons que l’on veuille créer un timer (utile lors d’une partie de carte par exemple)
Essayons le code suivant :

#on importe les fonctions utiles pour utiliser blinkt

from blinkt import set_pixel, set_brightness, set_clear_on_exit, show, clear

#on importe la fonction time

import time

#ici on peut activer (True ou "") / desactiver (False) l'extinction des leds en sortie de script

set_clear_on_exit()

#on eteind toutes les leds qui seraient restes allumes

clear()

#on affecte une luminosite a toutes les led

set_brightness(0.3)

#on affecte a la variable temps (en secondes) la duree de notre timer

temps = 8

#on boucle sur les 8 leds

for i in range(8):

#on choisit une couleur differente a chaque led

if i==0:

r=90

g=0

b=90

elif i==1:

r=90

g=0

b=255

elif i==2:

r=0

g=0

b=255

elif i==3:

r=0

g=255

b=255

elif i==4:

r=0

g=255

b=0

elif i==5:

r=255

g=255

b=0

elif i==6:

r=255

g=90

b=0

else:

r=255

g=0

b=0

#on affecte la couleur a la led en cours

set_pixel(i, r, g, b)

#on affiche la led

show()

#on stoppe le temps de la duree du timer divise par le nombre de led

time.sleep(temps/8)

#on arrete le script

exit()

Résultat :

    Variantes

  • En changeant la valeur de la variable temps, le timer ira plus ou moins vite.

temps = 60

pour un timer de 60 secondes

  • On n’est pas obligé de donner une couleur différente à chaque led, il suffirait alors d’enlever le long “if – elif – else” et de simplement donner les valeurs voulues aux variables rgb

set_pixel(i, 255, 90, 0)

Pour avoir toutes les leds orange

  • En faisant varier une des valeurs r, g ou b on pourrait également créer un dégradé d’une couleur

set_pixel(i, i*30, 0, 255)

pour un dégradé de bleu vers le violet

De la même manière, on pourrait faire varier toutes les valeurs en même temps (en rajoutant « i* » une valeur pour chaque variable r, g et b)

 

  • On pourrait faire varier les couleurs en choisissant un nombre aléatoire entre 0 et 255 pour chaque led

random.randint(a, b)

Retourne un entier n tel que (a <= n <= b)

Ne pas oublier d’ajouter l’import “random” à côté de “time” en début de fichier

import time, random

On ajouterait ensuite 3 lignes

r =random.randint(0, 255)

g =random.randint(0, 255)

b =random.randint(0, 255)

set_pixel(i, r, g, b)

resterait tel quel car les valeurs sont calculées au-dessus

1er test random

2ème test random

 

[Top]