from machine import Pin, PWM , I2C , SPI
import time
from utime import sleep
spi = SPI(0, baudrate=400000) # Create SPI peripheral 0 at frequency of 400kHz.
# Depending on the use case, extra parameters may be required
# to select the bus characteristics and/or pins to use.
cs = Pin(4, mode=Pin.OUT, value=1) # Create chip-select on pin 4.
i2c = I2C(freq=400000)
scan = i2c.scan()
print("Hello, Pi Pico!")
print("Scan : ")
print(scan)
Valeur = 0 # Match-case valeur poussoir interupt
MidPin = Pin(20,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital joystock Midle
RhtPin = Pin(17,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital joystock Right
LftPin = Pin(16,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital joystock Left
DwnPin = Pin(15,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital joystock Down
UpPin = Pin(15,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital joystock Up
INTPin = Pin(14,Pin.IN,Pin.PULL_UP) # input Attachinterupt IMU event Avalable Info
LedGPin = Pin(9, Pin.OUT) # output PRW Led digital joystock vert
LedJPin = Pin(10, Pin.OUT) # output PRW Led digital joystock jaune
VibroPin = Pin(3, Pin.OUT) # output PRW Vibro
ToneBPin = Pin(6, Pin.OUT) # output PRW Buzzer Pasif 2
ToneHPin = Pin(5, Pin.OUT) # output PRW Buzzer Passif 1
TacPin = Pin(11,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital Tactile bouton poussoir interupt
compt = 0 #rotary compteur
PushPin = Pin(13,Pin.IN,Pin.PULL_UP) #input Attachinterupt digital push buton of Rotary
DtPin = Pin(12,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital rotary DT
ClkPin= Pin(11,Pin.IN,Pin.PULL_UP) # input Attachinterupt digital rotary Clk
interrupt_flag=0
debounce_time=0
count=0
def callback(pin): # La Variable pin est indispensable
global interrupt_flag, debounce_time
if (time.ticks_ms()-debounce_time) > 1:
interrupt_flag= 1
debounce_time=time.ticks_ms()
def RotaryEncodeur :
if DtPin.Value() == HIGH :
compt +=1
global Valeur = 2
UpPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
DwnPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
LftPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
RhtPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
ClkPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=RotaryEncodeur)
PushPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
TacPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
INTPin.irq( trigger = Pin.IRQ_FALLING | Pin.IRQ_RISING , handler=callback)
while True:
if interrupt_flag is 1:
interrupt_flag=0
print("Interrupt Detected")
LedJPin.toggle()