VIA Pixetto X Arduino首次接觸就上手 顏色辨識實作
前言
延續上一篇『VIA Pixetto X Arduino首次接觸就上手人臉辨識實作』技術文,其原理就是VIA Pixetto偵測到人臉時,可以控制 Arduino首次接觸就上手套件 (以下簡稱Arduino) 的LED燈及蜂鳴器。上一篇文章中提到 Arduino的程式可透過Pixetto Editor燒錄,也可用 HanGeekduino 的Arduno IDE燒錄。 本篇要接續分享利用 VIA Pixetto 偵測到特定顏色時,可把辨識的顏色結果顯示在 Arduino 的 OLED 模組上,但為了能夠使用OLED模組,就有了另一個作法---使用HanGeekduino的Arduno IDE燒錄程式到Arduino。| 撰寫/攝影 | 許鈺莨 | ||
| 時間 | 1小時 | 材料表 | |
| 難度 | 2 (滿分5) | ||
本文
若想透過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,可以找到相關函式庫,並下載 Pixetto 相關函式庫到最新版。
步驟4.Pixetto相關函式庫下載完後,重新啟動Arduino IDE
步驟5.上傳程式碼到Arduino
程式傳送門(按此下載),修改自 PixettoLite 範例程式 ColorDetection 修改而來,以下是完整程式碼 [pastacode lang="c" manual="%23include%20%3CSoftwareSerial.h%3E%0A%23include%20%3CPixettoLite.h%3E%0A%23include%20%3CArduino.h%3E%0A%23include%20%3CU8x8lib.h%3E%0AU8X8_SSD1306_128X64_ALT0_HW_I2C%20u8x8(%2F*%20reset%3D*%2F%20U8X8_PIN_NONE)%3B%0A%0ASoftwareSerial%20pxtSerial(A0%2C%20A1)%3B%20%2F%2F%20RX%E9%BB%83%E8%89%B2%2C%20TX%E7%99%BD%E8%89%B2%0A%0A%0Achar%20pxtbuf%5BPXT_BUF_SIZE%5D%3B%0Astruct%20pxt_data*%20pxtdata%20%3D%20(struct%20pxt_data*)pxtbuf%3B%0A%0Avoid%20setup()%0A%7B%0A%20%20Serial.begin(38400)%3B%0A%20%20pxtSerial.begin(38400)%3B%0A%20%20Serial.println(pxtGetVersion(pxtSerial)%2C%20HEX)%3B%0A%20%20pxtSetFunc(pxtSerial%2C%20FUNC_COLOR_DETECTION)%3B%0A%20%20u8x8.begin()%3B%0A%20%20u8x8.setFlipMode(1)%3B%0A%20%20u8x8.setFont(u8x8_font_chroma48medium8_r)%3B%0A%20%20u8x8.clear()%3B%0A%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20char%20s%5B32%5D%3B%0A%20%20int%20n%20%3D%20pxtAvailable(pxtSerial)%3B%0A%20%20while%20(n--)%20%7B%0A%20%20%20%20if%20(pxtGetData(pxtSerial%2C%20pxtbuf%2C%20PXT_BUF_SIZE)%20%3E%200)%20%7B%0A%20%20%20%20%20%20sprintf(s%2C%20%22%2502d%20%25d%20%25d%20%25d%20%25d%22%2C%20pxtdata-%3Eclass_id%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20pxtdata-%3Ex%2C%20pxtdata-%3Ey%2C%20pxtdata-%3Ew%2C%20pxtdata-%3Eh)%3B%0A%20%20%20%20%20%20Serial.println(s)%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20(pxtdata-%3Eclass_id%20%3D%3D1)%20%7Bu8x8.setCursor(0%2C%200)%3B%20u8x8.print(%22RED%22)%3B%7D%0A%20%20%20%20else%20if%20%20(pxtdata-%3Eclass_id%20%3D%3D2)%20%7Bu8x8.setCursor(0%2C%200)%3B%20u8x8.print(%22YELLOW%22)%3B%7D%0A%20%20%20%20else%20if%20%20(pxtdata-%3Eclass_id%20%3D%3D3)%20%7Bu8x8.setCursor(0%2C%200)%3B%20u8x8.print(%22GREEN%22)%3B%7D%0A%20%20%20%20else%20if%20%20(pxtdata-%3Eclass_id%20%3D%3D4)%20%7Bu8x8.setCursor(0%2C%200)%3B%20u8x8.print(%22BLUE%22)%3B%7D%0A%20%20%20%20else%20if%20%20(pxtdata-%3Eclass_id%20%3D%3D5)%20%7Bu8x8.setCursor(0%2C%200)%3B%20u8x8.print(%22RPURPLE%22)%3B%7D%0A%20%20%20%20else%20if%20%20(pxtdata-%3Eclass_id%20%3D%3D6)%20%7Bu8x8.setCursor(0%2C%200)%3B%20u8x8.print(%22BLACK%22)%3B%7D%0A%20%20%7D%0A%20%20delay(200)%3B%0A%20%20u8x8.clear()%3B%0A%7D" message="ColorDetection_OLED.ino" highlight="31-34,36-41" provider="manual"/]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腳位。

留言 💬 (0)
還沒有留言,來當第一個。