使用VIA Pixetto的特徵點偵測功能設計「幸運轉輪」

作者: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程式碼如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include
#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()

本單元的操作影片下圖所示。

(作者為本刊專欄作家,本文原文

Ted Lee

Author: Ted Lee

從工程師轉任中學教師,又為了捍衛教育理念,投身成為 STEAM 教育工作者,自稱「無可救藥的人文教育理想主義者」的李俊德(Ted Lee)。

Share This Post On
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x