Heltec Arduino教學-下載與安裝Arduino IDE,開始使用 Heltec CubeCell 撰寫我的第一隻Arduino
今天D桃要用 Heltec 系列產品來寫 Arduino 基礎教學-第一隻Arduino。首先是選擇開發軟體,D桃只會用官方的 Arduino IDE 之後有學新的方法再上來跟大家分享,它是一套跨平台應用軟體,不管是 Windows 或Mac,是大多數 Arduino 開發者所選用的整合開發環境,大家可以到 Arduino 官方網站免費下載。
選一下作業系統。
由於經費問題桃樂絲只能選擇 Just Down Load下載! 不好意思~
從下載的項目打開這個APP。
咕嚕咕嚕! Arduino 瘋狂開動中~
開好了就出現這個畫面。
然後我們要去下載支援Heltec的底層框架,到Arduino的參數設定裡添加Heltec框架。
點下 Preferences.. 就會出現下面視窗,選擇額外開發板管理員網址。
在彈出的視窗填入 https://resource.heltec.cn/download/package_CubeCell_index.json
2023/05/25 改成以下路徑檔案
如果還是找不到,也可以到官方的說明網站上去看看是不是又換網址了!
依次選擇 “工具” -> “開發板” -> “開發板管理員”
接下來出現這個嚇人的畫面,“不要害怕” D桃說給自己聽的 ^^
填上CubeCell 搜尋一下,按下CubeCell Development Framework開始安裝
咕嚕咕嚕開始安裝:D
居然裝了5分鐘… 終於好了^^
看看剛剛它在忙什麼!!
原來裝了這麼多板子的框架,今天就用 HTCC-AB02S (CubeCell-GPS) 來做Arduino 第一課 LED 明滅練習!
Arduino 第一課 LED 明滅練習
- 認識硬體
- 動工
- 收工
第一步 認識硬體
由於D桃我不想去動焊錫與面包板,我們就用板子上的LED來做實驗!首先找到我們板子上的LED!
然後找到電路圖,它說是IO8 會亮綠色的!(來源:Schematic diagram)
看起來它共用在SCL2與GPS OLED連接,應該是作為 I2C 資料傳輸時的指示燈吧! 這次我們借用一下應該沒關係!
第二步 動工
新增檔案
在setup()裡面貼上以下程式
pinMode(GPIO8, OUTPUT); // 這裡設定所要輸出的PIN腳模式
在loop()裡面貼上以下程式
//設定PIN8腳位為高電位 = 3V
digitalWrite(GPIO8, HIGH);
delay(200);//來延遲時間
digitalWrite(GPIO8, LOW);
delay(200);//來延遲時間
就像這樣
然後按下
程式就咕嚕咕嚕的開始編譯上傳到板子上了!
成果就像這樣
打完收工..
話說寫完後給愷哥看過… 咦… 板子上不是有顆大顆的LED 嗎? 為啥不用它點呢? 唉 !! 第一天就挖個洞 ..
Arduino 第一課 LED 明滅練習 (加餐) — SK6812
- 認識硬體
- 動工
- 收工
第一步 認識硬體
這顆LED是SK6812來歷不小喔! Google 一下這個東西,原來是內建控制器的三色燈,難怪這麼大一顆… 它還可以串起來像這樣來控制一整串的LED。挺酷的!
由於是單線的控制,它的0與1的表示就不是單純的High / Low
0 : 就是 High短一點(小於 50%) ; 1: 就是 High長一點(超過 50%) ; 最後就是Reset : Low .. (由於是3色燈 , 如果沒Reset 顏色就會疊上去)
那接下來要如何點個別顏色呢?
他的意思應該是 8 bit 的顏色控制亮度,按照G-R-B 給出0/1碼就好!由於我們只有1顆LED了解到這裡應該就可以了!下次拿到一整串的再來了解如何控制第二顆以後的LED!
第二步 動工
話說這次可要控制high/low寬度,可沒那麼容易。心想這麼難的應該有人寫過範例了吧!話不多說就到飯粒去找一下!咦..還真有!
接下來就快了~有一種考試抄答案的快感!
#include “CubeCell_NeoPixel.h”
CubeCell_NeoPixel pixels(1, RGB, NEO_GRB + NEO_KHZ800);void setup() {
// put your setup code here, to run once:
pinMode(Vext,OUTPUT);
digitalWrite(Vext,LOW); //SET POWER
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
pixels.clear(); // Set all pixel colors to ‘off’
}
uint8_t i=0;void loop() {
// put your main code here, to run repeatedly:pixels.setPixelColor(0, pixels.Color(i, 0, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(200); // Pause before next pass through loop
pixels.setPixelColor(0, pixels.Color(0, i, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(200); // Pause before next pass through loop
pixels.setPixelColor(0, pixels.Color(0, 0, i));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(200); // Pause before next pass through loop
i+=10;
}
直接編譯上傳咕嚕咕嚕的成果就出來了
終於收工^^
剛剛愷哥說要可以互動的比較好玩!就是按一下變一個顏色之類的。都要收工了又出個題目給我… 不過這應該不困難! 收工前做一下試試!
這次可以利用HTCC-AB02S 的user button 來做控制!開始動工吧..
- 認識硬體
- 動工
- 收工
第一步 認識硬體
USER Button 跟 VBAT_ADC_Ctl 連接會接到單晶片裡的SWD_CLK(這是什麼鬼?) 唉! D桃掉進一個坑了.. 找了好久終於找到 VBAT_ADC_Ctl = P3_3 。看起來我們可以用P3_3來取得這個按鈕的狀態。
第二步 動工
接下來就簡單了!
void setup() {
// put your setup code here, to run once:
pinMode(GPIO8, OUTPUT); // 點綠色的小燈
pinMode(P3_3,INPUT); //P3_3 = VBAT_ADC_Ctl ; 為什麼不是 GPIO16 (D桃也不知道.. )
}void loop() {
if(digitalRead(P3_3)==0) // 按下user button 就會接到地 也就是LOW
{
digitalWrite(GPIO8, HIGH);
} else {
digitalWrite(GPIO8, LOW);
}
}
第三步 收工
咦.. 又寫錯了! 是要控制彩色燈的.. Orz
立馬修改程式! 終於收工了 :P
#include “CubeCell_NeoPixel.h”
CubeCell_NeoPixel pixels(1, RGB, NEO_GRB + NEO_KHZ800);void setup() {
// put your setup code here, to run once:
pinMode(P3_3,INPUT); //P3_3 = VBAT_ADC_Ctl ; 為什麼不是 GPIO16 (D桃也不知道.. )
pinMode(Vext,OUTPUT);
digitalWrite(Vext,LOW); //SET POWER
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
pixels.clear(); // Set all pixel colors to ‘off’
}
uint8_t i=10; //亮度
int colorCount=0;
void loop() {
// put your main code here, to run repeatedly:
uint16_t keyDownTime = 0;
while(digitalRead(P3_3)==0) // P3_3 = user button 為了避免雜訊干擾按鈕添加了這段程式
{
delay(1);
keyDownTime++;
if(keyDownTime>=70){
colorCount++;
if (colorCount > 2){
colorCount=0;
}
break;
}
}
if (colorCount==0){
pixels.setPixelColor(0, pixels.Color(i, 0, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
}
if (colorCount==1){
pixels.setPixelColor(0, pixels.Color(0, i, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
}
if (colorCount==2){
pixels.setPixelColor(0, pixels.Color(0, 0, i));
pixels.show(); // Send the updated pixel colors to the hardware.
}
delay(100);
}
參考資料:
- HTCC-AB02S (CubeCell-GPS) 開發板取得商店 https://heltecshop.com
- HTCC-AB02S (CubeCell-GPS)開發板線路圖 Schematic diagram
- SK6812 Datasheet