• Arduino 各种模块篇 蓝牙模块 手机蓝牙控制Arduino LED灯


    解决方案。

    条件:

    1.手机android 商店下载 blueTerm

    2.向arduino中载入如下代码:

    char val;
    int ledpin=13;
    void setup()
    {
      Serial.begin(9600);
      pinMode(ledpin,OUTPUT);
    }
     
    void loop()
    {
      val=Serial.read();
      if(val=='o')
      {
        digitalWrite(ledpin,HIGH);
        Serial.println("LED ON!");
      }else if(val=='f'){
      digitalWrite(ledpin,LOW);
    Serial.println("LED OFF!");
      }
    }

    3. 将蓝牙模块的RxD链接到arduino的Tx口上,蓝牙的TxD链接到arduino的Rx口上。

    4. 打开android的blueTerm ,链接到蓝牙,默认密码1234。

    链接上,在手机上输入,o

    led灯亮。

    键入f

    led灭。

    挺简单的。

    ——————————————————————————————————————

    如果想把蓝牙放到别的口上,不占用Pin1,2 arduino与计算机默认的串口。

    那就用下面的方法,模拟一个serial port, 比如说用Pin6,7 与单片机通讯。

    下面的代码做参考使用:

    http://arduinobasics.blogspot.com/2013/01/arduino-basics-bluetooth-tutorial.html

    /* This project combines the code from a few different sources.
    This project was put together by ScottC on the 15/01/2013
    http://arduinobasics.blogspot.com/
    
    Bluetooth slave code by Steve Chang - downloaded from :
    http://www.seeedstudio.com/wiki/index.php?title=Bluetooth_Shield
    
    Grove Chainable RGB code can be found here :
    http://www.seeedstudio.com/wiki/Grove_-_Chainable_RGB_LED#Introduction
    
    */
     
    #include <SoftwareSerial.h> //Software Serial Port
    
    #define uint8 unsigned char 
    #define uint16 unsigned int
    #define uint32 unsigned long int
    
    #define RxD 6 // This is the pin that the Bluetooth (BT_TX) will transmit to the Arduino (RxD)
    #define TxD 7 // This is the pin that the Bluetooth (BT_RX) will receive from the Arduino (TxD)
     
    #define DEBUG_ENABLED 1
    
    
    int Clkpin = 9; //RGB LED Clock Pin (Digital 9)
    int Datapin = 8; //RGB LED Data Pin (Digital 8)
     
    SoftwareSerial blueToothSerial(RxD,TxD);
    
    /*----------------------SETUP----------------------------*/ 
    void setup() { 
     Serial.begin(9600); // Allow Serial communication via USB cable to computer (if required)
     pinMode(RxD, INPUT); // Setup the Arduino to receive INPUT from the bluetooth shield on Digital Pin 6
     pinMode(TxD, OUTPUT); // Setup the Arduino to send data (OUTPUT) to the bluetooth shield on Digital Pin 7
     pinMode(13,OUTPUT); // Use onboard LED if required.
     setupBlueToothConnection(); //Used to initialise the Bluetooth shield
     
     pinMode(Datapin, OUTPUT); // Setup the RGB LED Data Pin
     pinMode(Clkpin, OUTPUT); // Setup the RGB LED Clock pin
     
    } 
    
    /*----------------------LOOP----------------------------*/ 
    void loop() { 
     digitalWrite(13,LOW); //Turn off the onboard Arduino LED
     char recvChar;
     while(1){
     if(blueToothSerial.available()){//check if there's any data sent from the remote bluetooth shield
     recvChar = blueToothSerial.read();
     Serial.print(recvChar); // Print the character received to the Serial Monitor (if required)
     
     //If the character received = 'r' , then change the RGB led to display a RED colour
     if(recvChar=='r'){
     Send32Zero(); // begin
     DataDealWithAndSend(255, 0, 0); // first node data
     Send32Zero(); // send to update data 
     }
     
     //If the character received = 'g' , then change the RGB led to display a GREEN colour
     if(recvChar=='g'){
     Send32Zero(); // begin
     DataDealWithAndSend(0, 255, 0); // first node data
     Send32Zero(); // send to update data 
     }
     
     //If the character received = 'b' , then change the RGB led to display a BLUE colour
     if(recvChar=='b'){
     Send32Zero(); // begin
     DataDealWithAndSend(0, 0, 255); // first node data
     Send32Zero(); // send to update data 
     }
     }
     
     //You can use the following code to deal with any information coming from the Computer (serial monitor)
     if(Serial.available()){
     recvChar = Serial.read();
     
     //This will send value obtained (recvChar) to the phone. The value will be displayed on the phone.
     blueToothSerial.print(recvChar);
     }
     }
    } 
    
    
    //The following code is necessary to setup the bluetooth shield ------copy and paste----------------
    void setupBlueToothConnection()
    {
     blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
     blueToothSerial.print("
    +STWMOD=0
    "); //set the bluetooth work in slave mode
     blueToothSerial.print("
    +STNA=SeeedBTSlave
    "); //set the bluetooth name as "SeeedBTSlave"
     blueToothSerial.print("
    +STOAUT=1
    "); // Permit Paired device to connect me
     blueToothSerial.print("
    +STAUTO=0
    "); // Auto-connection should be forbidden here
     delay(2000); // This delay is required.
     blueToothSerial.print("
    +INQ=1
    "); //make the slave bluetooth inquirable 
     Serial.println("The slave bluetooth is inquirable!");
     delay(2000); // This delay is required.
     blueToothSerial.flush();
    }
    
    
    //The following code snippets are used update the colour of the RGB LED-----copy and paste------------
    void ClkProduce(void){
     digitalWrite(Clkpin, LOW);
     delayMicroseconds(20); 
     digitalWrite(Clkpin, HIGH);
     delayMicroseconds(20); 
    }
     
    void Send32Zero(void){
     unsigned char i;
     for (i=0; i<32; i++){
     digitalWrite(Datapin, LOW);
     ClkProduce();
     }
    }
     
    uint8 TakeAntiCode(uint8 dat){
     uint8 tmp = 0;
     if ((dat & 0x80) == 0){
     tmp |= 0x02; 
     }
     
     if ((dat & 0x40) == 0){
     tmp |= 0x01; 
     }
     
     return tmp;
    }
     
    // gray data
    void DatSend(uint32 dx){
     uint8 i;
     for (i=0; i<32; i++){
     if ((dx & 0x80000000) != 0){
     digitalWrite(Datapin, HIGH);
     } else {
     digitalWrite(Datapin, LOW);
     }
     
     dx <<= 1;
     ClkProduce();
     }
    }
     
    // data processing
    void DataDealWithAndSend(uint8 r, uint8 g, uint8 b){
     uint32 dx = 0;
     
     dx |= (uint32)0x03 << 30; // highest two bits 1,flag bits
     dx |= (uint32)TakeAntiCode(b) << 28;
     dx |= (uint32)TakeAntiCode(g) << 26; 
     dx |= (uint32)TakeAntiCode(r) << 24;
     
     dx |= (uint32)b << 16;
     dx |= (uint32)g << 8;
     dx |= r;
     
     DatSend(dx);
    }

    Please take good notice of the references blow of the link which I give you above.

    No third lib required. Only original one.

    ***********************************************************************

    Also here's another project about how to control arduino widgets via bluetooth protocol.

    Bluetooth , motor, android, arduino

    http://www.instructables.com/id/Arduino-Control-DC-Motor-via-Bluetooth/step3/Arduino-Code/

  • 相关阅读:
    最后一次作业-- 总结报告
    第14.15周作业
    第七周作业
    第六周作业
    第四周作业
    第三周作业。
    第四次作业
    第三次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/spaceship9/p/3157245.html
Copyright © 2020-2023  润新知