源師兄L1:LED、OLED與RGB燈5個入門項(xiàng)目代碼全解)
用microPython玩轉(zhuǎn)源師兄L1LED、OLED與RGB燈5個入門項(xiàng)目代碼全解【免費(fèi)下載鏈接】源師兄L1基于海思ws63芯片平臺的源師兄開源項(xiàng)目硬件資料包括硬件原理圖和PCB layout文檔。項(xiàng)目地址: https://gitcode.com/yuanshixiong/ysx-v1源師兄L1是基于海思Hi3863WS63芯片的開源教學(xué)開發(fā)板本文以microPython編程為主線用通俗的方式完整講解LED閃爍、OLED屏顯示、WS2812 RGB燈變色、PWM調(diào)光以及按鈕交互5個入門項(xiàng)目的核心代碼新手一篇就能跑通。認(rèn)識源師兄L1硬件microPython開發(fā)基礎(chǔ)在寫第一行microPython代碼之前先花一分鐘認(rèn)識你的開發(fā)板。源師兄L1板載了0.96寸OLED屏、3顆可編程WS2812 RGB燈、A/B兩個按鍵以及豐富的傳感器跑在OpenHarmony 4.1系統(tǒng)上編程支持圖形化、Python、C三種方式。對microPython入門來說你最常用的資源是這些引腳硬件資源引腳說明RGB燈3顆WS2812P0 / P1 / P2支持PWM與單線協(xié)議A按鈕P5輸入按下為低電平B按鈕P11輸入按下為低電平OLED屏128×64I2CSCL(P19)、SDA(P20)板載直連無需外接ADC采集P1/P2/P13/P14可測光感等模擬量 引腳定義以官方圖為準(zhǔn)完整說明可參考 源師兄引腳圖.png 和 README.md 中的「引腳說明」章節(jié)。如果你想深挖硬件細(xì)節(jié)倉庫里開源了完整的原理圖與PCB資料原理圖總覽源師兄V1原理圖.pdfOLED屏電路OLED.SchDoc主控電路Hi3863.SchDocPCB工程源師兄V1.PcbDoc編程環(huán)境一鍵配置連接源師兄L1源師兄L1推薦搭配專為它開發(fā)的OH-Code編程軟件左側(cè)拖拽圖形化積木右側(cè)自動生成Python代碼圖形化和microPython雙模式無縫切換還能直接通過串口把程序下載到板子上。它也兼容 mu-editor、thonny 等通用microPython工具。環(huán)境配置三步走安裝OH-CodeWindows、mac、麒麟、統(tǒng)信均有離線版本或打開在線版用Type-C數(shù)據(jù)線連接電腦與源師兄L1點(diǎn)擊「串口」選擇對應(yīng)端口寫入程序開發(fā)板自動運(yùn)行項(xiàng)目一LED閃爍代碼——microPython的Hello World控制一顆燈閃爍是檢驗(yàn)開發(fā)板、引腳、編程環(huán)境是否全部就緒的最好方式。我們用P0引腳驅(qū)動第一顆RGB燈的紅燈from machine import Pin import time led Pin(P0, Pin.OUT) # P0設(shè)為輸出模式 while True: led.on() time.sleep(1) # 亮1秒 led.off() time.sleep(1) # 滅1秒逐行理解Pin(P0, Pin.OUT)把P0引腳初始化為輸出這是microPython控制硬件的核心APIled.on()/led.off()輸出高/低電平time.sleep(1)延時1秒讓閃爍節(jié)奏肉眼可見? 跑通效果板子上的紅燈每秒亮滅一次說明microPython開發(fā)環(huán)境配置成功項(xiàng)目二OLED屏顯示代碼——讓文字上屏源師兄L1板載0.96寸、128×64的OLED屏通過I2C總線SCL為P19、SDA為P20連接固件已內(nèi)置驅(qū)動模塊幾行代碼就能顯示文字import uoled oled uoled.OLED() # 初始化板載OLED oled.show_text(你好源師兄, 0, 0) # 在(0,0)位置顯示文字 oled.show() # 刷新屏幕三個要點(diǎn)show_text(內(nèi)容, x, y)的坐標(biāo)參數(shù)決定文字位置橫屏范圍0~127、縱屏0~63改字就改引號里的內(nèi)容中英文都支持show()必須調(diào)用否則畫面不會刷新 不同固件版本中顯示模塊的函數(shù)名可能略有差異以官方教學(xué)資料為準(zhǔn)OLED的電路細(xì)節(jié)可參考 OLED.SchDoc。項(xiàng)目三WS2812 RGB燈變色代碼源師兄L1的3顆RGB燈采用WS2812單線協(xié)議由P0引腳驅(qū)動。microPython標(biāo)準(zhǔn)庫自帶neopixel模塊控制起來非常簡單import neopixel from machine import Pin import time rgb neopixel.NeoPixel(Pin(P0), 3) # P0驅(qū)動3顆燈 colors [(255,0,0), (0,255,0), (0,0,255)] # 紅、綠、藍(lán) while True: for c in colors: for i in range(3): rgb[i] c # 每顆燈設(shè)為同一顏色 rgb.write() # 刷新燈光 time.sleep(2)核心就兩句rgb[i] (R,G,B)給第 i 顆燈賦值顏色0~255rgb.write()一次性刷新全部燈。想顯示紫色改成(255,0,255)即可——RGB的玩法從改這一行開始。項(xiàng)目四PWM調(diào)光代碼——做出呼吸燈效果普通LED只能亮/滅而PWM脈寬調(diào)制通過快速調(diào)節(jié)占空比來模擬亮度。源師兄L1的P0~P2、P8、P12、P13均支持PWM用P0做出經(jīng)典的呼吸燈from machine import PWM import time led PWM(P0) # P0設(shè)為PWM輸出 while True: for duty in range(0, 100, 5): # 由暗到亮 led.duty(duty) time.sleep_ms(50) for duty in range(100, 0, -5): # 由亮到暗 led.duty(duty) time.sleep_ms(50)duty取值0~100百分比0全滅、100最亮sleep_ms(50)太小會閃爍太快、看不到漸變效果可按需調(diào)整? 跑通效果燈光像呼吸一樣緩緩亮滅這是后面做炫酷燈光秀的基本功。項(xiàng)目五綜合交互項(xiàng)目——按鈕、OLED與RGB燈聯(lián)動前4個項(xiàng)目分別練了GPIO、顯示、RGB燈和PWM最后把它們串成一個完整的交互應(yīng)用按A按鈕3顆RGB燈換色OLED屏同步顯示當(dāng)前顏色from machine import Pin import uoled, neopixel import time btnA Pin(P5, Pin.IN) # A按鈕輸入模式 oled uoled.OLED() rgb neopixel.NeoPixel(Pin(P0), 3) colors [(255,0,0), (0,255,0), (0,0,255)] names [紅色, 綠色, 藍(lán)色] idx 0 while True: if btnA.value() 0: # A按鈕按下低電平 idx (idx 1) % 3 # 顏色循環(huán)切換 for i in range(3): rgb[i] colors[idx] rgb.write() oled.show_text(顏色 names[idx], 0, 0) oled.show() time.sleep(0.5) # 防連按這個項(xiàng)目覆蓋了你剛學(xué)到的全部技能知識點(diǎn)用在哪GPIO輸入讀取btnA.value()檢測按鍵WS2812 RGB燈控制neopixel換色OLED屏顯示顏色名稱上屏主循環(huán) 延時防抖while Truesleep 擴(kuò)展思路把B按鈕P11加進(jìn)來控制亮/滅或者結(jié)合項(xiàng)目四的PWM讓顏色帶漸隱過渡——一個迷你燈光控制臺就完成了。常見問題與后續(xù)學(xué)習(xí)程序沒反應(yīng)先確認(rèn)串口選對了端口再看引腳是否寫對大小寫敏感是P0不是p0引腳沖突A按鈕固定占用P5、B按鈕占用P11編程時避免復(fù)用引腳功能沖突P1/P13等引腳ADC、PWM復(fù)用詳見 README.md 的引腳說明完成這5個項(xiàng)目后你已經(jīng)掌握了microPython控制LED、OLED、WS2812 RGB燈的完整套路。下一步可以嘗試光感傳感器LTR553讀取環(huán)境光、陀螺儀數(shù)據(jù)展示或者用WiFi 6、星閃NearLink做多設(shè)備聯(lián)動實(shí)驗(yàn)——源師兄L1的全部硬件能力都在 硬件資料-PCB原理圖 和固件源碼目錄中開源等你繼續(xù)探索【免費(fèi)下載鏈接】源師兄L1基于海思ws63芯片平臺的源師兄開源項(xiàng)目硬件資料包括硬件原理圖和PCB layout文檔。項(xiàng)目地址: https://gitcode.com/yuanshixiong/ysx-v1創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考