推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍...

11
推動CDIO創新教學 計算機程式語言 / 電子電路學 MATLAB for Arduino Support Package

Transcript of 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍...

Page 1: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

推動CDIO創新教學計算機程式語言 / 電子電路學

MATLAB for Arduino

Support Package

Page 2: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

1

RGB LED 模組(共陰極)

RG

B

Ground

Page 3: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍(Blue)三個顏色的 LED 燈封裝在一個 LED 中,藉由三種顏色明暗度的調節混合,改變LED顏色。基本資訊可參閱Arduino套件光碟CD內,第05章炫彩 RGB LED 說明

2紅、綠和藍三原色 共陰極RGB LED

RG

B

Ground

Page 4: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

將RGB LED 板上 “R” ,“G” ,“B” ,“–” 四個接腳分別連接“D9”, “D10”, “D11”數位腳位與GND(接地)腳位,記得R/ G/B/三個接腳要加上 220Ω電阻

3

220ΩRGB LED(共陰)

Page 5: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

Arduino接線線路

4

開始來寫個簡單的程式吧!

Page 6: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

RGB LED 三原色混色程式範例(紅/綠/藍/黃/紫/青/白)

5

%writeDigitalPin 利用0(暗)/1(亮)混和如紅/綠/藍/黃等基本顏色clear; clc;

a_board = arduino(); %指派Arduino板代號為a_board

RED_PIN = 'D9'; % D11 接紅GREEN_PIN = 'D10'; D10 接綠BLUE_PIN = 'D11'; % D9 接藍tic % 計時器起始 終止為toc while toc < 20 %時間小於20秒時,執行while迴圈

% Red

writeDigitalPin(a_board, RED_PIN, 1 );

writeDigitalPin(a_board,GREEN_PIN, 0 );

writeDigitalPin(a_board, BLUE_PIN, 0 );

pause(1);

% Green

writeDigitalPin(a_board, RED_PIN, 0 );

writeDigitalPin(a_board,GREEN_PIN, 1 );

writeDigitalPin(a_board, BLUE_PIN, 0 );

pause(1);

% Blue

writeDigitalPin(a_board, RED_PIN, 0 );

writeDigitalPin(a_board,GREEN_PIN, 0 );

writeDigitalPin(a_board, BLUE_PIN, 1 );

pause(1);

Page 7: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

6

% Yellow (Red + Green)

writeDigitalPin(a_board, RED_PIN, 1 );

writeDigitalPin(a_board,GREEN_PIN, 1 );

writeDigitalPin(a_board, BLUE_PIN, 0 );

pause(1);

% Purple (Red + Blue)

writeDigitalPin(a_board, RED_PIN, 1 );

writeDigitalPin(a_board,GREEN_PIN, 0 );

writeDigitalPin(a_board, BLUE_PIN, 1 );

pause(1);

% Cyan (Green + Blue)

writeDigitalPin(a_board, RED_PIN, 0 );

writeDigitalPin(a_board,GREEN_PIN, 1 );

writeDigitalPin(a_board, BLUE_PIN, 1 );

pause(1);

% White (Red + Green + Blue)

writeDigitalPin(a_board, RED_PIN, 1 );

writeDigitalPin(a_board,GREEN_PIN, 1 );

writeDigitalPin(a_board, BLUE_PIN, 1 );

pause(1);

end

clear % 執行完後清除

Page 8: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

RGB LED 三原色混色,如之前的學習範例,利用writePWMDutyCycle(a, pin, dutyCycle) 與writePWMVoltage(a, pin, voltage)兩個指令進行三原色LED明亮度變化,調整RGB LED 三原色混色效果

writePWMDutyCycle(a, pin, dutyCycle) :

dutyCycle值介於0~1

writePWMVoltage(a, pin, voltage)

voltage值介於0~5

7

Page 9: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

RGB LED 三原色writePWMDutyCycle混色(紅綠)

8

% writePWMDutyCycle 利用dutyCycle於1~0間變化調整LED混色clear; clc;

a_board = arduino(); %指派Arduino板代號為a_board

RED_PIN = 'D9'; % D9 接紅GREEN_PIN = 'D10'; %D10 接綠BLUE_PIN = 'D11'; % D11 接藍RGB_level = linspace(1,0,30); %將顏色的dutyCycle分為30等分tic % 計時器起始 終止為toc while toc < 20 %時間小於20秒時,執行while迴圈

for i = 1 : length(RGB_level)

%紅色dutyCycle於1~0間分30等份變化,->電壓 = dutyCycle5V

writePWMDutyCycle(a_board,RED_PIN, RGB_level(i));

%綠色dutyCycle於1~0間分30等份變化,->電壓 = dutyCycle5V

writePWMDutyCycle(a_board,GREEN_PIN, 1 - RGB_level(i));

%藍色dutyCycle=0,->電壓0V 暗writePWMDutyCycle(a_board, BLUE_PIN, 0 );

pause(0.1);

end

for i = 1 : length(RGB_level)

writePWMDutyCycle(a_board,RED_PIN, 1 - RGB_level(i) );

writePWMDutyCycle(a_board,GREEN_PIN, RGB_level(i));

writePWMDutyCycle(a_board, BLUE_PIN, 0 );

pause(0.1);

end

end

clear % 執行完後清除

Page 10: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

RGB LED 三原色writePWMVoltage混色(紅綠)

9

% writePWMVoltage 利用voltage於5~0V間變化調整LED混色clear; clc;

a_board = arduino(); %指派Arduino板代號為a_board

RED_PIN = 'D9'; % D9 接紅GREEN_PIN = 'D10'; %D10 接綠BLUE_PIN = 'D11'; % D11 接藍RGB_V_level = linspace(5,0,30); %將顏色的voltage分為30等分tic % 計時器起始 終止為toc while toc < 20 %時間小於20秒時,執行while迴圈

for i = 1 : length(RGB_V_level)

%紅色dutyCycle於1~0間分30等份變化writePWMVoltage(a_board,RED_PIN, RGB_V_level(i));

%綠色dutyCycle於1~0間分30等份變化writePWMVoltage(a_board,GREEN_PIN, 5 - RGB_V_level(i));

%藍色dutyCycle=0,->電壓0V 暗writePWMVoltage(a_board, BLUE_PIN, 0 );

pause(0.1);

end

for i = 1 : length(RGB_V_level)

writePWMVoltage(a_board,RED_PIN, 5 - RGB_V_level(i) );

writePWMVoltage(a_board,GREEN_PIN, RGB_V_level(i));

writePWMVoltage(a_board, BLUE_PIN, 0 );

pause(0.1);

end

end

clear % 執行完後清除

Page 11: 推動CDIO創新教學 - fcu.edu.t · RGB LED(套件為共陰極)是把紅(Red)、綠(Green)和藍 (Blue)三個顏色的LED 燈封裝在一個LED 中,藉由三 種顏色明暗度的調節混合,改變LED顏色。

利用 rand指令,查閱rand使用方法,試看看

10

clear; clc;

a_board = arduino(); %指派Arduino板代號為a_boardRED_PIN = 'D9'; % D9 接紅GREEN_PIN = 'D10'; %D10 接綠BLUE_PIN = 'D11'; % D11 接藍tic % 計時器起始 終止為toc

while toc < 20 %時間小於20秒時,執行while迴圈RGB_level = rand(1,3);%產生13隨機(rand)陣列, 值介於0~1間%紅色dutyCycle = RGB_level(1)

writePWMDutyCycle(a_board,RED_PIN, RGB_level(1));

%綠色dutyCycle = RGB_level(2)

writePWMDutyCycle(a_board,GREEN_PIN, RGB_level(2));

%藍色dutyCycle = RGB_level(3)

writePWMDutyCycle(a_board,BLUE_PIN, RGB_level(3));

pause(0.5);

end

clear % 執行完後清除