Bluetooth 如何使用Arduino通过蓝牙模块HC-05发送数据? /* ==主代码== */ #包括 软件串行BTSerial(10,11);//RX | TX #定义LED引脚9 int state=0; int-Vry=0; int-Vrx=0; 无效设置(){ Serial.begin(9600); 引脚模式(LED引脚,输出); 数字写入(ledPin,低电平); BTSerial.begin(38400);//HC-05 AT命令中的默认速度更多 } void循环(){ 如果(BTSerial.available()>0){//检查数据是否从串行端口提交 state=BTSerial.read();//从串行端口读取数据 } //控制LED /*如果(状态='1'){ digitalWrite(发光二极管,高);//发光二极管亮起 状态=0; } else if(状态='0'){ digitalWrite(发光二极管,低);//发光二极管亮起 状态=0; } */ //读取电位计 //Vry=模拟读数(A0); /* Vrx=模拟读数(A1); int VrxMapped=map(Vrx,01023,0255); //int Vry_mapped=map(Vrx,0,1023,0,255); //int Vrx_mapped=map(Vry,0,1023,0,255); 串行打印(“Vrx”); Serial.println(VrxMapped); //连续打印(“Vry”); //连续打印(Vry); */ Vrx=模拟读数(A1); BTSerial.write(Vrx); 串行打印(“Vrx:”); Serial.println(Vrx); //BTSerial.write(Vry); 延迟(2000年); }
从机代码如下:Bluetooth 如何使用Arduino通过蓝牙模块HC-05发送数据? /* ==主代码== */ #包括 软件串行BTSerial(10,11);//RX | TX #定义LED引脚9 int state=0; int-Vry=0; int-Vrx=0; 无效设置(){ Serial.begin(9600); 引脚模式(LED引脚,输出); 数字写入(ledPin,低电平); BTSerial.begin(38400);//HC-05 AT命令中的默认速度更多 } void循环(){ 如果(BTSerial.available()>0){//检查数据是否从串行端口提交 state=BTSerial.read();//从串行端口读取数据 } //控制LED /*如果(状态='1'){ digitalWrite(发光二极管,高);//发光二极管亮起 状态=0; } else if(状态='0'){ digitalWrite(发光二极管,低);//发光二极管亮起 状态=0; } */ //读取电位计 //Vry=模拟读数(A0); /* Vrx=模拟读数(A1); int VrxMapped=map(Vrx,01023,0255); //int Vry_mapped=map(Vrx,0,1023,0,255); //int Vrx_mapped=map(Vry,0,1023,0,255); 串行打印(“Vrx”); Serial.println(VrxMapped); //连续打印(“Vry”); //连续打印(Vry); */ Vrx=模拟读数(A1); BTSerial.write(Vrx); 串行打印(“Vrx:”); Serial.println(Vrx); //BTSerial.write(Vry); 延迟(2000年); },bluetooth,arduino-uno,Bluetooth,Arduino Uno,从机代码如下: /* == MASTER CODE == */ #include <SoftwareSerial.h> SoftwareSerial BTSerial(10, 11); // RX | TX #define ledPin 9 int state = 0; int Vry = 0; int Vrx = 0; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); digitalWrite
/*
== MASTER CODE ==
*/
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
#define ledPin 9
int state = 0;
int Vry = 0;
int Vrx = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
BTSerial.begin(38400); // HC-05 default speed in AT command more
}
void loop() {
if(BTSerial.available() > 0){ // Checks whether data is comming from the serial port
state = BTSerial.read(); // Reads the data from the serial port
}
// Controlling the LED
/*if (state == '1') {
digitalWrite(ledPin, HIGH); // LED ON
state = 0;
}
else if (state == '0') {
digitalWrite(ledPin, LOW); // LED ON
state = 0;
}
*/
// Reading the potentiometer
//Vry = analogRead(A0);
/*
Vrx = analogRead(A1);
int VrxMapped = map(Vrx, 0, 1023, 0, 255);
//int Vry_mapped = map(Vrx, 0, 1023, 0, 255);
//int Vrx_mapped = map(Vry, 0, 1023, 0, 255);
Serial.print("Vrx");
Serial.println(VrxMapped);
//Serial.print("Vry");
//Serial.println(Vry);
*/
Vrx = analogRead(A1);
BTSerial.write(Vrx);
Serial.print("Vrx: ");
Serial.println(Vrx);
//BTSerial.write(Vry);
delay(2000);
}
/*
==从代码==
*/
#包括
#定义按钮8
软件串行BTSerial(5,3);//RX | TX
//将电机控制器引脚连接至Arduino数字引脚
//马达一
int=10;
intin1=9;
int in2=8;
int-enB=11;
int-in3=7;
int-in4=6;
int jx=A0;
int jy=A1;
int mx=0//右马达
int my=0//左马达
int state=0;
int i=0;
int buttonState=0;
int-ledPin=13;
无效设置(){
pinMode(enA,输出);
pinMode(in1,输出);
pinMode(in2,输出);
pinMode(enB,输出);
引脚模式(in3,输出);
pinMode(in4,输出);
BTSerial.begin(38400);//HC-05默认速度
Serial.begin(9600);
pinMode(按钮,输入);
引脚模式(LED引脚,输出);
}
void循环(){
//my=analogRead(BTSerial.read());
//mx=模拟读取(BTSerial.read());
如果(BTSerial.available()>0){//检查数据是否从串行端口提交
int state=BTSerial.read();//从串行端口读取数据
//序列号。打印('y');
//序列号。打印号(my+100,12月);
串行打印('x');
序列号println(州);
}
如果(i==2){
i=0;
}
/*int-mapx=map(mx,01023,0255);
int mapy=map(my,01023,0255);
如果(mapx>127)
{
数字写入(in1,低);
数字写入(in2,高);
模拟写入(enA,mapx);
}
其他的
{
数字写入(in1,高);
数字写入(in2,低);
模拟写入(enA,127 mapx);
}
如果(mapy>127)
{
数字写入(in3,高);
数字写入(in4,低电平);
模拟写入(enB,mapy);
}
其他的
{
数字写入(in3,低电平);
数字写入(in4,高);
模拟写入(enB,127 mapy);
}
延迟(1000);
*/
/*序列号println(州);
如果(BTSerial.available()>0){//检查数据是否从串行端口提交
state=BTSerial.read();//从串行端口读取数据
}
如果(状态>120){
digitalWrite(发光二极管,高);//将发光二极管设置为亮起
延迟(1000);//等待一秒钟
digitalWrite(发光二极管,低);//关闭发光二极管
延迟(1000);
}
否则{
digitalWrite(发光二极管,高);//将发光二极管设置为亮起
延迟(1000);//等待一秒钟
}
//伺服电机的控制
//阅读按钮
buttonState=数字读取(按钮);
如果(按钮状态==高){
BTSerial.write('1');//将'1'发送到主机以打开LED
}
否则{
BTSerial.write('0');
}
*/
延迟(2000年);
}
这里的问题是,,
如果我从主机发送1,从机端得到130,我不知道串行通信是如何工作的,也不知道如何通过蓝牙设备接收数据 蓝牙串行读取功能返回字符
/*
== SLAVE CODE ==
*/
#include <SoftwareSerial.h>
#define button 8
SoftwareSerial BTSerial(5, 3); // RX | TX
// connect motor controller pins to Arduino digital pins
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
int enB = 11;
int in3 = 7;
int in4 = 6;
int jx = A0;
int jy = A1;
int mx = 0; //right motor
int my = 0; //left motor
int state = 0;
int i = 0;
int buttonState = 0;
int ledPin = 13;
void setup() {
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
BTSerial.begin(38400); // HC-05 default speed
Serial.begin(9600);
pinMode(button, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
//my = analogRead(BTSerial.read());
// mx = analogRead(BTSerial.read());
if(BTSerial.available() > 0){ // Checks whether data is comming from the serial port
int state = BTSerial.read(); // Reads the data from the serial port
//Serial.print('y');
//Serial.println(my+100,DEC);
Serial.print('x');
Serial.println(state);
}
if (i == 2){
i=0;
}
/*int mapx = map(mx,0,1023,0,255);
int mapy = map(my,0,1023,0,255);
if (mapx>127)
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA,mapx);
}
else
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA,127-mapx);
}
if (mapy>127)
{
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB,mapy);
}
else
{
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB,127-mapy);
}
delay(1000);
*/
/*Serial.println(state);
if(BTSerial.available() > 0){ // Checks whether data is comming from the serial port
state = BTSerial.read(); // Reads the data from the serial port
}
if (state > 120){
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000);
}
else{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
}
// Controlling the servo motor
// Reading the button
buttonState = digitalRead(button);
if (buttonState == HIGH) {
BTSerial.write('1'); // Sends '1' to the master to turn on LED
}
else {
BTSerial.write('0');
}
*/
delay(2000);
}