import _thread
import time
from dht22_oled import DHT22_OLED
from servo_control import ServoControl # Asegúrate de que esta clase esté correctamente definida
# Define los pines GPIO
SERVO_PIN = 4
BUTTON_PIN = 34
NEOPIXEL_PIN = 16
NUM_NEOPIXELS = 16
TRIGGER_PIN = 33
ECHO_PIN = 32
POTENTIOMETER_PIN = 35 # Define el pin del potenciómetro
DHT22_PIN = 18 # Pin GPIO al que está conectado el sensor DHT22
I2C_SDA_PIN = 21 # Pin SDA del I2C
I2C_SCL_PIN = 22 # Pin SCL del I2C
OLED_WIDTH = 128 # Ancho de la pantalla OLED
OLED_HEIGHT = 64 # Alto de la pantalla OLED
SERVO_PIN_OLED = 23 # Pin GPIO para el servo controlado por la temperatura
# Configuración para elegir qué clase ejecutar
RUN_SERVO_CONTROL = True # Cambia a True para ejecutar ServoControl
RUN_DHT22_OLED = True # Cambia a True para ejecutar DHT22_OLED
# Crear instancia de las clases
sensor_display = DHT22_OLED(DHT22_PIN, I2C_SDA_PIN, I2C_SCL_PIN, OLED_WIDTH, OLED_HEIGHT, SERVO_PIN_OLED)
servo_control = ServoControl(SERVO_PIN, BUTTON_PIN, NEOPIXEL_PIN, NUM_NEOPIXELS, TRIGGER_PIN, ECHO_PIN, POTENTIOMETER_PIN)
def run_dht22():
if RUN_DHT22_OLED:
sensor_display.run(interval=1)
def run_servo_control():
if RUN_SERVO_CONTROL:
servo_control.run()
# Ejecutar las funciones en hilos separados
if RUN_SERVO_CONTROL:
_thread.start_new_thread(run_servo_control, ())
if RUN_DHT22_OLED:
_thread.start_new_thread(run_dht22, ())
# Mantener el programa principal en ejecución
try:
while True:
time.sleep(1) # Mantener el hilo principal activo
except KeyboardInterrupt:
print("Programa terminado")