Arduino EMS v1 基礎課程

Page 1

Arduino 互動基礎課程 使用Arduino Uno 及YWrobot EMS

高雄市立瑞祥國小 李俊青


課程架構


課程軟體 Adobe AIR  Scratch2 4.53版  Transformer2 社群版 1.072版  CH340介面驅動程式  Arduino 1.6.5-r5  以上軟體請至https://goo.gl/Uv94zS下載  依序安裝 


使用硬體 Ywrobot EMS

8*8Led 矩陣

紅外線遙控器

I2C 1602 LCD

Arduino UNO


目前使用的Arduino板

兩種板子皆使用Mega328P晶片 只是使用不同的封裝,功能差不多


認識Arduino

使用CH340系列通訊晶片的板子 較便宜但要加裝驅動程式

數位輸入/輸出埠(D0~D13) 其中D3、D5、D6、D9、D10、 D11為PWM輸出埠

類比輸入埠(A0-A5),也可以修改當作 數位輸入/輸出埠,編號為D14-D19


認識Arduino 由來  由8位元處理器ATmega328P、16MHZ振 盪器和USB通訊傳輸所組成  數位輸入/輸出埠(D0~D13)  接收/傳送埠D0(RxD)和D1(TxD)腳位  PWM輸出埠(D3、D5、D6、D9、D10 、D11)  類比輸入埠(A0-A5),也可以修改當作 數位輸入/輸出埠,編號為D14-D19 


認識Ywrobot EMS功能擴充板 A4/A5 I2C模組腳位 D12/D13 紅/藍LED

D9/D10/D11 紅/綠/藍三色LED模組

D2/D3 按鍵模組

預留D7/D8/A3 擴充腳位

D6 紅外線接收模組

D4 溫溼度模組

A1 光敏電阻模組

A0 電位計模組

D5 蜂鳴器模組

A2 溫度模組


認識Ywrobot EMS功能擴充板

堆疊


啟動Transformer中介軟體 

點按桌面 體。

圖示,執行Transformer軟


啟動Transformer中介軟體 1.選擇使用的控制板

3.選擇USB連線介面及燒錄韌體

2.選擇積木模組

4.選擇開啟Scratch 5.點按連線


啟動Transformer中介軟體 2.最小畫面即可

1.確認是否跟硬體 連線成功


自動啟動Scratch並帶入擴充積木 1.點按更多積木 2.確認是否有黑色擴充積木 3.確認燈號是否為綠色 如果為綠色代表跟硬體 連線正常 4.如果沒有黑色積木或燈號是 黃/紅燈,則關閉Scratch2,回 到Transformer重新連線.


單色LED實驗_藍燈亮滅_數位輸出 藍燈關燈

藍燈開燈

在Arduino數位輸出, 0代表”關”or”LOW” 1代表”開”or””HIGH”


單色LED實驗_紅/藍燈閃爍_數位輸出

藍燈間隔一秒閃爍

數位輸出只能夠呈現開與關, 1與0或HIGH與LOW

紅/藍燈間隔一秒閃爍


認識三色LED

• • • •

5050全彩LED 已接限流電阻 工作電壓:5V 共陰驅動模式

紅線接Arduino D9接腳 綠線接Arduino D10接腳 藍線接Arduino D11接腳


紅綠藍交替閃爍_數位輸出

紅綠藍燈間隔一秒循環閃爍


PWM 脈波寬度調變 PWM (Pulse Width Modulation) 是一種利用數位訊號模擬類比訊號的方式。 常用於調整燈光的亮度、馬達的轉速、RGB LED 的配色、螢幕亮度控制 、喇叭的大小聲/聲音頻率等… PWM 的原理是甚麼?想像我們用點亮一盞燈,用肉眼快到不能察覺的速度,開關 開關開關開關開關開關開關~~~~

當快到不行的時候,我們其實就會看到燈光較暗,而看不到一閃一閃光;當我們 微調開與關的長度比例變成,開--關開--關開--關開--關開--關開--關開--關開--關~

我們就會看到燈光稍微的變亮了。這就是 PWM 的原理,藉由數位訊號高頻率的 切換,調整開關的比例,我們可以模擬出我們需要的類比訊號。


PWM 脈波寬度調變 Duty Cycle = Ton/Toff (%),為 ON 的時間與 OFF相除的百分比 模擬出的電壓 V = Von x duty cycle (%) 可以知道 duty cycle 越高模擬出的電壓越高,當完全沒有 OFF 的時候 ,duty cycle = 100%,V = Von 為最大可輸出的電壓,這時候電燈會 最亮 Arduino PWM 的使用方式其實超簡單 格式:analogWrite(pin, value) 參數: pin:輸出 PWM 的 pin ,上面的例子可以 是 pin 3/5/6/9/10/11 value:duty cycle,介於0~255。 0 = 0%,127 = 50%,255 = 100%

analog(3,127),就是代表由 pin 3 輸出 duty cycle 50% 的訊號。 若VCC=5V,此時Pin3輸出2.5V


PWM調光實驗

1.D9,D10,D11三個腳位可利用PWM模擬類比輸出. 2.類比輸出的範圍為0~255. 3.依照LED而言,0是全暗,255是全亮.


LED漸亮跟漸暗

LED漸亮

LED漸暗

利用迴圈加判斷式,改變變數「亮度」的數值,達 到LED「漸亮」或「漸暗」的效果。


呼吸燈模擬

利用兩個迴圈加判斷式,控制PWM變數的遞增跟遞減, 模擬呼吸燈的效果。


變數調光 號碼 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

顏色描述 黑色 藍色 綠色 藍綠色 紅色 洋紅色 黃色 白色 淺灰色 淺藍色 淺綠色 淺藍綠色 淺紅色 淺洋紅色 淺黃色 灰色

RGB (0, 0, 0) (0, 0, 255) (0, 255, 0) (0, 255, 255) (255, 0, 0) (255, 0, 255) (255, 255, 0) (255, 255, 255) (192, 192, 192) (128, 128, 255) (128, 255, 128) (128, 255, 255) (255, 128, 128) (255, 128, 255) (255, 255, 128) (128, 128, 128)


單顆紅綠燈模擬 1.利用三色LED呈現綠黃紅三色 2.透過迴圈控制三種顏色燈亮滅及 閃爍效果模擬紅綠燈的運作


隨機調光

1.設定紅、綠、藍三個變數 當作D9、D10、D11三個 腳位PWM輸出值 2.三個變數每0.5秒從0到255 取一個亂數值當作變數 3.LED每0.5秒變一次顏色


鍵盤控制亮燈 1.以迴圈及判斷式判斷所按的 鍵是否為程式設定的鍵。 2.依照所設定的條件輸出特定 顏色的燈。 3.注意鍵盤是否為英文數字 輸入狀態。


讀取按鍵值

利用Transformer中介軟體,Scratch2擴充積木,已經把按 鈕D2跟按鈕D3設為變數,只需要打勾,就可在舞台區顯現


按键控制LED(一) 1.按鈕D2或按鈕D3的變數設計, 當按鈕沒有按時,變數顯示false, 也就是0,當按鈕被按下時,變數 顯示true,也就是1。 2.利用迴圈及判斷式,當按鈕被按下 時,燈是亮的,沒有按時,燈是 關的。 3.有沒有修正的空間?


按键控制LED(二) 1.我們希望按鈕按下去時開燈, 第二次按按鈕時才關燈,依序 循環。 2.設定一個變數onoff來控制D13 腳位的數位輸出。 3.每按一次按鈕D2,就變更onoff 的數值。 4.還有其他控制方法嗎?


按键控制LED(三) 1.我們希望按按鈕D2時開燈, 按按鈕D3時關燈。 2.設定一個變數onoff來控制D13 腳位的數位輸出。 3.按下按鈕D2時,就變更onoff 的數值為1;按下按鈕D3時, 就變更onoff的數值為0。


讀取電位器数值/電位器控制LED明亮

1.在更多積木電位器A0打勾,在舞台區顯示 電位器數值,範圍0~1023。 2.設定變數「亮度」作為紅色D9的PWM值。 3.把電位器A0的數值除以4,轉化為變數 「亮度」的數值。


8X8 LED矩陣模組(MAX7219) 硬體接線 VCC接VCC GND接GND DIN接D7 CS接D8 CLK接A3(D17)


傳送文字至8*8LED矩陣

1

2 3 4 5


傳送文字至8*8LED矩陣

1.程式設定Din接D7,CS接D8,CLK接D17(A3) 2.先提問讓使用者輸入要顯示的英文文字或數字 3.再利用8*8LED矩陣輸出跑馬燈

本範例參考黃文玉主任Blog https://sites.google.com/site/wenyutransformer/02jin-jie-pian/05led8x8xian-shi-qi


LED矩陣動畫創作

1.在圖中選取圖形 2.點按「新增」增加下一圖形 3.最後一張點按「確定」完成。

1

2

本範例參考黃文玉主任Blog https://sites.google.com/site/wenyutransformer/02jin-jie-pian/05led8x8xian-shi-qi


LED矩陣動畫創作

1.依序畫好動畫的「分鏡圖」。 2.畫好之後可以點按「匯出」儲存。 3.完成最後一張「分鏡圖」,點按「確定離開」。


LED矩陣動畫創作

1.程式設定Din接D7,CS接D8,CLK接D17(A3) 2.利用迴圈依序利用8*8LED矩陣顯示動畫「分鏡圖」。


小紅人跑馬燈實作

本範例圖樣參考高雄市高雄高工作品 http://www.shs.edu.tw/works/essay/2010/11/2010111414344952.pdf


小紅人跑馬燈實作 慢跑10次

快跑10次

停止畫面等待5秒


英文單字自動跑馬燈顯示-以程式直接寫入

1.把要顯示的英文單字字串直接寫入程式內. 2.每個字串的等待時間要考慮字串的長度.

本範例參考邱文盛老師Blog http://dshps.blogspot.tw/2017/01/88led.html


英文單字自動跑馬燈顯示_以清單依序寫入

1.製作一個變數「第幾項」及一個清單「單字清單」, 並在清單內輸入六個英文單字。 2.利用迴圈及變數依序讀取清單內的英文單字並顯示。 本範例參考邱文盛老師Blog http://dshps.blogspot.tw/2017/01/88led.html


英文單字自動跑馬燈顯示_以清單亂數寫入

1.利用內建清單長度積木亂數取清單內容。 2.重複循環顯示,程式不用設定清單長度。 3.注意最長單字的顯示時間。 4.單字清單的內容可以用匯入的方式取代(格式UTF-8)。 本範例參考邱文盛老師Blog http://dshps.blogspot.tw/2017/01/88led.html


英文單字自動跑馬燈顯示_以清單亂數寫入_ 加入語音

1.把從單字清單叫出來的單字顯示並轉成語音。 2.此功能電腦必須網路連線以及注意時間差。 本範例參考邱文盛老師Blog http://dshps.blogspot.tw/2017/01/88led.html


英文單字自動跑馬燈顯示_以檔案亂數讀入_ 加入語音

1.匯入的文字檔格式必須utf-8,並注意路徑格式。 2.此功能電腦必須網路連線以及注意時間差。 本範例參考邱文盛老師Blog http://dshps.blogspot.tw/2017/01/88led.html


認識光敏電阻 薄膜的電子元件  電阻值隨光源強度 而變化  當有光線照射時, 元件內原本屬於穩 定狀態的電子,受 到激發,成為自由 電子。  光線越強,產生的 自由電子越多,電 阻越小。 

Ywrobot EMS 光敏電阻使用A1腳位


讀取光敏電阻值

1.Transformer2中介軟體的Scratch2擴充積木已經把 光敏電阻A1的值,簡化為變數積木。 2.光敏電阻A1變數積木的數值範圍為0~1025。 3.數值越低,光線越暗;數值越高,光線越亮。


小夜燈專題實作(一) 1.由光敏電阻的回傳值判斷, 當數值小於350時,就認定 是天黑,由三色LED數位輸 出,三色一起開燈。 2.反之,當數值大於350時, 就認定是天亮,三色一起 關燈。


小夜燈專題實作(二) 1.由光敏電阻的回傳 值判斷,當數值小 於300時,就認定 是天黑,由三色 LED類比輸出,三 色一起以PWM250 開大燈。 2.當數值介於300跟 500中間時,就認 定天色灰暗,三色 LED以PWM50開小 燈。


認識蜂鳴器 聲音的三要素  1.音量(響度):聲音的大 小(強弱)、聲波的振幅( 即震動的能量),振幅越 大,單位為分貝(dB).  2.音調(音頻):聲音的高低 ,聲波的頻率,震動越 快,頻率越大,音調越 高,單位為(Hz)(次/秒).  3.音色(音品):聲音的特色 ,聲波的波形,不同的 發聲體會有不同的波形. 

Ywrobot EMS V1 無源蜂鳴器使用D5腳位


音階--頻率對照表(單位:Hz)


模擬警笛聲、救護車聲音 模擬警笛聲

模擬救護車聲音


按鍵電子琴 1.按特定鍵發出特定 頻率聲音0.5秒. 2.注意鍵盤輸入狀態 是在英文/數字輸入 狀態.


單音MIDI音樂專題創作_兩隻老虎一 1.最傳統的方法,依照簡譜,一個音 一個音加入,歌曲一長,程式 就會很長。 2.有沒有辦法讓程式變短?


單音MIDI音樂專題創作_兩隻老虎二 1.使用迴圈重複執行, 讓重複的歌曲寫一次 程式即可 。 2.有沒有辦法讓程式變 短?


單音MIDI音樂專題創作_兩隻老虎三

使用自訂積木模式


認識紅外線 紅外線(infrared、IR),俗稱紅外光,其波長在770nm (奈米)至1mm(毫米)之間,而人眼可感知的電磁波 波長一般在400到700nm之間,所以紅外線屬於不可見光 ,在通訊、探測、醫療、軍事等方面有廣泛的用途。

圖片來源:維基百科


認識紅外線遙控器及接收模組 1.遙控器使用CR2025鈕扣電池 2.有效發射接收距離:8公尺 3.有效角度:60度 4.標準38KHz紅外線接收模組 5.Ywrobot EMS 紅外線接收器 使用D6腳位


收集紅外線遙控器內碼

1.確認電腦跟Arduino連線正常(綠燈) 2.把「紅外線資料」積木打勾,新增一個變數「IR」收 紅外接收器傳來的值。 3.啟用紅外線,點按遙控器接收紅外線內碼值。


遙控燈實作 1.當Arduino接收到遙控器 按鍵「1」內碼的時候, 則D9數位輸出「1」,亦 即紅燈亮;接收到遙控器 按鍵「4」內碼的時候, 則D9數位輸出「0」,亦 即紅燈暗。 2.綠燈跟藍燈以此類推。


認識I2C 1602 Lcd

硬體地址 : 0x27 接線說明:GND:電源負極 VCC:電源正極(+5V) SDA :接SDA SCL:接SCL


傳送文字到LCD

1.啟動Transformer跟Scratch2後,確認I2C 1602的 擴充積木顯示綠燈。 2.利用提問讓使用者輸入英文或數字字母〫 3.提醒使用者輸入的文字要小於16個字母。


顯示目前電腦日期時間

1.直接擷取電腦內的年、月、日等資料,透過字串 合併成Date變數。 2.直接擷取電腦內的時、分、秒等資料,透過字串 合併成Time變數。 3.利用I2C LCD,第一列顯示「Date」變數資料,第 二列顯示「Time」變數資料。


顯示清單內容

類似8*8LED的作法,把顯示方式由8*8 Led矩陣 轉變為I2C 1602 Lcd。


讀取資料檔顯示內容

類似8*8LED的作法,把顯示方式由8*8 Led矩陣 轉變為I2C 1602 Lcd。


認識DHT11溫溼度模組

DHT溫溼度模組在Ywrobot EMS V1上使用D4腳位


顯示DHT11溫溼度傳感器數值

1.Transformer所內建的Scratch2積木,把DHT11模組的 功能,包裝成一個變數積木。 2.在硬體連線正常的情況下, 在更多積木區把 「DHT11濕度」及「DHT11溫度」兩個積木前打勾,就 可以在舞台區顯示目前所測到的溫度跟濕度。


利用I2C 1602 LCD顯示溫溼度數值

建立四個變數,依序是「日期」、「時間」、「溫度」及 「濕度」;依照各變數要顯示的內容,合併相關數值及字 串,最後利用I2C 1602 LCD顯示出來。


擷取資料儲存 把檔案的表頭寫入E:\DHT11.TXT 把擷取到的資料合併成「日期」跟「時間」 利用I2C LCD顯示日期、時間、溫度及濕度

利用字串合併日期、時間、溫度及濕度等資料, 以附加方式寫入E:\DHT11.TXT


擷取資料儲存

擷取儲存的文字檔

可以用Excel開啟,做進一步應用.


擷取資料上雲端

本範例參考黃文玉主任Blog https://sites.google.com/site/wenyutransformer/02jin-jie-pian/01dht11wen-shi-du


擷取資料上雲端

登入ThingSpeak後, 點按New Channel,填入 名稱及欄位資料.


擷取資料上雲端

1.點選Data Import/Export頁籤. 2.複製API網址,這將是我們要把資料傳送的地方.


擷取資料上雲端

1.程式設計很簡單,主要是利用字串組合的功能,把 上傳的網址跟溫溼度數值結合. 2.利用Http POST的積木把內容送至雲端.


擷取資料上雲端

經過一段時間,就可以看到Arduino透過電腦所上傳的資料.


感謝大家 意見交流


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.