from time import sleep
from machine import Pin, I2C, ADC
from ssd1306 import SSD1306_I2C
from framebuf import FrameBuffer, MONO_VLSB
pot = ADC(Pin(34))
pot.atten(ADC.ATTN_11DB)
i2c = I2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = SSD1306_I2C(oled_width, oled_height, i2c)
buf = bytearray(oled_width * oled_height // 8)
fb = FrameBuffer(buf, oled_width, oled_height, MONO_VLSB)
fb.fill(0)
fb.text("Iniciando...", 0, 0)
oled.blit(fb, 0, 0)
oled.show()
def convert_1000(value):
'''
? x 1000
value x 4095
'''
return round(value * 1000 / 4095)
def make_bar(x1, x2, value):
for i in range(0, value):
fb.line(x1, round(oled_height-i), x2, round(oled_height-i), 1)
def make_bars(value):
make_bar(0, 10, round((value - (value - 50))/30))
if value <= 50:
return
make_bar(25, 35, round((value - (value - 275))/30))
if value <= 275:
return
make_bar(50, 60, round((value - (value - 500))/30))
if value <= 500:
return
make_bar(75, 85, round((value - (value - 755))/30))
if value <= 755:
return
make_bar(100, 110, round(value/25))
while True:
fb.fill(0)
fb.text("Leitura Sensor: ", 0, 0)
fb.text(f"Valor: {convert_1000(pot.read())}", 0, 20)
make_bars(convert_1000(pot.read()))
oled.blit(fb, 0, 0)
oled.show()