Android藍(lán)牙串口通信控制Arduino全彩呼吸燈

這是我期末的時(shí)候做的一個(gè)Arduino課程設(shè)計(jì)慈格,可以通過手機(jī)APP來控制呼吸燈亮滅及顏色變化眷茁。

主要實(shí)驗(yàn)器材:

  • Arduino UNO開發(fā)板
  • 共陽三色霧狀LED燈
  • 面包板、普通LED燈、電阻佳魔、杜邦線若干
  • HC-05藍(lán)牙模塊
  • 支持藍(lán)牙功能的Android手機(jī)
系統(tǒng)連接圖.png

HC-05藍(lán)牙模塊與Arduino連接方式

HC-05 VCC ----- Arduino VIN
HC-05 GND ----- Arduino GND
HC-05 TXD ----- Arduino RXD
HC-05 RXD ----- Arduino TXD

Android藍(lán)牙模塊

手機(jī)APP連接上HC-05后凭迹,在TextView中輸入要發(fā)送的字符串罚屋,定義s、c嗅绸、f脾猛、b分別為小LED燈開、關(guān)鱼鸠、和三色彩燈的開猛拴、關(guān)羹铅;通過藍(lán)牙串口將字符串發(fā)送出去。

Android藍(lán)牙通信程序關(guān)鍵代碼

  1. 打開藍(lán)牙:
// 獲取藍(lán)牙適配器
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

//請(qǐng)求開啟藍(lán)牙
if (!mBluetoothAdapter.isEnabled()) {
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
  1. 搜索設(shè)備:
// 將已配對(duì)的設(shè)備添加到列表中
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
    for (BluetoothDevice device : pairedDevices) {
        mDevicesArray.add(device.getName() + "\n" + device.getAddress());
        deviceList.add(device);
    }
}
// 注冊(cè)廣播接收器愉昆,以獲取藍(lán)牙設(shè)備搜索結(jié)果
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy
// 搜索藍(lán)牙設(shè)備
mBluetoothAdapter.startDiscovery();

// Create a BroadcastReceiver for ACTION_FOUND
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        // When discovery finds a device
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            deviceList.add(device);
            // Add the name and address to an array adapter to show in a ListView
            mDevicesArray.add(device.getName() + "\n" + device.getAddress());
            // Notify ListView to update
            devicesListAdapter.notifyDataSetChanged();
        }
    }
};
  1. 匹配并建立連接
BluetoothSocket socket = null;
try {
    // 藍(lán)牙串口服務(wù)對(duì)應(yīng)的UUID职员。如使用的是其它藍(lán)牙服務(wù),需更改下面的字符串
    UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    socket = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (Exception e) {
    Log.d("log", "獲取Socket失敗");
    return;
}
try {
    // Connect the device through the socket. This will block
    // until it succeeds or throws an exception
    socket.connect();
    Log.d("log", "連接成功");
} catch (IOException connectException) {
    // Unable to connect; close the socket and get out
    Log.d("log", "連接失敗");
    try {
        socket.close();
    } catch (IOException closeException) { }
    return;
}
  1. 收發(fā)數(shù)據(jù)
mmInStream = socket.getInputStream();
mmOutStream = socket.getOutputStream();

//接收數(shù)據(jù)
byte[] buffer = new byte[1024];
try {
    bytes = mmInStream.read(buffer);
} catch (IOException e) {
    break;
}

//發(fā)送數(shù)據(jù)
try {
    mmOutStream.write(bytes);
} catch (IOException e) { }


共陽三色霧狀LED燈介紹

三色燈.png

顧名思義它可以產(chǎn)生三種顏色跛溉,分別是紅焊切、綠、藍(lán)芳室,也可以同時(shí)調(diào)整三種顏色的亮度专肪,產(chǎn)生彩色呼吸燈的效果。

系統(tǒng)原理圖:

系統(tǒng)原理圖.png

Arduino源碼:

#define small_led 8   //Pin 8 連接上小led燈正極
#define led_red 9     //Pin 9 連接上 led的紅色引腳
#define led_green 10  //Pin 10 連接上 led的綠色引腳
#define led_blue 11   //Pin 11 連接上 led的藍(lán)色引腳


void setup() {
  Serial.begin(9600);           //設(shè)置波特率9600
  pinMode(small_led, OUTPUT);   //設(shè)置為輸出模式
  pinMode(led_red, OUTPUT); 
  pinMode(led_green, OUTPUT);
  pinMode(led_blue, OUTPUT);

  analogWrite(small_led, 0);    //首先堪侯,先把所有的燈都關(guān)閉
  analogWrite(led_red, 255);    
  analogWrite(led_green, 255);  //可以隨意設(shè)置開啟關(guān)閉哪些燈嚎尤,搭配出不同組合有不同顏色
  analogWrite(led_blue, 255);
}

void loop() {
  if (Serial.available() > 0)
  {
    char data = Serial.read();
    switch (data)
    {
      case 's': analogWrite(small_led, 255); break;  //小燈亮
      case 'c': analogWrite(small_led, 0); break;  //小燈滅
      case 'f':
        for (int i = 200; i > 0; i--)   //漸亮
        {
          analogWrite(led_red, i);      //慢慢開啟紅色和綠色會(huì)搭配出黃色
          analogWrite(led_green, i);
          analogWrite(led_blue, 255);
          delay(10);
        }

        for (int i = 0; i < 200; i++)   //漸滅
        {
          analogWrite(led_red, 255);    //慢慢關(guān)閉綠色和藍(lán)色會(huì)搭配出較鮮艷的藍(lán)色
          analogWrite(led_green, i);
          analogWrite(led_blue, i);
          delay(10);
        }
        break;
      case 'b':
        analogWrite(led_red, 255);    //關(guān)閉呼吸燈
        analogWrite(led_green, 255);
        analogWrite(led_blue, 255);
        break;
    }
    Serial.println(data);
  }
  delay(10);
}

實(shí)際連接圖:

實(shí)際連接圖.png

注意事項(xiàng):

  • 防止LED燈被燒壞,在接5v電源的同時(shí)接上220Ω電阻伍宦。
  • 在燒錄代碼的時(shí)候要把Arduino的TXD诺苹、RXD與HC-05的RXD、TXD斷開連接雹拄,否則會(huì)有干擾收奔,代碼燒錄不進(jìn)去。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滓玖,一起剝皮案震驚了整個(gè)濱河市坪哄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌势篡,老刑警劉巖翩肌,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異禁悠,居然都是意外死亡念祭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門碍侦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粱坤,“玉大人,你說我怎么就攤上這事瓷产≌拘” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵濒旦,是天一觀的道長(zhǎng)株旷。 經(jīng)常有香客問我,道長(zhǎng)尔邓,這世上最難降的妖魔是什么晾剖? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任锉矢,我火速辦了婚禮,結(jié)果婚禮上齿尽,老公的妹妹穿的比我還像新娘沈撞。我一直安慰自己,他們只是感情好雕什,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布缠俺。 她就那樣靜靜地躺著,像睡著了一般贷岸。 火紅的嫁衣襯著肌膚如雪壹士。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天偿警,我揣著相機(jī)與錄音躏救,去河邊找鬼。 笑死螟蒸,一個(gè)胖子當(dāng)著我的面吹牛盒使,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播七嫌,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼少办,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了诵原?” 一聲冷哼從身側(cè)響起英妓,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绍赛,沒想到半個(gè)月后蔓纠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吗蚌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年腿倚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚯妇。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敷燎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侮措,到底是詐尸還是另有隱情懈叹,我是刑警寧澤乖杠,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布分扎,位于F島的核電站,受9級(jí)特大地震影響胧洒,放射性物質(zhì)發(fā)生泄漏畏吓。R本人自食惡果不足惜墨状,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菲饼。 院中可真熱鬧肾砂,春花似錦、人聲如沸宏悦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饼煞。三九已至源葫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砖瞧,已是汗流浹背息堂。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留块促,地道東北人荣堰。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像竭翠,于是被迫代替她去往敵國(guó)和親振坚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容