"""
from time import sleep
from ili9341 import Display, color565
from machine import Pin, SPI, ADC
spi = SPI(2, baudrate=32000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
display = Display(spi, dc=Pin(33), cs=Pin(5), rst=Pin(32))
display.clear(color565(255,255,255))
class Gráfica:
def __init__(self, adc, yMin, yMax, color):
self.adc = adc
self.valor = self.adc.read()
self.yMin = yMin
self.yMax = yMax
self.color = color
self.x = -1
self.y = int(self.yMin - self.valor*(self.yMin - self.yMax)/4095)
self.dibuja_lineas()
def dibuja_lineas(self):
display.draw_hline(0, self.yMax, 240, self.color)
display.draw_hline(0, self.yMin, 240, self.color)
def grafica(self):
self.valor = self.adc.read()
self.x += 1
if self.x > 239:
self.x = 0
display.fill_rectangle(0, self.yMax, 240, self.yMin - self.yMax, color565(255, 255, 255))
self.dibuja_lineas()
self.y = int(self.yMin - self.valor*(self.yMin - self.yMax)/4095)
if self.y > 319:
self.y = 319
display.draw_pixel(self.x, self.y, self.color)
def __str__(self):
self.grafica()
return ""
def __gt__(self, otro):
if self.valor > otro.valor:
self.color = color565(255, 0, 0)
otro.color = color565(0, 0, 255)
else:
self.color = color565(0, 0, 255)
otro.color = color565(255, 0, 0)
self.dibuja_lineas()
otro.dibuja_lineas()
adc1 = ADC(Pin(36))
pot1 = Gráfica(adc1, yMin = 319, yMax = 179, color = color565(255, 0, 0))
while True:
print(pot1)
print(pot1.valor)
sleep(0.05)
"""
#Version subida al classroom (creo)
"""
from machine import Pin, SPI, ADC
from ili9341 import Display, color565
from xglcd_font import XglcdFont
import time
spi = SPI(2, baudrate=32000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
display = Display(spi, dc=Pin(33), cs=Pin(5), rst=Pin(32))
sensorMQ=ADC(Pin(34))
sensorMQ.atten(ADC.ATTN_11DB)
sensorMQ.width(ADC.WIDTH_10BIT)
espresso_dolce = XglcdFont('EspressoDolce18x24.c', 18, 24)
robotron = XglcdFont('Robotron13x21.c', 13, 21)
class Grafica():
def __init__(self,x,y):
self.__x=x
self.__y=y
def graficame(self,lectura):
self.nuevay=int(((100/3000)*lectura)+60)
display.draw_text(self.__x, self.nuevay,"*",robotron, color565(0, 0, 255),color565(102,255,255))
self.__x+=1
if self.__x>239:
self.__x=44
display.clear()
dibuja_ejes()
if self.__y>319:
self.nuevay=80
def dibuja_ejes():
display.clear(color565(102,255,255))
display.draw_hline(40,110,192,color565(0,0,0))
display.draw_vline(40,10,100,color565(0,0,0))
display.draw_text(90,115,"Tiempo",espresso_dolce,color565(51,25,0),color565(102,255,255))
display.draw_text(6,15,"P",espresso_dolce,color565(204,0,204),color565(102,255,255))
display.draw_text(6,35,"P",espresso_dolce,color565(51,25,0),color565(102,255,255))
display.draw_text(6,57,"M",espresso_dolce,color565(204,0,204),color565(102,255,255))
dibuja_ejes()
g=Grafica(20,20)
while True:
lectura_sensor=sensorMQ.read()
print(lectura_sensor)
valor_ppm=lectura_sensor*(10000/1023)
g.graficame(valor_ppm)
print(valor_ppm)
time.sleep(0.1)
"""
from machine import Pin, SPI
from ili9341 import Display, color565
from xglcd_font import XglcdFont
# Configuración de la pantalla y las fuentes
spi = SPI(2, baudrate=32000000, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
display = Display(spi, dc=Pin(33), cs=Pin(5), rst=Pin(32))
robotron = XglcdFont('Robotron13x21.c', 13, 21)
# Dimensiones de la pantalla (ajusta según tu pantalla)
ANCHO_PANTALLA = 240
ALTO_PANTALLA = 320
# Opciones del menú
opciones = [
"1. Opción 1",
"2. Opción 2",
"3. Opción 3",
"4. Opción 4",
"5. Opción 5",
"6. Opción 6",
"7. Opción 7"
]
# Función para mostrar el menú
def mostrar_menu(fuente=robotron):
"""Muestra un menú de opciones en la pantalla.
Args:
fuente: Fuente a utilizar para el texto.
"""
display.clear()
display.draw_text(10, 10, "Menú Principal", fuente, color565(255, 255, 0),color565(0, 0, 0))
# Parámetros ajustables
ESPACIO_ENTRE_LINEAS = 20
MARGEN_IZQUIERDO = 10
MARGEN_DERECHO = 10
y_offset = 30
for i, opcion in enumerate(opciones):
text_width, text_height = fuente.width * len(opcion), fuente.height
# Verifica si el texto cabe en la pantalla
if text_width > ANCHO_PANTALLA - MARGEN_IZQUIERDO - MARGEN_DERECHO:
# Si no cabe, trunca el texto
opcion = opcion[:(ANCHO_PANTALLA - MARGEN_IZQUIERDO - MARGEN_DERECHO) // fuente.char_width]
display.draw_text(MARGEN_IZQUIERDO, y_offset, opcion, fuente, color565(51, 255, 255))
y_offset += text_height + ESPACIO_ENTRE_LINEAS
# Ejemplo de uso
mostrar_menu()