close

最近更新3.jpg

最近更新4.jpg

這一次是要利用藍牙控制RGB LED燈 ,

再搭配一些小小的手工藝DIY,

創造有趣又非常有藝術效果的糖果燈~

 

目標:建立藍牙連線,輸入RGB值,控制RGB LED燈.

(上圖一:環境不開燈的效果     上圖二:環境開燈效果)

 

第一步:建立藍牙與LED燈連線

藍牙的詳細設定請看(前篇),

RGB LED 燈有4支pin,

3支分別控制RGB和1支接地.

P_20141018_222907  

設定

藍牙序列傳送腳 BT_TX=pin7

藍牙序列接收腳 BT_RX=pin6

LED_Red=pin 3  

LED_Green=pin 5

LED_Blue=pin 11

LED_接地=pin GND

P_20141018_222515

 

第二步:上傳程式

#include <SoftwareSerial.h>

const int redPin = 3;
const int greenPin = 5;
const int bluePin = 11;

SoftwareSerial blueToothSerial(7,6);

int red =0;
int green =0;
int blue =0;

void setup() {

Serial.begin(9600);
pinMode(redPin, OUTPUT); 
pinMode(greenPin, OUTPUT); 
pinMode(bluePin, OUTPUT); 

blueToothSerial.begin(9600);
blueToothSerial.print("BT is ready!");
setupBlueToothConnection();

}

 

void loop() {

while (blueToothSerial.available() > 0) {

red= blueToothSerial.parseInt(); 
green= blueToothSerial.parseInt(); 
blue= blueToothSerial.parseInt(); 

analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);

if (blueToothSerial.read() == '\n') { 

red = 255 - constrain(red, 0, 255);
green = 255 - constrain(green, 0, 255);
blue = 255 - constrain(blue, 0, 255);

analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);  }}}

 

void setupBlueToothConnection()
{
blueToothSerial.begin(38400); // Set BluetoothBee BaudRate to default baud rate 38400
blueToothSerial.print("\r\n+STWMOD=0\r\n"); // set the bluetooth work in slave mode
blueToothSerial.print("\r\n+STNA=SeeedBTSlave\r\n"); // set the bluetooth name as "SeeedBTSlave"
blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
delay(2000); // This delay is required.
blueToothSerial.print("\r\n+INQ=1\r\n"); // make the slave bluetooth inquirable
Serial.println("The slave bluetooth is inquirable!");
delay(2000); // This delay is required.
blueToothSerial.flush();}

參考網站

 

程式上傳後藍牙模組開始紅綠燈閃爍,

開始可以使用手機APP建立連線(下載通用APP),

此範例程式接收的數值形式為  三組數字(0~255),用兩個逗號分隔,

比如:  255,255,255     255,100,100,   0,0,0   等等,

255,255,255代表紅綠藍光都開到最強,混色結果為白光,

0,0,0  代表紅綠藍數值都是0,結果為滅燈,

255,0,0 = 全紅光

0,255,0 = 全綠光

0,0,255 = 全藍光

 

第三步:混光

就功能面來說,其實已經結束了,

不過因為RGB LED燈是由三種顏色混色而得到各種不同的顏色,

如果混色不均勻,

看到的效果就是紅綠藍三個顏色各玩各的,

而不是我們所期望的色彩.

所以我們要製作一個可以讓光混合均勻的媒介~

鏘鏘!!這是在一般文具店手工材料區可以買到的保麗龍球,

用鉛筆豪邁地挖一個洞,

套在LED燈上當燈罩(便宜又簡單),

P_20141018_214828.jpg

結果真是出乎意料的好!!混色非常均勻!!超棒der!

P_20141018_151128.jpgP_20141018_151247.jpg

 

第四步:做個藝術燈罩吧!

燈罩怎麼做 ,請參考網站 雜貨風燈罩DIY

P_20141018_164927.jpg

套在LED上,完成!!!!

PICT_20141018_170721  

 

 

後記:

這個範例有些不完美的地方,

範例中只提到如何輸入RGB數值,

但若顏色要做到漂亮的漸變效果,

建議可以自行開發手機APP,

UI界面使用HSV的色彩模式,

再經過程式轉換為RGB餵給RGBLED燈。

另外~

如果不想用藍牙控制,

把範例程式碼中blueToothSerial通通改成Serial

就可以用電腦的序列視窗輸入囉~

當然數值形式同樣為三組數值,用兩個逗號隔開.

 

 

備註:測試 Arduino 1.5.8 beta 無法正常運行。

arrow
arrow

    EXdesign 發表在 痞客邦 留言(0) 人氣()