變色丹麥燈

還記得有一次逛花燈節的時候看見路邊有一個很漂亮的燈,第一次看見他的漂亮覺得很感動,但是如果它可以改變顏色的話,應該多好,所以就硬是要在裡面塞了一個變色的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);//輸出綠燈
  }
}

想要知道怎麼做丹麥燈,網路上很多

至於怎麼用藍芽呢?
個人很推薦一個app
裡面也有詳盡的教學

熱門文章