01 利用BlocklyDuino玩ATmega328P
(2022/06/02)
前陣子看到大家都在開箱ICShop的Pixel:Bit雙合一的主控板,今天把它跟同樣ICShop的EZ Start Kit+做一結合,先只利用BlocklyDuino來寫ATmega328P晶片上的程式,測試下來有一些成功,有一些不成功,如:溫濕度感測器、光敏電阻、RGB LED燈,我也不知為何會不成功?只有等待官方的積木程式釋出才會比較相容吧!其實這樣也算成功了,下一步再來用BlocklyDuino玩ESP32晶片,感謝吉哥已完成IPS LCD的積木,可以顯示彩色畫面及文字。最後再利用BlocklyDuino來把ATmega328P晶片及ESP32晶片做互動!第一部份測試內容如下,供參
一、認識Pixel:Bit
一板雙用:Pixel:Bit 正面有一塊 1.3 吋的彩色 LCD,可讓使用者顯示資訊,或是將鏡頭拍攝到的畫面顯示在 LCD 上。為了解決 I/O 擴充的問題,特別加入了 ATmega328P,與 ESP32 所負責的功能不同,ATmega328P 專注在金手指腳位控制,經由 UART 與 ESP32 相互溝通,實現雙晶片控制的概念。
ATmega328P (本文先以此為主)
ESP32
UART 切換開關
兩顆微控制器將共用一個 Micro USB 插座,經由切換開關,可以決定由誰使用。共有三個模式可切換,分別是 PRO MINI、ESP 與 GO 模式。
PRO MINI 模式:可對 ATmega328P 通訊並燒錄程式。
ESP 模式:可對 ESP32 通訊並燒錄程式。
GO 模式:將 ATmega328P 與 ESP32 互連,使其可互相通訊。
官方教學文件
https://www.circuspi.com/index.php/2022/04/26/pixelbit-unit1/ (有更多的硬體介紹)
https://www.circuspi.com/index.php/2022/04/27/pixelbit-unit2/
https://www.circuspi.com/index.php/2022/04/28/pixelbit-unit3/
https://www.circuspi.com/index.php/2022/05/03/pixelbit-unit4/
https://www.circuspi.com/index.php/2022/05/09/pixelbit-unit5/
https://www.circuspi.com/index.php/2022/05/12/pixelbit-unit6/
https://www.circuspi.com/index.php/2022/05/16/pixelbit-unit7/
https://www.circuspi.com/index.php/2022/05/20/pixelbit-unit8/
二、Pixel:Bit與EZ Start Kit+ 的結合
為增加Pixel:Bit可控制的元件及感測器,所以讓它與EZ Start Kit+做結合
為適合國中小學生的使用,這邊採用BlocklyDuino的積木程式平台來寫程式
由於後面會用到1.3吋IPS LCD的螢幕顯示,建議【吉哥積木】要更新到20220531版
Pixel:Bit相容micro:bit金手指的腳位圖
三、Pixel:Bit的ATmega328P測試
先把【UART切換開關】切換到【PRO MINI 模式】
進入BlocklyDuino
測試一:依序點亮及關閉3顆LED燈
紅色LED燈(IO4 ->P13 ->D13)
黃色LED燈(IO5 ->P14 ->D12)
紅色LED燈(IO6 ->P15 ->D11)
程式如下:
選板子、選埠號後進行燒錄,出現如上的錯誤時
再進入Arduino IDE (執行 BlocklyDuino3\arduino-1.8.5\arduino.exe)
一樣選上面的板子及埠號後,關閉離開Arduino IDE
(2022/06/27更新)使用F2版,要選3.3V, 8MHz
再重新燒錄一次
這次就會燒錄成功了 (如下圖)
EZ Start Kit+的LED燈要從擴展板上供電才會亮,所以要採用擴展板供電
這時就會看到三顆LED燈依序點亮及滅掉
測試二:在OLED屏幕上顯示中英文字
OLED程式積木採用【吉哥積木】/【模組】/【OLED 128*64】
測試程式,如下:
測試三:在OLED屏幕上顯示溫、濕度及光亮度及可變電阻值
DHT11(IO7 ->P16 ->D10)
光感測器(IO1 ->P1 ->A0)
可變電阻器(IO2 ->P2 ->A1)
測試程式,如下:(2022/06/27更新)
測試結果:
溫度、濕度的值已有值顯示了(2022/06/27更新)(之前都是0)
光敏電阻的值會受光影響,但最大值只到約737,完全遮光有時到50幾,有時到150幾,有時值會怪怪的(2022/06/27更新)
可變電阻的值正確,介於0(順時針到底)~1023(逆時針到底)間
測試四:按A鍵亮紅燈、按B鍵亮黃燈、按A+B鍵滅燈
A鍵(D4)
B鍵(D5)
EZ Start Kit+上的A鍵(IO11 ->P5 ->D4)
EZ Start Kit+上的B鍵(IO15->P11 ->D5)
由上可知,主板與擴展板上的A、B鍵相同
先取得,按下鍵後的數位值
測試程式,如下:
發現:
未按下時,該腳位的數位值為1
按下時,該腳位的數位值為0
按A鍵亮紅燈、按B鍵亮黃燈、按A+B鍵滅燈
程式如下
同理,按A鍵啟動繼電器、按B鍵關閉繼電器
繼電器(IO13 ->P9 ->D8)
測試五:測試蜂鳴器
蜂鳴器(IO0 ->P0 ->D3)
播放全家便利商店入店時的音樂
簡譜:3 1 5(低音) 1 / 2 5~ 2 / 3 2 5(低音) 1
結果:每一音調積木下要再多一個等待積木(2022/06/27重試)
測試六:測試燈條
RGB LED燈(IO16 ->P12 ->D9)
發現:(2022/06/27更新)已能正確顯示顏色了,要選3.3V, 8MHz