from machine import Pin, ADC, PWM
import time
class Servo:
def __init__(self, pin = 13) -> None:
self.servo = PWM(Pin(pin), freq = 50)
def refresh(self, perc):
duty_min=26
duty_max=123
angle = perc *1.8
self.servo.duty(int(duty_min+(angle/180)*(duty_max-duty_min)))
class Fotoresistore:
def __init__(self, pin = 0) -> None:
self.fotoresistore = ADC(Pin(pin))
def readPerc(self):
minVal=0
maxVal=100
return 100-((maxVal-minVal) * self.fotoresistore.read() / 4095)
def read(self):
return 4095-self.fotoresistore.read()
class LedBar_Buzzer:
def __init__(self, pinLed1=4, pinLed2=16, pinLed3=15, pinBuzzer = 2) -> None:
self.blueLed = PWM(Pin(pinLed1, Pin.OUT))
self.greenLed = PWM(Pin(pinLed2, Pin.OUT))
self.redLed = PWM(Pin(pinLed3, Pin.OUT))
self.ledBar = [self.blueLed, self.greenLed, self.redLed]
self.buzzer = PWM(Pin(pinBuzzer, Pin.OUT))
def refresh(self, perc):
for led in self.ledBar :
led.duty(perc*2)
self.buzzer.duty(0)
def alarm(self):
self.blueLed.duty(0)
self.greenLed.duty(0)
self.redLed.duty(100)
self.buzzer.duty(100)
self.buzzer.freq(440)
ledBar_buzzer = LedBar_Buzzer()
fotoresistore = Fotoresistore()
servo = Servo()
while True:
perc=(int)(fotoresistore.readPerc())
val =(int)(fotoresistore.read())
print ("val= "+(str)(val)+" perc= " + (str)(perc))
if val >2000:
ledBar_buzzer.alarm()
servo.refresh(perc)
else:
ledBar_buzzer.refresh(perc)
servo.refresh(perc)
time.sleep_ms(100)