Arduino 初體驗
開始之前, 先請問大家希望以後工作時的月薪要多少 ?
沒有不景氣, 只有不爭氣 !
可以看看之前的中天新聞 「神魔之塔」吸金 登十大最賺錢遊戲 (一位香港青年賺走台灣許多錢!) (Youtube)
可以看看之前的中天新聞 「神魔之塔」吸金 登十大最賺錢遊戲 (一位香港青年賺走台灣許多錢!) (Youtube)
沒有不景氣, 只有不爭氣 ! 以下是我2017/01/20在電玩展拍的照片
▼請看台北國際電玩展, 門票不便宜但是卻人山人海喔 !
開始來玩 Arduino
==> 首先必須安裝 Arduino 板子的驅動程式 (Device Driver)
Arduino 驅動程式在哪 ?
Arduino 開發環境(IDE)和驅動程式在桌面上 Arduino 資料夾(找一下),
如果找不到可能是你開機沒開在 Multimedia(多媒體)分割區 !
這時可以重開機 或 點這下載解壓縮比較快 :-)(抓1.0.6版就很好用!)
安裝好驅動程式之後要仔細看 Arduino 板子被安排使用哪個通訊埠(這字念布; Port),
通常是 COM4, 但不一定喔 !
通常是 COM4, 但不一定喔 !
Q: 如何把 Arduino IDE 的介面改為中文 ? 改IDE中字型的大小 ?
A: 這很簡單: File 檔案 > Preferences 喜好設定
--然後在彈出的 喜好設定 小窗中, 從 "Editor Language" 的下拉選單 改選 繁體中文,
--順便把 Editor font size 字型大小改為 16 比較好看 !
--建議順便勾選 "Display line numbers" 這樣可幫程式碼編號 :-)
A: 這很簡單: File 檔案 > Preferences 喜好設定
--然後在彈出的 喜好設定 小窗中, 從 "Editor Language" 的下拉選單 改選 繁體中文,
--順便把 Editor font size 字型大小改為 16 比較好看 !
--建議順便勾選 "Display line numbers" 這樣可幫程式碼編號 :-)
注意, 啟動 Arduino IDE 之後, 請立刻做以下兩件事:
(a)確定有選對所連接的 Arduino 開發板型號: (通常已經自動選對了!)
Tools 工具 > Board 板子 > 選 Uno
(b)確定有選對連接的通訊埠(COM Port; 大陸稱通訊端口或串口 Serial Port):
Tools 工具 > Serial Port 串口序列埠 > 選你在裝置管理員看到 Uno 所在的 Port#
(a)確定有選對所連接的 Arduino 開發板型號: (通常已經自動選對了!)
Tools 工具 > Board 板子 > 選 Uno
(b)確定有選對連接的通訊埠(COM Port; 大陸稱通訊端口或串口 Serial Port):
Tools 工具 > Serial Port 串口序列埠 > 選你在裝置管理員看到 Uno 所在的 Port#
趕快來測試看看 Arduino 板子 和 電腦(PC/筆電) 合作愉快嗎 ?
使用 Arduino IDE 內建的範例 "LED 閃爍 Blinking" (1)點選 File > Examples > 1.Basics > Blink 叫入範例 (2)點按 以便編譯程式碼並把編譯好的機器碼傳入 Arduino板子的快閃記憶體(Flash)內; 如果一切正確, 送入 Arduino 板子的機器碼會自動執行 ! 你會看到 Arduino 板子上, 與 13 號接腳(Pin)連接的黃色 LED 會不斷的閃爍 !
原理: 因為程式碼是不斷的把 Pin 13 變有電(5V) ==> 沒電 ==> 有電 ==> 沒電 ==> . . .
說明:
Arduino 板子的 Pin 腳大多可以用來輸入或輸出 1 或 0, 稱為 GPIO 接腳
(General Purpose Input Output pin)
** 這裡說的輸入或輸出是針對 Arduino 板子上的 CPU
Arduino 板子的 Pin 腳大多可以用來輸入或輸出 1 或 0, 稱為 GPIO 接腳
(General Purpose Input Output pin)
** 這裡說的輸入或輸出是針對 Arduino 板子上的 CPU
再來, 多連接一個三色 LED 看看 (程式碼不變)
關於 三色 LED
三色 LED 模組共有四支腳位, 其中三隻當然是分別控制紅 R, 藍 B, 綠 G,
另外一隻腳通常有兩種情形:
(a)標示 - 減號表示共陰極, 意思是三個 LED 的 GND (負)是接在一起的,
這種三色 LED 這隻腳應該要連接到 Arduino 板子的 GND;
然後 R G B 這三隻腳分別在 HIGH (有電)時會使 LED 亮 !
(b)標示 V 表示共陽極, 意思是三個 LED 共用同一個正 + 極,
這個 V 是 VCC 的意思, 表示這支腳應該要連接到 Arduino 板子的 5V 或 3.3V;
然後 R G B 這三隻腳分別在 LOW(無電)時會使 LED 亮 !
*** 如此說來, 我們的三色 LED 這 V 腳應該連接到 5V, 但是..
可是, 事實上我們買的這三色 LED 是共陰極, 模組上的 V 是印錯的 !! 應該印減號 - 才對!
所以,
請把標示 V 這腳用杜邦公母線連接到 Arduino 的 GND (應該有三處是 GND)!!
(這我已經測試過, 確認我們買到的三色 LED標示 V 的腳其實應該標示 - 減號或 GND, 所以標示 V 的腳必須接Arduino的GND才對喔!)
另外一隻腳通常有兩種情形:
(a)標示 - 減號表示共陰極, 意思是三個 LED 的 GND (負)是接在一起的,
這種三色 LED 這隻腳應該要連接到 Arduino 板子的 GND;
然後 R G B 這三隻腳分別在 HIGH (有電)時會使 LED 亮 !
(b)標示 V 表示共陽極, 意思是三個 LED 共用同一個正 + 極,
這個 V 是 VCC 的意思, 表示這支腳應該要連接到 Arduino 板子的 5V 或 3.3V;
然後 R G B 這三隻腳分別在 LOW(無電)時會使 LED 亮 !
*** 如此說來, 我們的三色 LED 這 V 腳應該連接到 5V, 但是..
可是, 事實上我們買的這三色 LED 是共陰極, 模組上的 V 是印錯的 !! 應該印減號 - 才對!
所以,
請把標示 V 這腳用杜邦公母線連接到 Arduino 的 GND (應該有三處是 GND)!!
(這我已經測試過, 確認我們買到的三色 LED標示 V 的腳其實應該標示 - 減號或 GND, 所以標示 V 的腳必須接Arduino的GND才對喔!)
因為暫時不修改程式碼, 所以三色 LED這樣接: (1)標示 V 的腳必須接 Arduino 的 GND (2)拿一條杜邦公母線, 公的插入 Arduino 板子 Pin 13 的洞, 母的連到三色 LED的 R 或 G 或 B
(***)你可以三色 LED的 R G B 三個接腳都測試看看 !
測試 LED 慢慢變暗與慢慢變亮 (測試 analogWrite( ) 的功能) !
目的: 了解 Pin 3, 5, 6, 9, 10, 11 這六隻腳與其他腳(pin)不太一樣 !!!
就是只有Pin 3, 5, 6, 9, 10, 11 這六隻腳在使用 analogWrite(pin#); 之時
會有效果(輸出 0伏特 到 5 伏特之間的電壓)!!
其他 Pin 只能輸出 0 或 1 (通常代表 5 伏特)!
點這看關於 digitalWrite( ); 與 analogWrite( ); 的差別
就是只有Pin 3, 5, 6, 9, 10, 11 這六隻腳在使用 analogWrite(pin#); 之時
會有效果(輸出 0伏特 到 5 伏特之間的電壓)!!
其他 Pin 只能輸出 0 或 1 (通常代表 5 伏特)!
點這看關於 digitalWrite( ); 與 analogWrite( ); 的差別
該篇裡面也有更多關於 Arduino 的實驗(測試蜂鳴器), 有興趣的可以自己看著練習實驗 :-)
(a)保持三色 LED 模組連接方式不變; (b)開啟內建範例 Fade (淡入淡出) : File 檔案 > Examples 範例 > 01.Basics 基本 > 選 Fade (c)點按 IDE 的上傳圖示做編譯連結並 把程式機器碼上傳(Upload)到 Arduino 板子內(會自動執行), 看看LED 閃爍情形 !! 奇怪 ! 怎 LED 都不亮了 ?! 因為程式是控制 pin 9 不是 13 接腳啦 !! (d)先修改程式碼裡面的int led = 9; 改為int led = 13; //(把 9 改為 13 即可) 然後再次點按 IDE 的上傳圖示做編譯連結並 把程式機器碼上傳(Upload)到 Arduino 板子內(會自動執行), 看看LED 變化情形 !! 啥!? 沒慢慢變暗或慢慢變亮 !? 因為 .. Pin 13 這支腳沒支援類比(Analog, 大陸稱為"模擬")輸出啦 !!
(e)把程式碼的 13 改回 9, 或是重新載入範例 Fade 也可以; 然後, 把連接在 Uno 板子 13 腳的杜邦公母線改連接到 Uno 板子的 Pin 9 準備重新測試! (f)再次點按 IDE 的上傳圖示做編譯連結並 把程式機器碼上傳(Upload)到 Arduino 板子內(會自動執行), 看看LED 變化情形 !!!
Arduino 先暫時擺一邊, 後面還要用到喔 !
來玩好玩的 Processing 趣味程式
Processing是MIT(麻省理工學院)專為初學者設計,針對以視覺呈現為主的應用,提供簡易的程式環境,著重於動畫、互動與即時回饋等功能,以便讓設計者可以透過簡單程式實現你的創意。有了Processing這個簡單的程式語言,你可以學會繪圖、建立動畫和互動式圖形,甚至設計遊戲。本課程將藉由一些有趣的互動與遊戲範例,讓沒有任何程式基礎的同學也可以體驗到程式設計的樂趣,透過有趣的範例讓初學者學到基礎程式設計概念。
Processing 開發環境(IDE) yduProcessing 資料夾(找一下),
如果找不到可能是你開機沒開在 Multimedia(多媒體)分割區 !
這時可以重開機 或 點這下載 0120processing.zip 解壓縮比較快 :-)(抓1.0.6版就很好用!)
*** 還有, 也可以點這抓 mySample範例.zip 解壓縮後有許多有趣的 Processing 範例
注意老師的 Demo
第一次執行˙ Processing 請先做喜好設定以便可以在編輯窗顯示中文
課程名稱: 90分鐘學會趣味程式設計(用processing)
--- by [email protected] 育達科大 多媒體與遊戲系 蔡文能
processing 官方網站 http://processing.org/
課程內容:(都是使用 processing 電腦語言)
(0)畫個圓 (1)畫兩個橢圓 (2)畫個臉 (3)畫個會動的臉 (4)平行光照在球體上
(5)小畫家 (6)放屁蟲 (7)另一個小畫家 (8)大畫家 (9)吳冠中畫家的筆
(10)簡單生命時鐘 (11)經典時鐘 (12)創意時髦時鐘
(13)用滑鼠玩創意畫圖 (14)丟球實驗物理碰撞
(15)一閃一閃亮晶晶 (16)彩球繞繞繞 (17)小蚯蚓大泥鰍
(18)分子原子傻傻分不清楚 (19)千變萬化生命之樹(遞迴妙用)
(20)我也來扯鈴 (21)天女散花(粒子特效) (22)玩弄怪蛇
(23)驚聲尖叫示意圖 (24)特訓九九不是馬英九
========= processing 是 MIT 設計給藝術家設計師用的; 通常要寫兩個函數:
void setup( ) { // 只會做一次
}
void draw( ) { // 預設每秒 60 次, 可設定frameRate,
// ... 可查詢 frameRate 和 frameCount
}
///======================= 三種常用的 if ( ) 寫法 ..
if( 某種條件 ) 做這件事;
///=============================================================
if( 某種條件 ) { if( 某種條件 ) {
//.. //..
// 做這些事; // 做這些事;
}// if( }else{
// 否則做另一些事情;
} // if .. else ..
//===========================================================
int kk = 0; // 設定變數 kk 為整數且開始是 0; 不一定要叫 kk, 也不一定要用 int 整數;
/// ..但如用 float 實數要小心比較
while(38==38) {
// continue 會跑到這來
kk = kk+1; // 不一定是 + 1
//...
if(不想做了) break; // 通常是檢查會變的, 且通常與 kk 有關
if(只是這回合不想做) continue; // 直接繼續下一回合 (下一圈)
// ...
} // while 的結尾
// .. break 會到這
//==================================================================
張鈞雅做事情( money, 3388 ); //調用(叫用;呼叫;請) 函數 "張鈞雅做事情()"
//=========================
void 張鈞雅做事情( int pm, float haha ) { // 定義函數 "張鈞雅做事情()"
//...
//...
}
//=================================================================
int mm = 200000; // 20萬元囉 :-) Global 變數 全區域變數
int ggyy = 馬應久做事情( 556688 );
//============================
int 馬應久做事情( money ) {
money = money - mm; // 給女兒轉 mm 過去 :-) 假設 mm 是已經有事先定義的數
//...
return money;
}
//==================================================================
--- by [email protected] 育達科大 多媒體與遊戲系 蔡文能
processing 官方網站 http://processing.org/
課程內容:(都是使用 processing 電腦語言)
(0)畫個圓 (1)畫兩個橢圓 (2)畫個臉 (3)畫個會動的臉 (4)平行光照在球體上
(5)小畫家 (6)放屁蟲 (7)另一個小畫家 (8)大畫家 (9)吳冠中畫家的筆
(10)簡單生命時鐘 (11)經典時鐘 (12)創意時髦時鐘
(13)用滑鼠玩創意畫圖 (14)丟球實驗物理碰撞
(15)一閃一閃亮晶晶 (16)彩球繞繞繞 (17)小蚯蚓大泥鰍
(18)分子原子傻傻分不清楚 (19)千變萬化生命之樹(遞迴妙用)
(20)我也來扯鈴 (21)天女散花(粒子特效) (22)玩弄怪蛇
(23)驚聲尖叫示意圖 (24)特訓九九不是馬英九
========= processing 是 MIT 設計給藝術家設計師用的; 通常要寫兩個函數:
void setup( ) { // 只會做一次
}
void draw( ) { // 預設每秒 60 次, 可設定frameRate,
// ... 可查詢 frameRate 和 frameCount
}
///======================= 三種常用的 if ( ) 寫法 ..
if( 某種條件 ) 做這件事;
///=============================================================
if( 某種條件 ) { if( 某種條件 ) {
//.. //..
// 做這些事; // 做這些事;
}// if( }else{
// 否則做另一些事情;
} // if .. else ..
//===========================================================
int kk = 0; // 設定變數 kk 為整數且開始是 0; 不一定要叫 kk, 也不一定要用 int 整數;
/// ..但如用 float 實數要小心比較
while(38==38) {
// continue 會跑到這來
kk = kk+1; // 不一定是 + 1
//...
if(不想做了) break; // 通常是檢查會變的, 且通常與 kk 有關
if(只是這回合不想做) continue; // 直接繼續下一回合 (下一圈)
// ...
} // while 的結尾
// .. break 會到這
//==================================================================
張鈞雅做事情( money, 3388 ); //調用(叫用;呼叫;請) 函數 "張鈞雅做事情()"
//=========================
void 張鈞雅做事情( int pm, float haha ) { // 定義函數 "張鈞雅做事情()"
//...
//...
}
//=================================================================
int mm = 200000; // 20萬元囉 :-) Global 變數 全區域變數
int ggyy = 馬應久做事情( 556688 );
//============================
int 馬應久做事情( money ) {
money = money - mm; // 給女兒轉 mm 過去 :-) 假設 mm 是已經有事先定義的數
//...
return money;
}
//==================================================================
单击此处进行编辑。
如何暫停 Yellow Tail ?
參考以下圖片:
參考以下圖片:
方便大家複製貼上, 省去打字時間:
if( keyCode == 'S') noLoop( ); // 按 s 暫停
if( keyCode == 'P') noLoop( ); // 按 p 也是 暫停
if( keyCode == 'G') loop( ); // 按 g 繼續
if( keyCode == 'S') noLoop( ); // 按 s 暫停
if( keyCode == 'P') noLoop( ); // 按 p 也是 暫停
if( keyCode == 'G') loop( ); // 按 g 繼續
其他 Processing 遊戲
按空白鍵會走比較快喔 ! 但小心別撞死 :-)
來玩我改過的 小雞過馬路(遊戲限時三分鐘)
* 點這抓 chicken11B.zip 壓縮檔
* 注意把chicken11B.zip 解壓縮之後目錄不是 chicken 喔,
進入該子目錄, 滑鼠直接對裡面 .pde 檔案點兩下。
密技: 按 j 走比較快 :-)
* 點這抓 chicken11B.zip 壓縮檔
* 注意把chicken11B.zip 解壓縮之後目錄不是 chicken 喔,
進入該子目錄, 滑鼠直接對裡面 .pde 檔案點兩下。
密技: 按 j 走比較快 :-)
接下來, 我們要從電腦(PC或筆電或平板或手機)控制 Arduino
大家都說 未來是物聯網 (IoT; Internet of Thing) 的時代喔 !
這是從 PC 端用 Processing 程式(移動滑鼠)控制 LED 燈的明亮 (Dimmer)
(Arduino 內建範例:
File > Examples > 04.Communications 通訊 > Dimmer 調光明亮器 )
要注意把 LED 燈 Pin 連接到 Arduino 正確的 Pin (要稍微看看程式碼啦 !)
當然 也可以從 Arduino 控制 電腦(PC或筆電或平板或手機)
大家都說 未來是物聯網 (IoT; Internet of Thing) 的時代喔 :-)
使用可變電阻 (potentiometer) 來控制 Processing 畫面上的矩形的水平移動。
也要使用到三色 LED 模組,
請把其中一色(例如紅色R)接在 Arduino 數位腳(Digital pin) 9 號;
並把 V (印錯的) 連接到 Arduino 的 GND 地。
Arduino 與 可變電阻的連接:
注意可變電阻中間的腳要接到類比輸入(Analog Input) pin 0 (就是 A0), 剩下的兩支腳,一支接到 5V,另外一支接到 GND 地。 (不過為了方便, 我們用三條杜邦公公線和三條鱷魚夾線連接即可)
Hint: 就是先把三條杜邦公公線的一端分別插入Arduino 的 5V, GND, 和 pin A0 (注意是 A0 不是 0 喔!)
然後拿三條鱷魚夾線各自夾住該三條杜邦公公線的另一端, 最後, 把這三條鱷魚夾線的另一端拿來夾可變電阻的三個接點。
** 注意, 可變電阻的中間那接點要連接到 A0, 另外兩接點隨便, 不過, 建議把可變電阻旋鈕往右轉的那邊接 5V, 這樣往右轉時可讀取到比較大的值。
*** 可以點這看看影片 https://youtu.be/btDie54Ygzw
注意可變電阻中間的腳要接到類比輸入(Analog Input) pin 0 (就是 A0), 剩下的兩支腳,一支接到 5V,另外一支接到 GND 地。 (不過為了方便, 我們用三條杜邦公公線和三條鱷魚夾線連接即可)
Hint: 就是先把三條杜邦公公線的一端分別插入Arduino 的 5V, GND, 和 pin A0 (注意是 A0 不是 0 喔!)
然後拿三條鱷魚夾線各自夾住該三條杜邦公公線的另一端, 最後, 把這三條鱷魚夾線的另一端拿來夾可變電阻的三個接點。
** 注意, 可變電阻的中間那接點要連接到 A0, 另外兩接點隨便, 不過, 建議把可變電阻旋鈕往右轉的那邊接 5V, 這樣往右轉時可讀取到比較大的值。
*** 可以點這看看影片 https://youtu.be/btDie54Ygzw
|