顯示具有 Wukong Breakout Board 標籤的文章。 顯示所有文章
顯示具有 Wukong Breakout Board 標籤的文章。 顯示所有文章

2024年6月23日 星期日

(AI應用) 跨域合作推樹藝AI:變色龍的智慧冒險

 前一篇文章:(AI應用) 森林探險

《跨域合作推樹藝AI:變色龍的智慧冒險》

在一片遼闊的森林裡,住著一隻名叫查理的變色龍。查理擁有一項特別的技能,他能夠改變自己的顏色來偽裝自己。不過,查理還有一個更大的夢想,他希望能夠學習AI技術,來幫助森林裡的朋友們認識和推廣工藝AI。

一天,查理決定開始他的冒險,他需要拜訪六個重要的單位來學習並推廣他們的工藝AI計畫。


第一站:國立台灣工藝研究發展中心

查理來到了國立台灣工藝研究發展中心,這裡是森林裡智慧的象徵。中心的學者們告訴查理,他們提供計畫補助和指導,幫助創作者們實現他們的工藝夢想。他們教會查理如何使用AI來分析和改進工藝設計,並讓他了解計畫補助的申請流程。查理學到了很多,並在心中記下了他們的LOGO。


第二站:樹藝工坊

接著,查理來到了樹藝工坊。這裡的樹爺爺是一位手藝精湛的工匠,他們負責提供DIY材料包和工藝設計。樹爺爺熱情地展示了各種精美的材料包,並告訴查理如何將AI技術應用於工藝設計中,以創造出更加獨特和創新的作品。查理非常興奮,並記下了樹藝工坊的LOGO。


第三站:奧斯丁國際有限公司

然後,查理來到了奧斯丁國際有限公司。這裡的工作人員專門負責課程活動的推廣和DIY材料包的行銷。他們向查理介紹了如何利用社交媒體和各種活動來推廣工藝AI,並展示了他們成功的行銷案例。查理學會了許多推廣技巧,並記住了奧斯丁國際的LOGO。

第四站:台灣工藝創客青創基地

接下來,查理來到了台灣工藝創客青創基地。這裡聚集了許多充滿創意的年輕創客,他們在這裡進行各種工藝創作和交流。青創基地的負責人告訴查理,他們組織了許多工藝創客活動和成果展,展示了許多精彩的工藝作品。查理參觀了創客們的作品,並記下了青創基地的LOGO。

第五站:木頭爵士的工作坊

之後,查理來到了木頭爵士的工作坊。木頭爵士是一位出色的木工師傅,專門負責木工加工。他展示了如何利用AI技術優化木工加工流程,創作出更加精美和精確的木製工藝品。木頭爵士還向查理介紹了如何將AI與傳統木工技術結合,實現現代與傳統的完美融合。查理學到了寶貴的木工知識,並記下了木頭爵士的LOGO。

第六站:國立虎尾科技大學

最後,查理來到了國立虎尾科技大學。這裡的老師們結合社會責任,將工藝AI融入到課程中,培養出一批批優秀的學生。他們教會查理如何在課程中引入AI技術,並展示了他們的成功案例。查理非常受啟發,並記住了虎尾科技大學的LOGO。

結尾

在完成了六站的學習之旅後,查理回到了森林。他決定利用自己學到的AI技術,來幫助森林裡的朋友們認識和推廣這些單位的工藝AI計畫。查理運用他的變色技能,把每個單位的LOGO展示在他身上,並開始教森林裡的動物們如何利用AI來提升他們的工藝作品。


從此,森林裡充滿了創意和智慧,每個動物都在查理的幫助下,創作出了一個個精彩的工藝作品。而查理,則成為了森林裡最受尊敬的智慧大師。


範例一、五個標籤的學習

  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
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
from microbit import *
from AILens import *
from Wukong import *
wk = WUKONG()
import radio
radio.config(group=16)
radio.on()
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
LearnID = 1
sleep(2000)
while True:
    message = radio.receive()
    if message:
       display.show(message)
    if button_a.was_pressed():
        mode += 1
        mode %= 5
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        elif mode == 1:
            ai.switch_function(Face)
        elif mode == 2:
            ai.switch_function(Ball)
        elif mode == 3:
            ai.switch_function(Card)
        else:
            ai.switch_function(Learn)
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    elif mode == 1:
        if ai.get_face():
            display.show(Image.HAPPY)
            radio.send('Owner')
        else:
            display.show(Image.SAD)
            radio.send('non-owner')
    elif mode == 2:
        if ai.get_ball_color() == "Red":
            display.show(Image.HAPPY)
            radio.send('Happy')
        else:
            display.show(Image.SAD)
            radio.send('Sad')
    elif mode == 3:
        if ai.get_card_content() == "Stop":
            display.show("S")
            wk.set_servo(0, 90)
            wk.set_servo(1, 90)
        elif ai.get_card_content() == "Forward":
            display.show("F")
            wk.set_servo(0, 0)
            wk.set_servo(1, 0)
        elif ai.get_card_content() == "Back":
            display.show("B")
            wk.set_servo(0, 180)
            wk.set_servo(1, 180)
        elif ai.get_card_content() == "Turn left":
            display.show("L")
            wk.set_servo(0, 0)
            wk.set_servo(1, 180)
        elif ai.get_card_content() == "Turn right":
            display.show("R")
            wk.set_servo(0, 180)
            wk.set_servo(1, 0)
        else:
            display.show(Image.SAD)
    else:
        if button_b.was_pressed():
            display.scroll('Learn')
            display.show(LearnID)
            ai.learn_object(LearnID)
            sleep(500)
            display.scroll('OK')
            LearnID +=1
            if LearnID == 6:
                LearnID = 1
        ai.get_image()
        buff = ai.get_learn_data()
        display.show(buff[0])
        sleep(2000) 


(AI應用) 森林探險-歡樂蛙與變色龍

上一篇文章:(AI應用) 森林的愛情故事

《森林探險:歡樂蛙與變色龍的奇妙之旅》
在一片美麗而神秘的森林裡,住著一隻活潑的歡樂蛙和一隻神奇的變色龍。變色龍擁有AI能力,不僅可以變換身體的顏色,還能夠辨識方向。這天,歡樂蛙和變色龍決定開車遊覽這片美麗的森林,開始一場奇妙的探險之旅。
他們有一輛可愛的小車子,由歡樂蛙來操控方向盤,而變色龍則利用AI技術來辨識方向和路徑。變色龍的頭上戴著智能AI鏡頭,可以實時分析路況,並將導航信息傳給歡樂蛙。
“準備好了嗎,變色龍?”歡樂蛙興奮地問道。
“當然,出發吧!”變色龍回答,然後開始啟動AI系統,分析周圍的環境和路徑。
車子沿著森林的小徑前進,兩旁是茂密的樹木和五彩繽紛的花朵。變色龍利用AI技術,不斷地告訴歡樂蛙應該向左轉還是向右轉,避開了許多障礙和困難。
“前方100米有一個彎道,記得向右轉哦!”變色龍提醒道。
“明白!”歡樂蛙專心地操控著方向盤,按變色龍的指示行駛。
他們一路上遇到了許多有趣的事情。歡樂蛙和變色龍看到了一群在樹梢間跳躍的松鼠,還有一些美麗的蝴蝶在花叢中飛舞。變色龍的AI鏡頭捕捉到了這些美麗的畫面,並即時傳送給歡樂蛙看。
“看,那邊有一隻漂亮的藍色蝴蝶!”變色龍興奮地說。
“哇,真是太美了!”歡樂蛙也不禁驚嘆道。
當他們經過一條小河時,變色龍的AI鏡頭偵測到了水中的一塊大石頭。
“小心前方的石頭,我們需要稍微轉向左邊。”變色龍提醒道。
歡樂蛙靈活地轉動方向盤,成功地避開了石頭。車子順利地繼續前進。
就在他們享受這段美好旅程的時候,天空突然變得陰暗,開始下起了小雨。變色龍的AI系統馬上偵測到了這一變化,並快速地計算出最近的避雨地點。
“前方不遠處有一個小山洞,我們可以去那裡避雨。”變色龍建議道。
“太好了,我們快去吧!”歡樂蛙說。
他們快速地駛向小山洞,找到了一個安全的避雨場所。歡樂蛙和變色龍在山洞裡休息,聽著外面淅瀝的雨聲,感到無比的平靜和愉快。
雨停後,陽光再次穿過雲層,灑在森林裡,變成了一片金色的海洋。歡樂蛙和變色龍繼續他們的旅程,發現這片森林在雨後變得更加美麗和清新。
“這真是一段奇妙的旅程!”歡樂蛙感慨道。
“是啊,我們一起經歷了許多美好的時刻。”變色龍微笑著說。

最終,他們回到了家,帶著滿滿的回憶和美好的故事。這段森林探險讓他們更加了解彼此,也更加珍惜這片美麗的森林。

範例一:行動卡片辨識

 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from microbit import *
from AILens import *
import radio
radio.config(group=16)
radio.on()
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    message = radio.receive()
    if message:
       display.show(message)
    if button_a.was_pressed():
        mode += 1
        mode %= 4
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        elif mode == 1:
            ai.switch_function(Face)
        elif mode == 2:
            ai.switch_function(Ball)
        else:
            ai.switch_function(Card)
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    elif mode == 1:
        if ai.get_face():
            display.show(Image.HAPPY)
            radio.send('Owner')
        else:
            display.show(Image.SAD)
            radio.send('non-owner')
    elif mode == 2:
        if ai.get_ball_color() == "Red":
            display.show(Image.HAPPY)
            radio.send('Happy')
        else:
            display.show(Image.SAD)
            radio.send('Sad')
    else:
        if ai.get_card_content() == "Stop":
            display.show("S")
        elif ai.get_card_content() == "Forward":
            display.show("F")
        elif ai.get_card_content() == "Back":
            display.show("B")
        elif ai.get_card_content() == "Turn left":
            display.show("L")
        elif ai.get_card_content() == "Turn right":
            display.show("R")
        else:
            display.show(Image.SAD)

範例二、360度伺服馬達控制

 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from microbit import *
from AILens import *
from Wukong import *
wk = WUKONG()
import radio
radio.config(group=16)
radio.on()
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    message = radio.receive()
    if message:
       display.show(message)
    if button_a.was_pressed():
        mode += 1
        mode %= 4
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        elif mode == 1:
            ai.switch_function(Face)
        elif mode == 2:
            ai.switch_function(Ball)
        else:
            ai.switch_function(Card)
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    elif mode == 1:
        if ai.get_face():
            display.show(Image.HAPPY)
            radio.send('Owner')
        else:
            display.show(Image.SAD)
            radio.send('non-owner')
    elif mode == 2:
        if ai.get_ball_color() == "Red":
            display.show(Image.HAPPY)
            radio.send('Happy')
        else:
            display.show(Image.SAD)
            radio.send('Sad')
    else:
        if ai.get_card_content() == "Stop":
            display.show("S")
            wk.set_servo(0, 90)
            wk.set_servo(1, 90)
        elif ai.get_card_content() == "Forward":
            display.show("F")
            wk.set_servo(0, 0)
            wk.set_servo(1, 0)
        elif ai.get_card_content() == "Back":
            display.show("B")
            wk.set_servo(0, 180)
            wk.set_servo(1, 180)
        elif ai.get_card_content() == "Turn left":
            display.show("L")
            wk.set_servo(0, 0)
            wk.set_servo(1, 180)
        elif ai.get_card_content() == "Turn right":
            display.show("R")
            wk.set_servo(0, 180)
            wk.set_servo(1, 0)
        else:
            display.show(Image.SAD)


(AI應用) 森林的愛情故事-彩虹鳥和亮亮鼠

上一篇文章:(AI應用) 變色龍與酷炫豬的冒險

《彩虹鳥和亮亮鼠的愛情》

在茂密的森林裡,住著一群友善又有趣的動物朋友們。他們每個人都有自己的獨特本領,讓整個森林充滿了生機和活力。其中,變色龍是一個非常特別的存在,他不僅可以利用AI技術變換身體的顏色,還學會了人臉辨識和紅珠偵測的能力。

變色龍的朋友們包括先知鳥、彩虹鳥、亮亮鼠和酷炫豬。這些動物們共同守護著這片美麗的森林,有一天,一個特別的消息在森林裡傳開了:彩虹鳥和亮亮鼠要結婚了!

在婚禮前幾天,變色龍和先知鳥在森林裡散步,突然感應到一顆紅珠正在快速接近。先知鳥立即啟動超音波測距,發現紅珠就在不遠處。

“變色龍,有一顆紅珠正向我們靠近!”先知鳥興奮地叫道。

變色龍馬上通知了彩虹鳥和亮亮鼠。他們決定利用這顆紅珠來為即將到來的婚禮增添一份神秘的祝福。

彩虹鳥展開了它那五彩繽紛的羽毛,開始在空中飛舞,閃耀出絢麗的光芒,通知所有動物們紅珠即將到來。亮亮鼠也加入了彩虹鳥的行列,閃爍著它那亮亮的小眼睛,讓整片森林都沐浴在光芒中。

酷炫豬看到光芒,立刻用大門牙把micro

頂在頭上,準備好迎接紅珠的到來。他快速地挖掘出一個小坑,等待紅珠落下,確保紅珠的能量能夠安全地被大家使用。

當紅珠終於降落在森林中央時,所有動物都聚集在一起。他們看到紅珠散發出神秘而美麗的光芒,感到無比的興奮和好奇。變色龍、先知鳥、彩虹鳥和亮亮鼠圍在紅珠周圍,研究著這顆神奇的珠子。

變色龍利用它的AI技術,開始分析紅珠的能量,發現這顆紅珠可以為森林帶來持久的光明和溫暖。先知鳥利用超音波進一步確認了紅珠的穩定性,保證它不會對森林造成任何危害。

“這顆紅珠真是太棒了!它可以讓我們的婚禮更加美麗和特別。”彩虹鳥說。

亮亮鼠也點頭同意:“是的,這顆紅珠的能量將會給我們的婚禮帶來更多的光彩和祝福。”

在紅珠的光芒照耀下,所有動物們都感到一種前所未有的溫暖和幸福。婚禮當天,彩虹鳥和亮亮鼠在紅珠的光芒下宣誓,他們的愛情在所有朋友們的見證下變得更加閃亮和堅定。

變色龍和他的朋友們為彩虹鳥和亮亮鼠的婚禮準備了很多驚喜。變色龍用他變幻的顏色為婚禮現場增添了無限的美麗,先知鳥用它的歌聲為大家帶來了動人的音樂,酷炫豬則用他的門牙頂著micro:bit,記錄下這一個個美好的瞬間。

這片森林因為紅珠的到來變得更加美麗和安全,而變色龍和他的朋友們也成為了這片森林的守護者,用他們的智慧和力量,守護著這片充滿奇蹟的土地。

範例一、紅色球的辨識

 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from microbit import *
from AILens import *
import radio
radio.config(group=16)
radio.on()
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    message = radio.receive()
    if message:
       display.show(message)
    if button_a.was_pressed():
        mode += 1
        mode %= 3
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        elif mode == 1:
            ai.switch_function(Face)
        else:
            ai.switch_function(Ball)
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    elif mode == 1:
        if ai.get_face():
            display.show(Image.HAPPY)
            radio.send('Owner')
        else:
            display.show(Image.SAD)
            radio.send('non-owner')
    else:
        if ai.get_ball_color() == "Red":
            display.show(Image.HAPPY)
            radio.send('Happy')
        else:
            display.show(Image.SAD)
            radio.send('Sad')


(AI應用) 變色龍與酷炫豬的冒險

前一篇文章:(AI應用) micro:bit/Wukong Breakout Board/Smart AI Lens三方合作用Python撰寫顏色辨識程式

《變色龍與酷炫豬的冒險》

在茂密的森林裡,住著一隻神奇的變色龍。他不僅可以利用AI技術來變換身體的顏色,還學會了一項新技能——人臉辨識。這些技術都是由李永謨老師和敏哥教授共同研發的。

一天,變色龍對他的朋友酷炫豬說:“酷炫豬,我現在有了新技能!當AI發現主人來了,我會呈現笑臉;若不是主人,而是其他動物,我則會顯示哭臉。”

酷炫豬對變色龍的這項新技能感到非常好奇,他問:“那我們可以用這個技能來幫助大家嗎?”

變色龍點點頭:“當然可以!我們可以一起守護這片森林,讓大家都知道誰是朋友,誰是陌生人。”

於是,變色龍和酷炫豬開始了他們的森林守護計畫。每當有動物經過,變色龍都會啟動他的人臉辨識功能。如果AI識別出來的是他的主人李老師,變色龍就會開心地呈現笑臉。如果是其他動物,變色龍就會顯示哭臉,讓酷炫豬知道有陌生人來了。

一天,森林裡的小動物們正在玩耍,突然,一隻從未見過的狐狸悄悄地靠近。變色龍立刻啟動了人臉辨識功能,發現這不是他的主人。他的身體馬上變成了哭臉,並向酷炫豬發出警報。

酷炫豬看到了變色龍的哭臉,知道有陌生人來了。他迅速用他堅硬的大門牙把micro:bit頂在頭上,並且用鼻子發出低沉的警告聲,讓所有的小動物們都警覺起來。

狐狸看到大家都對他保持警惕,明白自己已經被發現了。他無奈地退回了森林深處,不再打擾這群小動物們。

當天晚上,李老師來到了森林裡。變色龍立刻識別出來,開心地變成了笑臉。酷炫豬看到變色龍的笑臉,也歡快地跑過去迎接李老師。

李老師摸了摸變色龍的頭,稱讚道:“你們真是好幫手,今天又保護了大家。”

變色龍和酷炫豬高興地笑了,他們知道,他們的森林守護計畫正在成功進行著。他們不僅能夠保護這片美麗的森林,還能讓大家感到安心和快樂。

從那天起,變色龍和酷炫豬成為了森林裡的英雄,所有的動物們都非常信任和依賴他們。無論白天還是夜晚,他們都用自己的技能守護著這片森林,讓每個角落都充滿了安全和歡笑。

故事中的角色和功能
變色龍:他負責使用AI技術來辨識顏色和人臉。他的身體上戴著一個智能AI鏡頭,可以通過I2C接口連接到micro:bit。
酷炫豬:他操控著這段程式碼,確保一切順利運行。當有需要時,他會用堅硬的大門牙頂著micro:bit,讓它工作得更好。

範例一:新增辦識人臉功能

 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
38
39
40
41
from microbit import *
from AILens import *
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    if button_a.was_pressed():
        mode += 1
        mode %= 2
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        else:
            ai.switch_function(Face )
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    else:
        if ai.get_face():
            display.show(Image.HAPPY)
        else:
            display.show(Image.SAD)

程式解析
1.導入模塊:首先,程式碼導入了micro:bit和AILens的模塊,這些是讓變色龍的AI技術運作的關鍵。

1
2
from microbit import *
from AILens import *

2.初始化顯示和AI:接著,顯示一個小的心形圖案,並初始化AI鏡頭,預設設置為顏色辨識模式。

1
2
3
4
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)

3.模式設置:設置一個變數mode來記錄當前的工作模式(0為顏色辨識,1為人臉辨識)。然後讓micro:bit休眠兩秒鐘。

1
2
mode = 0
sleep(2000)

4.主循環:在主循環中,不斷檢查按鈕A是否被按下。如果被按下,切換模式,並根據模式顯示相應的數字和圖案。根據模式切換AI功能為顏色辨識或人臉辨識。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
while True:
    if button_a.was_pressed():
        mode += 1
        mode %= 2
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        else:
            ai.switch_function(Face)
        display.show(Image.HEART)

5.圖像獲取與顯示:在每個循環中,獲取AI鏡頭的圖像。如果模式為顏色辨識,則根據不同顏色顯示相應的字母。如果是人臉辨識,則顯示快樂或悲傷的表情。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
ai.get_image()
if mode == 0:
    if (ai.get_color_type() == "Green"):
        display.show("G")
    elif (ai.get_color_type() == "Red"):
        display.show("R")
    elif (ai.get_color_type() == "Blue"):
        display.show("b")
    elif (ai.get_color_type() == "Yellow"):
        display.show("Y")
    elif (ai.get_color_type() == "Black"):
        display.show("B")
    elif (ai.get_color_type() == "White"):
        display.show("W")
    else:
        display.show(Image.SAD)
else:
    if ai.get_face():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)

範例二:讓變色龍加上通訊功能

 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
38
39
40
41
42
43
44
45
46
47
48
49
from microbit import *
from AILens import *
import radio
radio.config(group=16)
radio.on()
display.show(Image.HEART_SMALL)
ai = AILENS()
ai.switch_function(Color)
display.show(Image.HEART)
mode = 0
sleep(2000)
while True:
    message = radio.receive()
    if message:
       display.show(message)
    if button_a.was_pressed():
        mode += 1
        mode %= 2
        display.show(mode+1)
        sleep(500)
        display.show(Image.HEART_SMALL)
        if mode == 0:
            ai.switch_function(Color)
        else:
            ai.switch_function(Face )
        display.show(Image.HEART)
    ai.get_image()
    if mode == 0:
        if (ai.get_color_type() == "Green"):
            display.show("G")
        elif (ai.get_color_type() == "Red"):
            display.show("R")
        elif (ai.get_color_type() == "Blue"):
            display.show("b")
        elif (ai.get_color_type() == "Yellow"):
            display.show("Y")
        elif (ai.get_color_type() == "Black"):
            display.show("B")
        elif (ai.get_color_type() == "White"):
            display.show("W")
        else:
            display.show(Image.SAD)
    else:
        if ai.get_face():
            display.show(Image.HAPPY)
            radio.send('Owner')
        else:
            display.show(Image.SAD)
            radio.send('non-owner')


範例三、酷炫猪的接收訊息的功能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from microbit import *
import radio
radio.config(group=16)
radio.on()
mode = 0
while True:
    message = radio.receive()
    if message == 'Owner':
        display.show(Image.SMILE)
    elif message == 'non-owner':
        display.show(Image.SAD)


2024年6月17日 星期一

(AI應用) micro:bit/Wukong Breakout Board/Smart AI Lens三方合作用Python撰寫顏色辨識程式

參考文章:AI-Lens-Python Samples Code

程式套件:EF_Produce_MicroPython-master

程式編輯器:https://python.microbit.org/

專案程式要先從程式套件中,下載兩個重要程式,Wukong.py和AILens.py到程式編輯器的專案中。



範例一:顏色辨識

 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
from microbit import *
from AILens import *
ai = AILENS()
ai.switch_function(Color)
while True:
    ai.get_image()
    if (ai.get_color_type() == "Green"):
        display.scroll("Green")
        sleep(2000)
    elif (ai.get_color_type() == "Red"):
        display.scroll("Red")
        sleep(2000)
    elif (ai.get_color_type() == "Blue"):
        display.scroll("Blue")
        sleep(2000)
    elif (ai.get_color_type() == "Yellow"):
        display.scroll("Yellow")
        sleep(2000)
    elif (ai.get_color_type() == "Black"):
        display.scroll("Black")
        sleep(2000)
    elif (ai.get_color_type() == "White"):
        display.scroll("White")
        sleep(2000)
    else:
        display.show(Image.SAD)

範例二:控制燈的顏色
 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
38
39
40
41
42
43
44
45
46
from microbit import *
from AILens import *
import neopixel

# 初始化AILens
ai = AILENS()
ai.switch_function(Color)

# 初始化WS2812B LED,假設有4顆LED連接在pin16上
np = neopixel.NeoPixel(pin16, 4)

def set_color(color):
    for i in range(4):
        np[i] = color
    np.show()

while True:
    ai.get_image()
    color_type = ai.get_color_type()
    if color_type == "Green":
        set_color((0, 255, 0))  # 綠色
        display.scroll("Green")
        sleep(2000)
    elif color_type == "Red":
        set_color((255, 0, 0))  # 紅色
        display.scroll("Red")
        sleep(2000)
    elif color_type == "Blue":
        set_color((0, 0, 255))  # 藍色
        display.scroll("Blue")
        sleep(2000)
    elif color_type == "Yellow":
        set_color((255, 255, 0))  # 黃色
        display.scroll("Yellow")
        sleep(2000)
    elif color_type == "Black":
        set_color((0, 0, 0))  # 黑色(關閉LED)
        display.scroll("Black")
        sleep(2000)
    elif color_type == "White":
        set_color((255, 255, 255))  # 白色
        display.scroll("White")
        sleep(2000)
    else:
        set_color((0, 0, 0))  # 關閉LED
        display.show(Image.SAD)