#Librerias
import machine
from machine import Pin,PWM,ADC,SoftI2C
import time
from clase_Sensor import HCSR04
#Modulos para pantalla lcd
from i2c_lcd import I2cLcd
from lcd_api import LcdApi
import dht
from neopixel import NeoPixel
#-----------------------------------------------------------
#PARA LED
#definir led
Led_Rojo = Pin(14, Pin.OUT)
#Crear una funcion para el control del led rojo
def leds_Rojos():
Led_Rojo.on()
time.sleep(10)
Led_Rojo.off()
#-----------------------------------------------------
#PARA BUZZER
def sonido():
buzzer = PWM(Pin(33))
buzzer.freq(500)
buzzer.duty(500)
time.sleep(3)
buzzer.duty(0)
#----------------------------------------------------------
#PARA SENSOR ULTRASONICO
#DEFINIR PINES HC-SR04
T =13 #trigger
E = 12 #Echo
#crear objeto HC-SR04
Sensor = HCSR04(trigger_pin = T, echo_pin = E)
#-----------------------------------------------------------
#PARA POTENCIOMETRO
pot = ADC(Pin(2))
pot.atten(ADC.ATTN_11DB)
#Crear una función para el servomotor
#para servomotor
sg90 = PWM(Pin(4, mode=Pin.OUT))
sg90.freq(50)
def movimiento_Servo():
sg90.duty(26)
time.sleep(1)
sg90.duty(123)
time.sleep(1)
sg90.duty(26)
time.sleep(1)
sg90.duty(123)
time.sleep(1)
sg90.duty(26)
time.sleep(1)
sg90.duty(123)
time.sleep(1)
sg90.duty(26)
time.sleep(1)
sg90.duty(123)
time.sleep(1)
#-------------------------------------------------------------
#Para neopixeles
pixels = NeoPixel(Pin(15), 16)
def Pixeles_Alegria():
# Rojo
pixels.fill((255, 0, 0))
pixels.write()
time.sleep(0.5)
# Verde
pixels.fill((0, 255, 0))
pixels.write()
time.sleep(0.5)
# Azul
pixels.fill((0, 0 , 255))
pixels.write()
time.sleep(0.5)
# Rosado
pixels.fill((255, 0 , 255))
pixels.write()
time.sleep(0.5)
# Amarillo
pixels.fill((255, 255 , 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(3)
def Pixeles_Rojos():
# Rojo
pixels.fill((255, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((255, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((255, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((255, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(3)
def Pixeles_Azules():
# Rojo
pixels.fill((0, 0, 255))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 255))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 255))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 255))
pixels.write()
time.sleep(0.5)
pixels.fill((0, 0, 0))
pixels.write()
time.sleep(0.5)
#-------------------------------------------------------------
#Para pantalla Lcd
#Datos de LCD
Filas = 2
Columnas =16
I2C_Direccion = 0x27
#Creacion de objeto para LCD
SCL = Pin(22)
SDA = Pin(21)
Frecuencia = 10000
#Se crea una instancia de una interfaz I2C
i2c = SoftI2C(scl = SCL, sda = SDA, freq = Frecuencia)
#Objeto LCD
LCD = I2cLcd(i2c, I2C_Direccion, Filas, Columnas)
def mensaje1_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr("Hola soy CHICO")
time.sleep(1)
LCD.clear()
LCD.putstr("El robot humanoide")
time.sleep(1)
LCD.clear()
LCD.putstr("Presiona el boton verde")
time.sleep(3)
LCD.clear()
def mensaje2_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr("ESTOY DESPIERTO")
time.sleep(1)
def mensaje3_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr(str(temperature))
time.sleep(1)
LCD.clear()
def mensaje4_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr("HIDRATESE")
time.sleep(1)
def mesanje5_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr("ABRIGUESE")
time.sleep(1)
def mensaje6_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr("ESTOY FELIZ")
time.sleep(1)
LCD.clear()
def mensaje7_LCD():
LCD.move_to(0,0) #columna y fila
LCD.putstr("PELIGRO")
time.sleep(1)
#---------------------------------------------------------------
#para uso de boton
Boton = Pin(27,Pin.IN)
Led_verde = Pin(25,Pin.OUT)
#Crear una funcion para el control del led verde a traves del boton
def boton():
Led_verde.on()
time.sleep(3)
LCD.move_to(0,0) #columna y fila
LCD.putstr("ESTOY DESPIERTO")
time.sleep(2)
LCD.clear()
#------------------------------------------------------------
#Para sensor de temperatura
d = dht.DHT22(machine.Pin(26))
d.measure()
temperature = d.temperature()
def Sensor_Temperatura():
d.measure()
temperature = d.temperature()
print('------------------------------------------')
print('temperatura: ', str(temperature), '(C)')
print('------------------------------------------')
return temperature
while True:
mensaje1_LCD()
if Boton.value() == 1:
boton()
time.sleep(3)
print("-------------------------------------------------------------------")
print ("A continuacion mide la temperatura que hay en el lugar")
print("-------------------------------------------------------------------")
time.sleep(2)
temperature= Sensor_Temperatura()
mensaje3_LCD()
time.sleep(2)
if temperature > 28:
mensaje4_LCD()
Pixeles_Rojos()
LCD.clear()
if temperature < 18:
mesanje5_LCD()
Pixeles_Azules()
LCD.clear()
pot_valor = pot.read()
print("Valor de potenciometro", pot_valor)
time.sleep(2)
if pot_valor > 800:
mensaje6_LCD()
Pixeles_Alegria()
movimiento_Servo()
LCD.clear()
time.sleep(2)
#calcular, guardar e imprimir distancias del sensor ultrasonico
Distancia_centimetros = Sensor.distance_cm()
Distancia_milimetros = Sensor.distance_mm()
print ("Distancia del sensor en centimetros", Distancia_centimetros, "cm")
print ("Distancia del sensor en milimetros", Distancia_milimetros, "mm")
if (Distancia_centimetros <30):
mensaje7_LCD()
leds_Rojos()
sonido()
time.sleep(3)
LCD.clear()
Led_verde.off()