显示随机字符 arduino 的串行监视器



我正在尝试设置一个L298n,以便能够使用arduino UNO控制两个直流电机(通过蓝牙(的速度。

我创建了一个麻省理工学院应用程序发明者应用程序,并尝试使用应用程序上的滑块功能来控制电机速度。但是当我打开串行监视器以查看我已连接到 arduino 上的 RX 和 TX 引脚以及 5v 和 GND 的 HC05 的内容时,会出现一些胡言乱语。我附上了串行监视器产生的图像和我的 MIT 应用程序发明者块。我读过很多人通过波特率遇到这个问题,但我的已经更改为 34800。 非常感谢在解决此问题方面的任何帮助。 代码如下:

int enA = 6;
int enB = 3;
int in1 = 4;
int in2 = 9;
int in3 = 8;
int in4 = 2;
int val2;
void setup() {
Serial.begin(38400);
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
digitalWrite (in1, HIGH);
digitalWrite (in2, LOW);
digitalWrite (in3, HIGH);
digitalWrite (in4, LOW);
}
void loop() {
if (Serial.available() >= 0 ) {
unsigned int a = Serial.read();
unsigned int b = Serial.read();
unsigned int val = (b * 256) + a;
Serial.println(val);
if (val >= 0 && val <= 255) {
analogWrite(enA, val);
}
if (val >= 1000 && val <= 1255) {
val2 = val - 1000;
analogWrite(enB, val2);
}
}
}

您正在尝试读取串行缓冲区,即使没有要读取的字节。请参阅您的 if 语句。

if (Serial.available() >= 0 ) {

Serial.available()返回缓冲区中可用的字节数(请参阅 Arduino 文档(。Serial.available() == 0时,没有什么可读的。

您希望仅在缓冲区中存在某些内容时才调用Serial.read()。将 if 语句更改为:

if (Serial.available() > 0 ) {

或者,简单地

if (Serial.available()) {

最新更新