from machine import Pin,PWM,ADC
import utime
led=Pin(16,Pin.OUT)
photoresistor=ADC(28)
buzzer=PWM(Pin(15))
light_low=65535
light_high=0
def interval_mapping(x,in_min,in_max,out_min,out_max):
return (x-in_min)*(out_max-out_min)/(in_max-in_min)+out_min
def tone(pin,frequency,duration):
pin.freq(frequency)
pin.duty_u16(30000)
utime.sleep_ms(duration)
pin.duty_u16(0)
timer_init_start=utime.ticks_ms()
led.value(1)
while utime.ticks_diff(utime.ticks_ms(),timer_init_start)<5000:
light_value=photoresistor.read_u16()
if light_value>light_high:
light_high=light_value
if light_value<light_low:
light_low=light_value
led.value(0)
while True:
light_value=photoresistor.read_u16()
pitch=int(interval_mapping(light_value,light_low,light_high,50,6000))
if pitch>50:
tone(buzzer,pitch,20)
utime.sleep_ms(10)