from machine import Pin, SPI
import time
from ili9341 import Display, color565
def draw_dashed_line(display, x0, y0, x1, y1, color, dash_length=5, space_length=5):
"""
Dibuja una línea punteada entre (x0, y0) y (x1, y1).
- dash_length: largo del trazo en píxeles.
- space_length: espacio en blanco entre trazos en píxeles.
"""
import math
# Distancia total
dx = x1 - x0
dy = y1 - y0
distance = math.sqrt(dx * dx + dy * dy)
if distance == 0:
return
# Vectores unitarios de dirección
ux = dx / distance
uy = dy / distance
current_dist = 0
draw = True
while current_dist < distance:
segment = dash_length if draw else space_length
next_dist = min(current_dist + segment, distance)
if draw:
# Coordenadas del segmento
sx0 = int(x0 + ux * current_dist)
sy0 = int(y0 + uy * current_dist)
sx1 = int(x0 + ux * next_dist)
sy1 = int(y0 + uy * next_dist)
# Dibujar el trazo
display.draw_line(sx0, sy0, sx1, sy1, color)
current_dist = next_dist
draw = not draw # Alternar entre dibujar trazo y dejar espacio+
# 1. Retroiluminación
led = Pin(14, Pin.OUT)
led.value(1)
# 2. Reset hardware
rst = Pin(9, Pin.OUT)
rst.value(0)
time.sleep_ms(50)
rst.value(1)
time.sleep_ms(50)
# 3. Configuración SPI1
spi = SPI(
1,
baudrate=80_000_000,
sck=Pin(10),
mosi=Pin(11),
miso=Pin(8)
)
cs = Pin(13, Pin.OUT)
dc = Pin(12, Pin.OUT)
# 4. Inicialización orientada para tus pines a la izquierda (270°)
display = Display(
spi,
cs=cs,
dc=dc,
rst=rst,
width=240,
height=320,
rotation=270 # Rotación correcta para tener el origen arriba-izquierda
)
# Forzar a la librería a usar los 320 px de ancho
display.width = 320
display.height = 240
# -------------------------------------------------------------
# DIBUJO CON LAS COORDENADAS DESEADAS
# -------------------------------------------------------------
# Cuadrado Rojo de 10x10 en la esquina Superior Derecha exactas (X=310, Y=0)
display.fill_rectangle(310, 0, 10, 10, color565(255, 255, 255))
# Círculo Amarillo justo en el Centro (X=160, Y=120)
display.fill_circle(160, 120, 30, color565(255, 255, 0))
# Línea punteada horizontal blanca (de X=20 a X=300 en Y=50)
draw_dashed_line(display, 20, 50, 300, 50, color565(255, 255, 255), dash_length=2, space_length=4)
print("¡Pantalla completa y orientada correctamente!")