# Código original de Dr. Rafael Mota Grajales
# Marco A. Garcia Márquez
#Práctica Grisel Anahí Cervantes Cocom y Camilo Gabriel Chan Ceh
from machine import Pin, PWM, ADC, I2C
import utime
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
I2C_ADDR = 0x27
I2C_NUM_ROWS = 4
I2C_NUM_COLS = 20
i2c = I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=400000)
print(i2c.scan())
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)
PinAnalogicoEntrada = ADC(27)
PinTemperatura = ADC(26)
servo1=PWM(Pin(15))
servo1.freq(50)
print ("Colegio----Tenam")
print("===================")
print("valor Temp (ºC)")
while 1:
valorAnalogico = ADC.read_u16(PinAnalogicoEntrada)
valorSensorTemp = ADC.read_u16(PinTemperatura)
sensor_voltaje = (valorAnalogico / 65535) * 3.3 # unidad : Voltios
# convierte a mili voltios
sensor_voltaje = (sensor_voltaje ) * 1000 # unidad : mili voltios
# calcula temperatura en función del voltaje del sensor (en milivoltios)
# del dat asheet (LM35)
# 1 grado centígrado = 10 mili voltios
temperatura = (sensor_voltaje/10 ) # unidad : grados centígrados
temperatura = (temperatura*40)/330 #Para escalar a 0 --40 ºC
valor=int(1638+(temperatura/.006104074)) #40/(8191-1638) .00610 ; #330/(8191-1638) .050358614 sin escalar temperatura
temperaturaS = ((((valorSensorTemp/65535)*5.0)*1000)/10) #*Alimentando con 5V el LM35DZ
print(valor, "\t", temperatura, "\t", temperaturaS, "\t", valorSensorTemp) #escala 0--40 ºC a 1638 -- 8191 (0 a 180 º mecánicos)
servo1.duty_u16(valor)
#lcd.clear()
lcd.move_to(0,0)
lcd.putstr("{0} -> {1:.2f}{2}C".format(valor, temperatura, chr(223)))
lcd.move_to(0,1)
lcd.putstr("{0} -> {1:.2f}{2}C".format(valorSensorTemp, temperaturaS, chr(223)))
utime.sleep(1)
#---------------------