發表文章

目前顯示的是有「mBlock」標籤的文章

mBot 遇上打磚塊,來運動囉。

圖片
修改文部落格的文章 Scratch 遊戲:打磚塊 後,就可以用 mBot 裡的超音波來玩打磚塊遊戲了。只把 打磚塊 遊戲中平台角色的程式積木 換成用超音波的距離偵測 這裡只對座標轉換的方式做點說明: 1. 限制超音波所感測到的距離在30公分以下。 2. Scratch的水平畫面(X座標)寬度為 480 (從 -240 到 240 )。 3. 於是 超音波所感測到的 距離 * 16 - 240 就會是 ( -240 到 240 )了。 底下用手拿書本來玩的影片: 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

2021 雲林縣仁和國小 mBot 冬令營課程紀錄

圖片
2021/01/29、2021/02/01、2021/02/02 三天上午,筆者受邀至 雲林縣仁和國小 進行 mBot 冬令營的活動,在此紀錄,也感謝仁和國小 余老師的邀請。 此次主要是進行 mBot擴充包 的組裝、擴充包的程式設計、認識人工智慧。擴充包含有 六足機器人 、 動感小貓 、 聲光互動 。 2021冬令營課程大綱 2021/01/29 mBot 冬令營 Day 1: mBot擴充包介紹 Beetle 甲蟲組裝 Beetle 程式設計 Beetle 循跡 2021/02/01 mBot 冬令營 Day 2: Otto二足機器人程式設計 動感小貓組裝 聲控天蠍組裝 螳螂組裝 程式設計自由發揮 2021/02/02 mBot 冬令營 Day 3: 語音辨識 影像辨識 文字轉語音 表情面板介紹 心得紀錄: 第一天上午提供小朋友組裝手冊與組裝影片,讓小朋友自己做選擇,當天課程要結束前,小朋友都喜歡看組裝手冊而不想看組裝影片。第二天提供小朋友Otto二足機器人,兩人控制一隻Otto機器人的雙腳,讓小朋友慢慢摸索出怎麼控制二足機器人,當小朋友自己找出方法控制Otto時,他們都很開心。第三天介紹了mBlock提供的認知服務功能,以及mBot表情面板,而小朋友對文字轉語音非常有興趣。這一群小朋友都會先自己試著設計程式,當程式功能不如自己所預期時,才會來問我。而筆者好喜歡這樣子的小朋友喔! 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

2020 雲林縣仁和國小 mBot 夏令營活動紀錄

圖片
2020/07/15 ~ 2020/07/17 三天,筆者受邀至 雲林縣仁和國小 進行 mBot 夏令營的活動,在此紀錄,也感謝仁和國小 余老師的邀請。 2020/07/15 mBot 夏令營 Day 1: mBot元件認識 mBot 介紹 mBot 三模式 認識Scratch 積木,打地鼠遊戲製作 燈光音樂秀 Day 1 上課講義 Day 1 活動剪影 Day 1 Scratch 打地鼠作品 Day 1 心得: 小朋友的音感實在好。 小朋友很有才。 請繼續發揮自己的想法喔。 2020/07/16 mBot 夏令營 Day 2: 光線感測器 走長方形 推紙杯 軌道設計 巡跡程式設計 最後來個遙控器相撲比賽 Day 2 上課講義 Day 2 活動剪影 Day 2 相撲比賽 心得: 每位小朋友都認真地完成屬於自己的積木程式,也走完巡跡路線,明天一起繼續自我挑戰喔! 2020/07/17 mBot 夏令營 Day 3:巡跡競賽。 1. 直線競速 2. 巡跡賽 3. 創意軌道賽 【 疑,直線不是容易走嗎? 為什麼有紅色線呢? 是黑色就可以用嗎? ...etc... 】 Day 3 上課講義 Day 3 活動剪影 Day 3 直線競速 Day 3 循跡賽 Day 3 創意軌道賽 心得: 認真又積極的一群好孩子,有緣再會啦! 心得總結: 一開始有點擔心學童對程式設計會有害怕的情況,於是在開始積木程式教學時,就對學童說:「程式設計沒有標準答案,有想法,先試試,我也會協助你們喔。」在製作 Scratch 打地鼠時,學童就開始很積極地詢問:「怎麼計算分數」、「怎麼計時」等功能,學童在設計打地鼠一直意猶未盡地想繼續修改。而在循跡部分,也請學童自己設計軌道與設計程式,試著走走看,走完後,在一起討論所發現的疑問,例如:「同樣的程式,為什麼每次走的結果都不一樣」、「同樣的程式,在不同車子會有不同的結果」等。課程結束時,學童們也是意猶未盡地想繼續比賽,真是一群認真又積極的好孩子!我們有緣再見喔! 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

如何解釋mBlock這兩個串口積木

圖片
mBlock有讀取串口(SerialPort)的兩個積木: 我們可以用底下例子解釋這兩個串口積木。 有一對情侶在聊天, 情境一 突然女方問男方:「你剛剛說了幾個字?」男方:「.....我怎麼可能記得啊!」 女方問男方:「你等一下要說幾個字的話?」男方:「3個。」 女方:「是哪三個字?」男方: 「不想說」 "串口可讀取字節數" (UNO問) ==> 回應數字5時,代表藍芽模組 "有5個字要說" "串口讀取一個字節" (UNO 女方 問下一個字是什麼) ==> 這時會得到 不 這個字 "串口讀取一個字節" (UNO 女方 問下一個字是什麼) ==> 這時會得到 想 這個字 "串口讀取一個字節" (UNO 女方 問下一個字是什麼) ==> 這時會得到 說 這個字 "串口讀取一個字節" (UNO 女方問下一個字是什麼) ==> 這時得不到任何字 而mBlock只提供一次讀一個字的積木,但其實Arduino可是有提供其他方法讀取的。 情境二 女方就是Arduino UNO,而男方是藍芽模組, 以男方準備說「不想說」這三個字為例。 這也是為什麼在mBlock程式會先用 "串口可讀取字節數" (「你等一下要說幾個字的話?」) 來判斷, 若學生問為什麼不要一次讀整個句子時,這時可以說:「甜言蜜語總是要一個一個字說嘛!」 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

mBlock 單元二十一:打地鼠模擬

圖片
在 Webduino 模擬器:打地鼠 一文中,筆者使用模擬器來模擬打地鼠,卻沒有實際硬體可以玩,所以本文將使用mBlock打造Arduino版的打地鼠。 硬體材料(Materials): Arduino UNO R3 板子 x 1 公對公杜邦線 x 14 公對母杜邦線 x 6 麵包板 x 1 蜂鳴器 x 1 I2C LCD x 1 四腳按鈕 x 4 LED x 4 1K 電阻 x 5 接線對應腳位 : 蜂鳴器接 D12 LCD SDA 接 A4 LCD SCL 接 A5 按鈕分別接 D3、D5、D7、D9 LED分別接 D2、D4、D6、D8 完成圖(The finished assembling): mBlock I2C LCD 擴展 要讓 mBlock 可以使用 I2C LCD 的積木,需在 mBlock中,開啟 擴展管理員 安裝擴展  LCD I2C Pack 1.03 。並將  NewLiquidCrystal  (本文使用 NewliquidCrystal_1.3.4.zip )解壓縮後,複製到mBlock 的 Arduino 程式庫路徑  C:\Program Files (x86)\mBlock\Arduino\libraries  。 在計分方面,筆者設計 當分數越高時,分數加越多 LED等待時間會 隨著分數越高,時間越短 示範影片: 程式範例可在此下載 。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

Otto機器人之簡易版的移動方式

圖片
在 Otto機器人動作之程式碼分析2 一文中,使用了比較複雜的方式,本文要以比較簡易的方式來實現前後左右的動作。首先說明本文中的腳與腿的位置,腿是指在Otto身體腰部的那兩個Servo,腳是指在Otto腿部的那兩個Servo,見下圖: 為了方便說明,所有的動作先以站立時為中心,實際情況還得考慮機構的一些細節,例如Otto的重量分布的問題。 前進與後退以左腳為起點,讓Otto的重心往前,並讓Otto左右擺動,Otto就會前進了;讓Otto的重心往後,並讓Otto左右擺動,Otto就會後退了。 角度變化可以類似下面的例子。 前進與後退時腿的角度變化: 90 --> 75 --> 60 --> 75 --> 90 --> 105 --> 120 --> 105 --> 90 前進時腳的角度變化: 90 --> 80 --> 70 --> 80 --> 90 --> 100 --> 110 --> 100 --> 90 後退時腳的角度變化: 90 --> 100 --> 110 --> 100 --> 90 --> 80 --> 70 --> 80 --> 90 向左走與向右走的想法就是讓重心偏移,也較就是在向左走時,重心偏左;在向右走時,重心偏右,這想法會很像螃蟹橫著走。 方法之一: 向左走 ==> 將Otto的右腳撐起,然後上下擺動左腳。 向右走 ==> 將Otto的左腳撐起,然後上下擺動右腳。 方法之二: 向左走 ==> 將Otto的右腳撐起,然後 同時 上下擺動兩腳。 向右走 ==> 將Otto的左腳撐起,然後 同時 上下擺動兩腳。 在此可以下載mBlock的範例程式 。 示範影片: 以上兩個影片不同處是在向左右走的方式細節不一樣。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

Otto機器人之舞蹈動作App設計

圖片
下圖為附件 Otto_Commander.aia 的畫面說明, 點一下 順序列表 上的舞步名稱就會刪除該舞步。 App 操作方式可參考: https://www.youtube.com/watch?v=zQ1Mn5OlHy0 Otto 動作結果 https://www.youtube.com/watch? v=9HF9vCxN8I4 https://www.youtube.com/watch?v=-aZIP6okzZ8 底下是想法的說明: 目前是以程式是以 a, b, c, d 四個英文字母對應四個舞步動作。 手機只要把這四個字母所組成的指令透過藍牙一次傳給 Otto就可以了。 例如手機傳送 a b c d c b a 這一串指令給 Otto 時, Otto就會做 抖左腳 、 抖右腳 、 抬左腳 、 抬右腳 、 抬左腳 、 抖右腳 、抖左腳 , 七個動作。 原因是因為硬體會有緩衝的空間來處理Serial Port(TX與RX)的資料。 另外下圖是在此App舞步指令個數限制的積木所在說明: 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

Otto機器人動作之程式碼分析2(Otto Source Code Understanding Part II)

圖片
在 Otto機器人動作之程式碼分析(Otto Source Code Understanding Part I) 一文中沒有看到前進、後退、向左轉、向右轉等動作,於是此文就要說明筆者的閱讀心得。Otto程式中有很多的動作都是呼叫Oscillator.cpp 裡的 Oscillator::refresh ()函式 _inc 是以 360除以迴圈次數算出來的。 迴圈次數是以動作總時間除以每次取樣時間。 不過筆者是用別的方式,如下的mBlock積木: 根據refresh()副程式 使用 sine正弦曲線來產生平順 的動作 例如要將馬達角度從60轉到90度時,不是使用下面的動作, 【設定馬達角度60】 【等待x秒】 【設定馬達角度90】 而是使用下面方法 【設定馬達角度60】 重複底下步驟直到跑完一個sine週期就是 2 * PI (360 度) 1.【設定馬達角度60 + 增加(些許)角度】 2.【等待n毫秒】 根據fresh()副程式,筆者設計出上圖的 動作(action) 積木指令。 成果影片: 讀者可以試著改變動作積木指令中的 LF、RF、LL、RL四個參數的值,例如將 前進積木從原本的 動作 30, 30, 20, 20 , 1 改成 動作 45, 45, 30, 30, 1 看看會怎麼樣。 mBlock程式範例可在此下載 。 給讀者思考的問題: 為什麼前進的動作角度要設定為 30, 30, 20, 20? 為什麼向左轉的動作角度設定為 30, 10, 20, 20? 可以不要使用正玹(sine)函數來完成前進、後退、向左轉、向右轉,這四個動作嗎? 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

鍵盤、按鈕、按鍵壓住時會連發嗎

圖片
本篇文章假設硬體沒發生機械彈跳(Bounce)訊號的情況下,如何處理彈跳情況(Debounce)請參考 【Arduino教學】實作05-按鈕Debounce教學影片 及 [Arduino] 消除機械彈跳 – Debounce 與  探討:Button Debouncing (軟體作法) 兩篇文章。 小時候玩紅白機(任天堂)時,用過連發把手與不連發把手,當時也不知道其中的原理,只覺得好玩,不過偶而會發現「連發」的功能有時也不好用啊,例如格鬥遊戲,需要「 重擊 」時,連發的功能完全無法用「 重擊 」攻擊對手阿 XD。那我們來了解一下按鍵的連發與不連發在積木上會是怎麼做。 觀念說明: 連發就是「在 重複判斷 按鍵是否有按下時,按鍵正好有按下。」類似下圖的概念,所以只要壓住按鍵,程式就會幫按鍵做連發的動作。 若要成為不連發的情況,需判斷按鍵「 由放開狀態變成按下狀態 」(下圖紅色箭頭所指的地方)才做動作。 mBlock範例:移動Panda 此範例 使用mBlock上的兩個事件功能: 當按下 XXX 鍵 與 當鬆開 XXX 鍵 。而本文範例以 上移鍵 為例子。 壓住 上移鍵 時會 連發 的積木版本會像下圖 壓住 上移鍵 時不連發的的積木版本會像下圖 此程式觀念了解後,就可以應用到 Arduino 按鈕或開關相關 的程式處理了。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

當彈珠台遇到了arduino 之mBlock程式設計 ( mBlock: Taiwan Pinball Project )

圖片
本篇文章主要講解 Arduino 台式彈珠台的程式設計部分。 硬體材料: 1. Arduino UNO R3 板子 x 1 2. 感應開關(限位開關)  x  9 3. 公對公杜邦線  x  11 (開關 9 條,麵包板+5V 與 GND 各一條) 4. 公對母杜邦線  x 24 ( 開關 18 條,蜂鳴器 2 條,LCD 4 條) 5. 麵包板  x 1 6. 蜂鳴器  x 1 7. I2C LCD  x 1 8. 1K 電阻  x 9 接線對應腳位 : 開關接 D2 ~ D10 蜂鳴器接 D12 LCD SDA 接 A4 LCD SCL 接 A5 mBlock I2C LCD 擴展 要讓 mBlock 可以使用 I2C LCD 的積木,需在 mBlock中,開啟 擴展管理員 安裝擴展 LCD I2C Pack 1.03 。並將 NewLiquidCrystal  (本文使用 NewliquidCrystal_1.3.4.zip )解壓縮後,複製到mBlock 的 Arduino 程式庫路徑  C:\Program Files (x86)\mBlock\Arduino\libraries 。 再往下看前,請先思考彈珠檯要怎麼計分 底下是筆者所想到的幾個計分方式: 等差:1 + 2 + 3 + 4 + 5….  等比:1 + 2 + 4 + 8 + 16... 隨機加分:亂數1 + (亂數1+亂數2) + (亂數1+亂數2+亂數3) 質數:2 + 3 + 5 + 7 + 11 + 13 + 17 + 19 ... 當然還有其他的方式。 等差計分方式積木: 等比計分方式積木: 活動照片:  https://www.facebook.com/groups/yunlinmaker/permalink/1120988434702083/ 測試影片一: 測試影片二: 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the ...

Baud rate 是什麼?

圖片
Buadrate 可以想成兩個人要溝通時,雙方的 說話傳送速度 與 耳朵接收速度 ,假如甲方的 說話 傳送 速度 是一秒三個字,乙方的 耳朵接收速度 是一秒一個字,那當甲方說話時,乙方就會來不及處理了,就會造成聽不懂對方說什麼! 例如甲方說了:「 從 現在 開 始, 我 要告 訴 你一 件 天大 的 祕密!」 乙方會解讀成:「 從 開 我 訴 件 的 」 那套在兩個晶片溝通上,兩個晶片的溝通速度不一樣的話,就會有亂碼產生的可能,發生的情況可能會在下列情況: 1. 兩台電腦用RS232相連的時候。 2. 藍牙模組與MCU (Arduino UNO等)溝通時。 3. 電腦與 Arduino Uno 溝通時。 4. ....其他。 簡言之,機器不像人類這麼厲害可以自動調整 說話 傳送 速度 與 耳朵接收速度 這兩點,所以只好透過一些設定的方式來讓傳送速度與接收速度都一樣,讓雙方聽得懂對方的話語。 OK,下面的影片可以讓人了解一些的通訊觀念。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

mBlock Scratch Extension for Otto Robot

圖片
Hello everyone, the mBlock extension for otto robot is introduced in this article. 大家好,本文會介紹 mBlock 的 otto 擴展積木。(Download: Otto  ) Manage Extensions in mBlock, select Otto Extension. 在mBlock 的擴展管理器選擇 Otto。 The bluetooth code  https://github.com/OttoDIY/PLUS/tree/master/Bluetooth%20codes/OTTO_BT is used in this extension. 要使用此擴展,須將Otto的程式更新為官方的 OTTO_BT 程式。 After uploading OTTO_BT code to otto, it can be interacted with this mBlock extension(in Scratch mode). 將 OTTO_BT 程式上傳到 OTTO 控制板上,就可以使用此擴展與mBlock互動。 The extension blocks: Demo Video: "What is Otto ? Otto is an interactive robot that anyone can make!" Otto是什麼?Otto是自己可以製作的互動機器人! For more information, please go to  http://otto.strikingly.com/  . 詳細介紹請至官網  http://otto.strikingly.com/ 。 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

mBlock Extension for Arduino Esplora mBlock的Esplora擴展

圖片
此擴展為筆者所製作的,可在 mBlock 的擴展管理器下載: 也可至 mBlock 的官網下載: http://www.mblock.cc/extensions/ 。 在 Scratch 模式中,有幾個感測器需要在積木程式中做轉換(這是因為從積木程式得到的數值是未經過轉換的Raw Data),需要做轉換的有 三軸加速計的X、Y、Z軸。 溫度感測器。 搖桿的X、Y軸。 而在 Arduino 模式中,就不用做這些轉換的,因為 Arduino IDE 的內建 Esplora Library 已有做轉換了。 mBlock範例程式下載: Scratch Mode Example:  ScratchMode 。 Arduino Mode Example: ArduinoMode 。 參考資料: [1] http://www.mblock.cc/docs/create-extensions-for-mblock/ [2]  如何使用 mBlock 與 Arduino Esplora 互動 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

如何使用 mBlock 與 Arduino Esplora 互動

圖片
一、前言 在筆者文章一文: 在 S4A 軟體上玩 Arduino Esplora 有試過一些S4A的軟體,當初不知道怎麼用 mBlock 來與 Arduino Esplora 完整互動,就在最近在網路上找到了一些資訊,製作出可在 mBlock 的積木指令。 二、相關知識 因為 Esplora 上有多種感測器與硬體裝置(見下圖,圖取自Arduino官網) 於是 Esplora 在硬體設計上使用多工器(型號為74HC4067DB)來處理,所以只要能對這個多工器做高低電位的訊號輸入,就能得到對應感測器的數值(見下圖),例如要得到A-TEMP溫度的數值,就要對多工器輸入0110 (低高高低)的電位訊號,再從A4類比腳位讀取數值。 所幸在 Scratch 中,可以利用腳位 18 到腳位 21 分別來控制類比腳位A0到A3,那麼在mBlock中讀取Esplora上的溫度之積木程式要怎麼做呢?下圖為參考做法。 上圖中溫度的轉換公式適從Arduino IDE 中 Esplora程式庫查來的,轉換的結果單位為攝氏。 三、mBlock 積木程式 根據以上資訊我們就可以製作出給 mBlock 使用的積木程式指令了。 在使用之前,記得將控制板選 Arduino Leonardo ,並且更新 Esplora 板子的韌體為 mBlock 所使用的版本。 mBlock積木下載處 參考資料: [1] SuperEasy-A4S 若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 If you like this post, please click the ads on the blog or  buy me a coffee . Thank you very much.

狀態機的應用:紅外線遙控 mBot 的三色燈

狀態機的全名是 有限狀態機 ,在很多的 應用場合 會看到它的存在,例如紅綠燈、自動販賣機等。 上個月的元宵節讓筆者想到用紅外線遙控器來控制 mBot 上的三色 LED 燈,於是設計兩個版本的程式。 版本一(有限狀態機): 紅外線按鍵 D A B C E 狀態 控制車子行走 控制紅色燈 控制綠色燈 控制藍色燈 控制三色燈 狀態一:控制車子行走 紅外線按鍵 ↑ ↓ ← → 車子行進方向 前進 後退 左轉 右轉 狀態二:控制紅色燈 紅外線按鍵 ↑ ↓ 紅色燈 亮度增加 亮度減少 狀態三:控制綠色燈 紅外線按鍵 ↑ ↓ 綠色燈 亮度增加 亮度減少 狀態四:控制藍色燈 紅外線按鍵 ↑ ↓ 藍色燈 亮度增加 亮度減少 狀態五:控制三色燈 紅外線按鍵 ↑ ↓ 三色燈 亮度增加 亮度減少 版本一 mBlock 程式積木下載處。 版本二(只有一種狀態--等待紅外線的指令): 控制車子行走 紅外線按鍵 ↑ ↓ ← → 車子行進方向 前進 後退 左轉 右轉 控制紅色燈 紅外線按鍵 1 4 紅色燈 亮度增加 亮度減少 控制綠色燈 ...