我正在做一个项目,我需要从一个arduino无线存在的超声波传感器发送数据到其他arduino,我需要在串行监视器中使用这些值。但问题是我无法通过蓝牙发送这些值。我试图发送一个字符,它出现在串行监视器中..但是当我尝试相同的整数值时,它没有出现在串行监视器中。我为蓝牙配置了Master和Slave模式。我上传了用于发送这些值的代码图像。请帮帮我。提前致谢 。
code
//@ transmitting end
#define trigPin 12
#define echoPin 11
void setup() {
Serial.begin(38400); // Default communication rate of the Bluetooth module
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
long duration;
float distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
Serial.println(distance,2); // Sends floatValue
delay(500);
}
//@ receving end
#include <SoftwareSerial.h>
#define led 13
SoftwareSerial BTSerial(10, 11);
int data=0;
void setup() {
pinMode(led,OUTPUT);
Serial.begin(38400);
BTSerial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
int number;
if(Serial.available() > 0){ // Checks data is from the serial port
data = BTSerial.read(); // Reads the data from the serial port
//analogWrite(led,data);
delay(10);
//Serial.println(data);
}
Serial.println(data);
}
我需要串行监视器上的整数值。但在那里我得到一些符号?/ <> ..
从the Arduino reference开始,Serial.read()
只读取串行缓冲区中可用的第一个可用字节。由于int
编码为8个字节,我会说你需要按顺序读取传入的字节以获得完整的值。
也许你可以通过将(Serial.available() > 0)
放在while
循环中来实现这一点,例如将你在char[8]
中获得的值连接起来,然后将这个char
转换为整数值。
此外,请注意你发送floats
而不是int
。
谢谢您的帮助..!我修改了接收器端的代码以从发送器获取浮点值。这是我修改过的代码
#include <SoftwareSerial.h>
int bluetoothTx = 10;
int bluetoothRx = 11;
String content; //content buffer to concatenate characters
char character; //To store single character
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup(){
bluetooth.begin(38400);
Serial.begin(9600);
}
void loop(){
bluetooth();
}
void bluetooth(){ //
while(bluetooth.available()){
character = bluetooth.read();
content.concat(character);
if(character == '\r'){ // find if there is carriage return
Serial.print(content); //display content (Use baud rate 9600)
content = ""; //clear buffer
Serial.println();
}
}
}