55 lines
1.1 KiB
Python
55 lines
1.1 KiB
Python
from machine import Pin, I2C
|
|
import time
|
|
|
|
led_jaune = Pin(0, Pin.OUT)
|
|
led_bleue = Pin(2, Pin.OUT)
|
|
led_rouge = Pin(19, Pin.OUT)
|
|
button_jaune = Pin(1, Pin.IN, Pin.PULL_UP)
|
|
button_bleu = Pin(21, Pin.IN, Pin.PULL_UP)
|
|
button_rouge = Pin(20, Pin.IN, Pin.PULL_UP)
|
|
|
|
i2c = I2C(scl=Pin(23), sda=Pin(22), freq=20000)
|
|
|
|
I2C_ADDR = 0x11
|
|
|
|
def button_jaune_presse(pin):
|
|
print("Bouton jaune pressé !")
|
|
led_jaune.on()
|
|
led_bleue.off()
|
|
led_rouge.off()
|
|
set_relays(0b0011)
|
|
|
|
button_jaune.irq(trigger=Pin.IRQ_FALLING, handler=button_jaune_presse)
|
|
|
|
def button_bleu_presse(pin):
|
|
print("Bouton bleu !")
|
|
led_jaune.off()
|
|
led_bleue.on()
|
|
led_rouge.off()
|
|
set_relays(0b1100)
|
|
|
|
button_bleu.irq(trigger=Pin.IRQ_FALLING, handler=button_bleu_presse)
|
|
|
|
def button_rouge_presse(pin):
|
|
print("Bouton rouge pressé !")
|
|
led_jaune.off()
|
|
led_bleue.off()
|
|
led_rouge.on()
|
|
set_relays(0b1100)
|
|
|
|
button_rouge.irq(trigger=Pin.IRQ_FALLING, handler=button_rouge_presse)
|
|
|
|
|
|
def set_relays(mask):
|
|
"""mask = bits 0..3 (1=ON, 0=OFF)"""
|
|
i2c.writeto_mem(I2C_ADDR, 0x10, bytes([mask]))
|
|
|
|
# Init
|
|
set_relays(0b0000)
|
|
led_jaune.off()
|
|
led_bleue.off()
|
|
led_rouge.off()
|
|
|
|
while True:
|
|
time.sleep(1)
|
|
|