"""
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Raspberry Pi Pico SSD1306 OLED Display (MicroPython) ┃
┃ ┃
┃ A program to display Raspberry Pi logo, text, and a ┃
┃ simple timer animation on an SSD1306 OLED display ┃
┃ connected to a Raspberry Pi Pico. ┃
┃ ┃
┃ Copyright (c) 2023 Anderson Costa ┃
┃ GitHub: github.com/arcostasi ┃
┃ License: MIT ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
"""
import machine
import ssd1306# Configura la pantalla OLED
i2c = machine.I2C(0, scl=machine.Pin(20), sda=machine.Pin(19))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Configura el pin analógico para leer el potenciómetro
potentiometer_pin = machine.ADC(27)
# Función para mapear un valor de entrada en un rango a otro rango
def map_value(value, in_min, in_max, out_min, out_max):
return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
# Bucle principal
while True:
# Lee el valor del potenciómetro
pot_value = potentiometer_pin.read_u16()
# Mapea el valor del potenciómetro (de 0 a 65535) al rango de 0 a 3.3V
voltage = map_value(pot_value, 0, 65535, 0, 3.3)
# Limpia la pantalla
oled.fill(0)
# Dibuja un rectángulo que representa el voltaje
bar_width = int(map_value(voltage, 0, 3.3, 0, oled.width()))
oled.fill_rect(0, 0, bar_width, oled.height(), 1)
# Muestra el voltaje en la pantalla
oled.text('Voltage: {:.2f}V'.format(voltage), 0, 30)
# Actualiza la pantalla
oled.show()