作者/圖片來源:CAVEDU 教育團隊
延續上一篇《VIA Pixetto X Arduino首次接觸就上手》技術文,其原理就是VIA Pixetto偵測到人臉時,可以控制 Arduino首次接觸就上手套件 (以下簡稱Arduino) 的LED燈及蜂鳴器。上一篇文章中提到 Arduino的程式可透過Pixetto Editor燒錄,也可用 HanGeekduino 的Arduno IDE燒錄。
本篇要接續分享利用 VIA Pixetto 偵測到特定顏色時,可把辨識的顏色結果顯示在 Arduino 的 OLED 模組上,但為了能夠使用OLED模組,就有了另一個作法—使用HanGeekduino的Arduno IDE燒錄程式到Arduino。
若想透過HanGeekduino的Arduno IDE來燒錄程式到Arduino的話,就會有匯入Pixetto函式庫版本的問題,必須搭配VIA Pixetto的韌體版本1.6.2版,因此在進行本篇實作之前,建議先看過《VIA Pixetto X Arduino首次接觸就上手人臉辨識實作》技術文章,其中已經說明如何更新 VIA Pixetto 的韌體版本,本文就不再重複,以下就從匯入Pixetto 函式庫和 VIA Pixetto 顏色辨識來說明。
HanGeekduino的Arduno IDE匯入Pixetto函式庫
步驟1.下載HanGeekduino
HanGeekduino 是我們根據 BlocklyDuino 並針對 Arduino 首次接觸就上手套件所修改的圖形化介面 (按此下載)
步驟2.解壓縮開啟Arduno IDE執行檔
在arduino-1.8.5的資料夾中開啟Arduno IDE執行檔
步驟3.匯入Pixetto函式庫
Arduino IDE 中,請點選 Sketch>Include Library > Manage Libraries… 開啟函式庫管理員
在 Library Manager 的搜尋欄位中輸入
,可以找到相關函式庫,並下載 Pixetto 相關函式庫到最新版。
步驟4.Pixetto相關函式庫下載完後,重新啟動Arduino IDE
步驟5.上傳程式碼到Arduino
程式傳送門(按此下載按此下載),修改自 PixettoLite 範例程式 ColorDetection 修改而來,以下是完整程式碼。
#include
#include
#include
#include
U8X8_SSD1306_128X64_ALT0_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
SoftwareSerial pxtSerial(A0, A1); // RX黃色, TX白色
char pxtbuf[PXT_BUF_SIZE];
struct pxt_data* pxtdata = (struct pxt_data*)pxtbuf;
void setup()
{
Serial.begin(38400);
pxtSerial.begin(38400);
Serial.println(pxtGetVersion(pxtSerial), HEX);
pxtSetFunc(pxtSerial, FUNC_COLOR_DETECTION);
u8x8.begin();
u8x8.setFlipMode(1);
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.clear();
}
void loop()
{
char s[32];
int n = pxtAvailable(pxtSerial);
while (n--) {
if (pxtGetData(pxtSerial, pxtbuf, PXT_BUF_SIZE) > 0) {
sprintf(s, "%02d %d %d %d %d", pxtdata->class_id,
pxtdata->x, pxtdata->y, pxtdata->w, pxtdata->h);
Serial.println(s);
}
if (pxtdata->class_id ==1) {u8x8.setCursor(0, 0); u8x8.print("RED");}
else if (pxtdata->class_id ==2) {u8x8.setCursor(0, 0); u8x8.print("YELLOW");}
else if (pxtdata->class_id ==3) {u8x8.setCursor(0, 0); u8x8.print("GREEN");}
else if (pxtdata->class_id ==4) {u8x8.setCursor(0, 0); u8x8.print("BLUE");}
else if (pxtdata->class_id ==5) {u8x8.setCursor(0, 0); u8x8.print("RPURPLE");}
else if (pxtdata->class_id ==6) {u8x8.setCursor(0, 0); u8x8.print("BLACK");}
}
delay(200);
u8x8.clear();
}
ColorDetection_OLED.ino
VIA Pixetto顏色辨識
在Pixetto的視覺感測器介面就有訓練好的顏色識別模型了,只需要勾選要識別的顏色,然後套用即可,以下說明步驟。
步驟1.用USB傳輸線將VIA Pixetto和電腦連接
步驟2.開啟1.6.2版的Pixetto Utility
在功能處的選項選顏色辨識,最大顯示物件數量選1,顏色則是看使用者決定要辨識的顏色,筆者是全部勾選,最後按下套用,記住一定最後要點選套用,顏色識別的模型才會確定載入VIA Pixetto中。
步驟3.顏色識別測試
筆者是拿三種不同顏色的三角錐來測試,分別是黃色、藍色及紅色,可以由以下的圖看見,黃色是2號。
而每個顏色的標籤如下表所示:
步驟4.Grove連接線接到Arduino
將 VIA Pixetto 和電腦的USB連接線斷開,並用一條 Grove 連接線接到Arduino 的A0腳位。
成果展示
小結
本篇為您說明了如何使用 Arduino IDE 上傳程式碼進行顏色辨識,並將 VIA Pixetto 辨識結果顯示在 OLED 中,期待大家可能發想出更多有趣的應用。若各位讀者成功,或有其他的應用,歡迎以在留言區和我們分享囉,那麼下一篇文章見囉!
- 【CAVEDU講堂】NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹 - 2024/10/08
- 【CAVEDU講堂】Google DeepMind使用大語言模型LLM提示詞來產生你的機器人操作程式碼 - 2024/07/30
- 【CAVEDU講堂】《Arduino首次接觸就上手》新手村教學:LED燈閃爍 - 2024/04/18
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!