作者:Ted Lee
如果你的朋友是同樂會活動的負責人,卻發愁不知該準備些什麼娛興節目才好,這時,號稱創客大師的你,趕緊動動腦筋設計一個能炒熱現場氣氛的道具吧!本文將教你利用8787的特徵點偵測功能,做為轉輪馬達的觸發開關來抽出表演的順序。
材料清單
註:本文是使援用KSB015這塊使用L298P IC的Arduino擴充板(shield),讀者亦可使用其他類似功能的版本,例如:L9110S。
如果讀者要將項目4的開發板換成Nano或其他Arduino版本,請自行將項目5的傳輸線做調當的調整。
造形設計(機構)
請參考轉盤商品(如下方影片)或永不停轉的抽獎大轉盤的概念設計作品的外觀。記得將8787及其相關電路的尺寸考量進去。
功能設計(電路、程式)
8787、Uno、馬達擴充板與TT馬達的連接線路圖如下:
在Pixetto Utility上選用形狀偵測功能:
讓8787識別並套用之(例如我們以先前至夏威夷旅行帶回的川普大叔紀念筆(如下圖)做為待測物),詳細操作方法可參考拙著《VIA Pixetto視覺感測器大開箱(unboxing):AI開發工具(Development Kits)篇》一文。
接著,在Pixetto Junior上拉出積木程式,如下圖。這個程式的邏輯是一開機後先讓馬達順轉後停止做自我測試(self test)。
接著,若8787「看見」前述的川普大叔人像商品後就逆轉。否則,就停止馬達轉動。
為了程式易於理解,我們亦在上圖的積木程式中加入了副程式(subroutines)───本例是用無傳回傳的function)的概念將馬達順轉forward()、逆轉backward()與停止stop()控制獨立成個別的程式片段來呼叫。
積木程式自動生成的Arduino程式碼如下所示:
#include
SmartSensor ss(3,4);
int motorIn1;
int motorIn2;
void forward() {
digitalWrite(motorIn1, HIGH);
digitalWrite(motorIn2, LOW);
}
void backward() {
digitalWrite(motorIn1, LOW);
digitalWrite(motorIn2, HIGH);
}
void stop() {
digitalWrite(motorIn1, LOW);
digitalWrite(motorIn2, LOW);
}
void setup() {
ss.begin();
motorIn1 = 5;
motorIn2 = 6;
pinMode(motorIn1, OUTPUT);
pinMode(motorIn2, OUTPUT);
forward();
delay(500);
stop();
} //end of setup()
void loop() {
if (ss.isDetected()) {
if (ss.getTypeID() == 0) {
backward();
delay(500);
}
} else {
stop();
} //end of if
} //end of loop()
本單元的操作影片下圖所示。
(作者為本刊專欄作家,本文原文)
- 用GenAI生成連連看樣板 - 2025/05/15
- 細談「春仔產生器」的專案拆解 - 2025/04/17
- 用生成式AI打造「春仔」產生器 - 2025/03/12
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!