from machine import Pin, I2C, PWM, ADC
from time import sleep
import dht
from neopixel import NeoPixel
from servo import Servo
from hcsr04 import HCSR04
import ssd1306
# Configuración de dispositivos
neo = NeoPixel(Pin(12), 1) # Pin y número de NeoPixels
sensor_temp = dht.DHT22(Pin(15))
ultra_temp = HCSR04(2, 4, 10000) # Sensor ultrasónico para temperatura
buzzer = PWM(Pin(13)) # Configuración del buzzer como PWM
buzzer.freq(1000) # Frecuencia inicial del buzzer
pir = Pin(27, Pin.IN)
i2c = I2C(0, scl=Pin(22), sda=Pin(21)) # Instancia los pines conectados a la pantalla
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Instancia del servomotor
servo_pin = Pin(14) # Pin asociado al servo
my_servo = Servo(servo_pin)
# Funciones
def leer_distancia(sensor):
return sensor.distance_cm()
def leer_temperatura():
sensor_temp.measure() # Asegúrate de medir antes de obtener la temperatura
temp = sensor_temp.temperature()
return temp
def dispensar_gel():
my_servo.write_angle(90) # Mueve el servo a 90 grados para dispensar gel
sleep(1.5) # Mantiene el servo en 90 grados durante 1.5 segundos
my_servo.write_angle(0) # Regresa el servo a 0 grados
# Bucle principal
while True:
# Medición de temperatura
distancia_temp = leer_distancia(ultra_temp)
if 15 <= distancia_temp <= 25:
temp = leer_temperatura()
if 35 <= temp <= 37:
oled.fill(0) # Función que borra pantalla
oled.text("Temp:"+str(temp), 40, 20)
oled.text("No hay fiebre", 30, 30)
oled.show()
neo[0] = (0, 255, 0) # Verde
buzzer.duty(0) # Apaga el buzzer
elif temp > 37:
buzzer.duty(512) # Activa el buzzer con 50% de intensidad
oled.fill(0) # Función que borra pantalla
oled.text("Temp:"+str(temp), 40, 20)
oled.text("Tiene fiebre", 30, 30)
oled.show()
neo[0] = (255, 0, 0) # Rojo
sleep(1) # Espera antes de la próxima medición
else:
print("Fuera del rango de medición")
sleep(1) # Espera antes de la próxima medición
# Detección y dispensado de gel
if pir.value() == 1: # Si el sensor PIR detecta movimiento
dispensar_gel() # Dispensar gel
sleep(1.5) # Espera para evitar múltiples dispensaciones rápidas