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

时间:2022-01-01 03:42:57

解决方案。

条件:

1.手机android 商店下载 blueTerm

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

char val;
int ledpin=;
void setup()
{
Serial.begin();
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口上。

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

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 = ; //RGB LED Clock Pin (Digital 9)
int Datapin = ; //RGB LED Data Pin (Digital 8) SoftwareSerial blueToothSerial(RxD,TxD); /*----------------------SETUP----------------------------*/
void setup() {
Serial.begin(); // 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(,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(,LOW); //Turn off the onboard Arduino LED
char recvChar;
while(){
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(, , ); // 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(, , ); // 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(, , ); // 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(); //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(); // 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(); // 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();
digitalWrite(Clkpin, HIGH);
delayMicroseconds();
} void Send32Zero(void){
unsigned char i;
for (i=; i<; i++){
digitalWrite(Datapin, LOW);
ClkProduce();
}
} uint8 TakeAntiCode(uint8 dat){
uint8 tmp = ;
if ((dat & 0x80) == ){
tmp |= 0x02;
} if ((dat & 0x40) == ){
tmp |= 0x01;
} return tmp;
} // gray data
void DatSend(uint32 dx){
uint8 i;
for (i=; i<; i++){
if ((dx & 0x80000000) != ){
digitalWrite(Datapin, HIGH);
} else {
digitalWrite(Datapin, LOW);
} dx <<= ;
ClkProduce();
}
} // data processing
void DataDealWithAndSend(uint8 r, uint8 g, uint8 b){
uint32 dx = ; dx |= (uint32)0x03 << ; // highest two bits 1,flag bits
dx |= (uint32)TakeAntiCode(b) << ;
dx |= (uint32)TakeAntiCode(g) << ;
dx |= (uint32)TakeAntiCode(r) << ; dx |= (uint32)b << ;
dx |= (uint32)g << ;
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/