變色丹麥燈
還記得有一次逛花燈節的時候看見路邊有一個很漂亮的燈,第一次看見他的漂亮覺得很感動,但是如果它可以改變顏色的話,應該多好,所以就硬是要在裡面塞了一個變色的led,再加上使用藍芽控制
這次很用心的每一行程式加上註解,但是卻有點懶的畫電路圖了
/*
AT:測試,回應「OK」
AT+VERSION:回應?體的版本。
AT+NAMExyz:將裝置名稱改為「xyz」。
AT+PIN1234:將連線密碼換為「1234」。
AT+BAUD4:將 baud rate 換為 9600。
AT+BAUD5:將 baud rate 換為 19200
AT+BAUD6:將 baud rate 換為 38400
AT+BAUD7:將 baud rate 換為 57600
*/
#include <SoftwareSerial.h> // 引用另外一個傳輸訊號的程式庫
SoftwareSerial BT(2, 3); // TX, RX(in BLUETOOTH) 定義連接藍牙模組的序列埠
char val; // 儲存接收資料的變數
int RED, GREEN, BLUE; // 儲存接收數值的大小
const int RED_PIN = 10;//紅色LED的腳位
const int GREEN_PIN = 11;//綠色LED的腳位
const int BLUE_PIN = 9;//藍色LED的腳位
void setup() {
Serial.begin(9600); // 與電腦序列埠連線
BT.begin(9600); // 設定藍牙模組的連線速率 // 如果是HC-05,預設成38400
Serial.println("BT is ready!");//連線速率確定
for (int i = 4;
i < 13; i++)//令4~13腳位為輸出腳
pinMode(i,
OUTPUT);
digitalWrite(12, 0);//令12腳位為低電位
共陰極LED使用
}
void loop() {
if
(Serial.available()) { // 若收到「序列埠監控視窗」的資料,則送到藍牙模組
val =
Serial.read();
BT.print(val);//則送到藍牙模組
}
if
(BT.available()) { // 若收到藍牙模組的資料
val =
BT.read();//儲存藍芽讀取到的資料
Serial.print(val);//則送到「序列埠監控視窗」
if (val ==
'R')//如果讀取到R
RED =
BT.parseInt();//儲存數值
else if (val
== 'G')//如果讀取到G
GREEN =
BT.parseInt();//儲存數值
else if (val
== 'B')//如果讀取到B
BLUE =
BT.parseInt();//儲存數值
analogWrite(BLUE_PIN,
BLUE);//輸出藍燈
analogWrite(RED_PIN, RED);//輸出紅燈
analogWrite(GREEN_PIN, GREEN);//輸出綠燈
}