from machine import Pin
from machine import ADC,Pin
from time import sleep
# Constantes
Tecla_Arriba = const(0)
Tecla_Abajo = const(1)
teclas = [['1', '2', '3', 'A'], ['4', '5', '6', 'B'], ['7', '8', '9', 'C'], ['*', '0', '#', 'D']]
# Defininicón de Pines
filas = [2,4,5,19]
columnas = [12,27,26,25]
sensor = ADC(Pin(33)) # Sensor de humedad (potenciómetro)
sensor.atten(ADC.ATTN_11DB) # Para rango de 0-3.3V
bomba = Pin(32, Pin.OUT) # LED que simula la bomba
# Definimos los pines de las filas como salida
pines_Filas = [Pin(pin_nombre, mode=Pin.OUT) for pin_nombre in filas]
# Definimos los pines de las columnas de salida
pines_Columnas = [Pin(pin_nombre, mode=Pin.IN, pull=Pin.PULL_DOWN) for pin_nombre in columnas]
# Parámetros de riego
umbral_humedad = 10 # Ajusta según pruebas
#Funciónpara inicializar el teclado
def escanear(fila, columna):
""" Escaneo del teclado """
# poner todas las filas en alto
pines_Filas[fila].value(1)
key = None
# verificación al presionar una tecla o evento
if pines_Columnas [columna].value() == Tecla_Abajo:
key = Tecla_Abajo
if pines_Columnas [columna].value() == Tecla_Arriba:
key = Tecla_Arriba
pines_Filas [fila].value(0)
# retorne el estado de la tecla
return key
print("iniciando .............Presione una tecla: ")
# poner todas las columnas en bajo
inicio()
while True:
for fila in range(4):
for columna in range(4):
tecla = escanear(fila, columna)
if tecla == Tecla_Abajo:
print("Es el numero: ", teclas[fila][columna])
last_key_press = teclas[fila][columna]
sleep(0.5)
while True:
valor = sensor.read() # Leer humedad
print("Humedad:", valor)
if valor < umbral_humedad:
bomba.on() # Activar bomba
print("Riego ACTIVADO")
else:
bomba.off() # Desactivar bomba
print("Riego DESACTIVADO")
else:
for fila in range(4):
for columna in range(4):
tecla = escanear(fila, columna)
if tecla == Tecla_Abajo:
bomba.on() # Activar bomba
print("Riego ACTIVADO")
else:
bomba.off() # Desactivar bomba
print("Riego DESACTIVADO")
sleep(0.5)