Il s’agissait bien sûr d’une petite blague pour le 1er avril (mais j’explique quand même comment fabriquer la fausse télécommande).
Dans cette vidéo, je vous montre qu’il est très facile de contrôler les feux tricolores.
J’ai réutilisé le Ludik Hat et le PicoHat dont j’ai déjà parlé dans de précédents articles (voir lien en bas de page). Il m’a fallu quand même ajouter une LED (reliée au GPIO16) pour compléter le dispositif.
Pour déclencher la télécommande, il suffit d’appuyer sur le bouton correspond à la couleur souhaitée pour le feu tricolore (vert, orange ou rouge). La télécommande envoie le signal et le feu change de couleur quelques secondes plus tard.

Parfois c’est un peu long parce que la télécommande doit calibrer le signal en fonction de la fréquence du récepteur (situé en haut du feu tricolore). Mais au bout d’un moment, ça fini toujours par fonctionner (comme le bouton d’appel piéton).
Je voulais inclure un mode automatique qui fait passer tous les feux au vert quand on s’approche, mais pour l’instant, ça ne fonctionne pas. Vous trouverez donc ci-dessous le programme utilisé, mais bien sûr rien ne vous empêche de l’améliorer…
# Appel des bibliothèques
from machine import Pin
from time import sleep
from random import randint
from neopixel import Neopixel
#Conversion des numéro de Pin du Pico en numéro de GPIO
GPIO = [None,None,8,9,2,3,14,10,5,4,7,6,20,21,0,1,16,17,18,19,27,28,22,11,12,13,26,15]
# Définition des éléments reliés aux ports du Pico
ledVerte = Pin(GPIO[12], Pin.OUT)
ledOrange = Pin(GPIO[26], Pin.OUT)
ledRouge = Pin(GPIO[27], Pin.OUT)
ledJaune = Pin(GPIO[6], Pin.OUT)
ledTelecommande = Pin(GPIO[16], Pin.OUT)
boutonVert = Pin(GPIO[22], Pin.IN, Pin.PULL_UP)
boutonOrange = Pin(GPIO[23], Pin.IN, Pin.PULL_UP)
boutonRouge = Pin(GPIO[24], Pin.IN, Pin.PULL_UP)
boutonJaune = Pin(GPIO[25], Pin.IN, Pin.PULL_UP)
# Définition de l'objet "ledNeopixels"
nombre_de_LED = 4
ledNeopixels = Neopixel(nombre_de_LED, 0, GPIO[18], "GRB")
# Fonctions
def toutesLesLed(etat):
ledVerte.value(etat)
ledOrange.value(etat)
ledRouge.value(etat)
ledJaune.value(etat)
def clignote(led):
toutesLesLed(0)
for i in range(3,-1,-1):
ledNeopixels.set_pixel(i, (0, 5, 5))
ledNeopixels.show()
led.value(1)
ledTelecommande.value(1)
sleep(randint(2,6)/10)
led.value(0)
ledTelecommande.value(0)
sleep(randint(2,6)/10)
# Extinction de toutes LED
for i in range(0, nombre_de_LED):
ledNeopixels.set_pixel(i, (0, 0, 0))
ledNeopixels.show()
#Début du programme
toutesLesLed(0)
# Boucle infinie
while True:
if boutonVert.value()==False:
clignote(ledVerte)
ledVerte.value(1)
if boutonOrange.value()==False:
clignote(ledOrange)
ledOrange.value(1)
if boutonRouge.value()==False:
clignote(ledRouge)
if boutonJaune.value()==False:
toutesLesLed(0)
sleep(0.1)
Attention, si je publie ces informations, c’est uniquement à titre pédagogique. Alors, n’en abusez pas parce que si tout le monde l’utilise en même temps ça risque de poser quelques problèmes (et les autorités désactiveront ce système).
Bjr Jean-Christophe, Excellente solution pour le passage des feux en vert. Personnellement, l’année dernière à la même date, j’avais réalisé la même chose pour le passage des feux en Rouge …. mais avec la carte MicroBit V2.
Cela fonctionnait très bien 🙂
Bien joué ….
Amitiés
Serge
J’aimeAimé par 1 personne