from machine import Pin, ADC
import neopixel
from time import ticks_us, sleep_us, ticks_diff
mic = ADC(Pin(4))
# on lit alors la pression acoustique par la commande
# mic.read_u16() qui renvoie un entier entre 0 et 65535.
# le micro étant raccordé à l'entrée D4 (qui fait partie
# des entrées où existe un convertisseur
# analogue->digital)
neo = neopixel.NeoPixel(Pin(5),16)
# définit un ensemble de 16 neopixels dont la commande est donnée
# par la sortie D5. Ils sont dans l'exemple présenté orientés dans le sens
# horaire (numéroté de 0 tout en haut à 15 en haut un poil à gauche)
def display(x):
for i in range(16):
d = (x % 1 - i / 16 + 0.5) % 1 - 0.5
power = round(max(1-4*abs(d), 0)*255)
neo[i] = (power, power, power)
neo.write()
def f():
t = (ticks_us() % 1000000) / 1000000
return (440*t) % 1
def strobe():
over = False
while True:
p = mic.read()
if over:
if p < 2100: # can't trigger it
over = False
neo.fill((0,0,0))
neo.write()
else:
if p >= 2100:
display(f())
over = True
sleep_us(1000)
def listen():
while True:
p = mic.read()
print(p)
sleep_us(100000)