發表文章

目前顯示的是 3月, 2018的文章

Scratch簡易人工智慧:有智慧的蟑螂與蟲蟲

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 筆者的網誌裡有兩個Scratch遊戲,分別為 Scratch 遊戲:水中踩蟑螂 與 Scratch 遊戲:蟲蟲危機 ,這兩個遊戲裡的蟑螂是 不會動 的,而瓢蟲就是直直前進地走,但現實生活中蟑螂與瓢蟲是不會這樣子走動的。底下簡短說明筆者的設計想法。 水中踩智慧蟑螂分身版 蟑螂在鞋子靠近(距離小於100)時,就會到處亂跑(隨機移動) 水中踩智慧蟑螂角色版 與分身版不同,角色版中的每個角色可以有自己的動作,所以筆者用了三種動作。 1. 隨機移動。 2. 沿著 X 軸移動 3. 沿著 Y 軸移動 智慧蟲蟲危機 榔頭靠近時,瓢蟲掉頭逃跑(向左轉180度 或 向右轉180度)。 遊戲試玩 水中踩智慧蟑螂 分身版  https://scratch.mit.edu/projects/210739581/ 水中踩智慧蟑螂 角色版 https://scratch.mit.edu/projects/210774882/ 智慧蟲蟲危機 https://scratch.mit.edu/projects/210770808/

Arduino 序列繪圖家 (Arduino serial plotter)

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 Aduino 序列繪圖家是在Arduino 1.6.6增加的功能,以往要將感測器收集到的資料化成圖時,往往都使用 Porcessing 來輔助,但Arduino 1.6.6以後的版本就可以直接使用序列繪圖家來呈現了。一起試試看畫底下的三角函數圖形吧。 硬體材料: Arduino UNO x 1 語法說明: 單一資料輸出時 Serial.println(data1); 兩筆資料要同時輸出時 Serial.print(data1); Serial.print(" "); Serial.println(data2); 或是 Serial.print(data1); Serial.print("\t"); Serial.println(data2); 範例程式: 從Arduino IDE 開啟 序列繪圖家 示範影片(Demo videos):

Youtube的使用技巧

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 本文是參考『 這就是95%使用者都不知道的「6大YouTube隱藏密技」,只要刪掉網址後的「ube」就會發生不可思議的事! 』與筆者本身的使用的一些經驗所作的筆記。 1. 下載音樂 只要刪除網址中的「ube」例如  https://www.youtube.com/watch?v=i0UxYDqlX6o 變成  https://www.yout.com/watch?v=i0UxYDqlX6o 或是在 「.com ]前面與「ube」後面加上「to」,例如  https://www.youtube.com/watch?v=i0UxYDqlX6o 變成  https://www.youtubeto.com/watch?v=i0UxYDqlX6o 2. Youtube 音效庫 此網址 https://www.youtube.com/channel/UCorqI2EE1avwlTCekjfi0LQ 有很多的免費音效可供下載。 3. 快捷鍵 K 播放或暫停 J 前進10秒 L 後退10秒 向右鍵 前進5秒 向左鍵 後對5秒 向上鍵 音量增加 向下鍵 音量減少 F 全螢幕 M 靜音 4. 重複播放影片 可使用此網站 http://www.tubereplay.com 將要重複播放的 youtube 影片網址複製到 Replay 按鈕前方的 Enter YouTube URL 文字,按下 Replay 按鈕,就可以重複播放影片了。

Scratch 3 遊戲:接籃球

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 筆者把原本的接雞蛋換成接籃球了。 教學影片(由高慧君老師提供) 裡下的積木非唯一方法 1. 建立得分變數 2. 男孩的角色積木 3. 籃球的角色積木 4. 生命的角色積木 那要怎麼改成接雞蛋呢? 專案程式範例: https://scratch.mit.edu/projects/210736447/

BlocksCAD 3D 積木程式建立雪花(Creating a 3D Snowflake Model with BlocksCAD)

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 BlocksCAD 是以類似Scratch積木程式來設計3D模型的 網頁版編輯器 。開啟 網頁版編輯器 後,可見到下圖: 在使用BlocksCAD建立雪花之前,筆者先以Scratch來說明如何做一個雪花圖形。首先切到貓咪角色的造型裡,將中心點設在左上角(這是因為筆者要使用向右旋轉的積木之緣故) 所用到的積木 如下: 這裡使用到造型蓋章的功能,會劃出目前角色的造型,而筆者要讓角色造型轉一圈(360),美轉15度就蓋章一次,結果如下 此時就可以用不一樣的造型,以及外觀中的效果積木就可以畫出類似下圖的雪花 複習Scratch在設計雪花用到的觀念 : 1. 旋轉:轉多少次就複製一次角色造型。 2. 迴圈:要將角色造型複製幾次。 3. 造型複製:畫筆的蓋章功能。 要在BlocksCAD裡建立雪花可分為下面步驟 : 1. 建立雪花的基本形狀,例如正方體。 2. 平移此基本形狀,例如沿著X軸平移5各單位。 3. 旋轉 此基本形狀,例如以X軸為中心旋轉15度。 4. 使用迴圈重複步驟1 ~ 3。 試試劃出下面的雪花圖形。 參考資料: [1]  https://www.blockscad3d.com/hourofcodesnowflake

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的範例程式 。 示範影片: 以上兩個影片不同處是在向左右走的方式細節不一樣。

不插電活動:圖畫紙程式設計

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 本篇文章主要參考 Code.org 上的不插電教材:「 Paper Graph Programming 」,進行的流程如下: 一、名詞認識 這部分要讓學生認識兩個名詞觀念:「演算法 Algorithm」與「程式 Program」。 可先讓學生先發表對這兩個字的認識,接著問學生Algorithm與Program的發音。 二、了解遊戲規則 說明有底下指令: Move One Square Right 向右移動一格 Move One Square Left  向左移動一格 Move One Square Up 向上移動一格 Move One Square Down 向下移動一格 Fill-In Square with color 將方格塗上顏色 以上述指令進行此兩個例子的示範 此時,詢問學生 有沒有比較好的指令表示方式 ?當然有囉。就是以圖形來表示: 問學生:「上圖的每個箭頭符號的動作是什麼?」並說明 箭頭符號 代表 程式 , 文字 代表 演算法 。 底下的演算法例子: 向右移動一格、向右移動一格、將方格塗上顏色。 可用圖形(也就是程式)表示: 於是我們就可以用更簡易的方式來表示之前的例子: 三、全班一起練習 以此例子作為開始: 老師念出下面的演算法讓學生開始用箭頭符號(程式)寫在紙上: 向右移動一格、將方格塗上顏色、 向右移動一格、向下移動一格 。 將方格塗上顏色、向左移動一格、向左移動一格、 將方格塗上顏色。 向下移動一格、 向右移動一格、 將方格塗上顏色、向右移動一格。 此時,可能會有學生發現有多餘的步驟,告訴他們這會在之後討論。設計出來的圖形(程式)會是: 如果學生還不熟悉如何進行的話,可再多進行幾個簡單的例子,例如: 等學生熟悉之後,再進行分組活動。 四、分組進行活動 此活動會用到 Four-by-Fours Activity Worksheet 活動檔案。 將學生分成兩人一組。 每組從活動檔案選擇一道題目圖形,例如 Image 5。 每組討論畫出此圖形的步驟(演算法)。 以箭頭符號來呈現這些步驟(演算法)的程式。 將程式與其他組別交換...

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舞步指令個數限制的積木所在說明:

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)函數來完成前進、後退、向左轉、向右轉,這四個動作嗎?

MIT App Inventor 2 乒乓球遊戲

圖片
若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。 筆者用過 Scratch 與 Java 設計過乒乓球遊戲後,此次要用MIT App Inventor 2來開發囉。首先可從 App Inventor Starter Apps 下載此次用到的素材: PongStarter.aia 。 準備專案素材 在AI2中匯入此檔案: 選擇PongStarter.aia檔案 此時會看到下圖,如果沒有看到平台的話,請將平台的Y軸設定低一點的值。 程式設計 一、讓球移動 固定方向直線往下移動 不固定方向往下移動 這邊使用亂數(random integer from....)積木來決定球要往下移動的方向。 使球反彈 碰到螢幕邊緣反彈 碰到平台反彈 二、移動平台 水平移動平台 三、計算得分 使用一個副程式(Procedure):changeAndShowScore與一個變數(Variable):Score 並在球碰到平台、開始按鈕按下、重置按鈕按下,此三種事件發生時改變分數。 四、遊戲結束 五、改變背景與增加音效 在UI設計中新增一個Sound元件的積木 使用一個副程式(Procedure):playSound來播放音效 並在球碰到邊緣或平台時,播放音效 六、音效播放控制 此部分要讓使用者可以選擇是否要有音效,使用一個CheckBox來控制,並將命名為SoundOnChkBox。 接著把playSound副程式修改 影片: 參考資料: http://www.appinventor.org/content/ai2apps/intermediateApps/pong