可變電阻+OLED_0.96進度條顯示-micropython
可變電阻+OLED_0.96進度條顯示-micropython
前言:
記得在Arduino的應用裡,ssd1306的程式庫裡有進度條的函式,很久以前一直有個
疑惑,為什麼mpython沒有,今天再次回顧重溫,找了些資料,發現其實只要知道公式
要做成進度條也是很容易。
材料:
- 可變電阻
- OLED0.96
- ESP32(燒錄micropython)
接線:
ssd1306.py先匯入esp32
程式碼:
from machine import Pin, SoftI2C, ADC ,PWM
import ssd1306
import time
p=ADC(Pin(34))
p.atten(ADC.ATTN_11DB)
ADC.width(ADC.WIDTH_10BIT)
i2c=SoftI2C(scl=Pin(22), sda=Pin(21))
display=ssd1306.SSD1306_I2C(128, 64, i2c)
#類似於c裡面的map()函式
def scale_value(value, in_min, in_max, out_min, out_max):
scaled_value = (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
return scaled_value
while True:
pwmVal=p.read()
print(pwmVal)
display.text("vaule: "+str(pwmVal),10, 0)
display.show()
display.rect(10, 30, 90,20, 1) # draw a rectangle outline 10,10 to 117,53, colour=1
display.fill_rect(10, 30, int(scale_value(pwmVal,0, 680, 0, 60)), 20, 1) # draw a solid rectangle 10,10 to 117,53, colour=1
display.show()
display.fill(0)
time.sleep(1)
留言
張貼留言