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

时间:2019-12-04 02:44:17

标签: arduino bluetooth

我正在尝试设置L298n,以便能够使用arduino UNO控制两个直流电动机(VIA BLUETOOTH)的速度。

我创建了一个MIT应用程序发明者应用程序,并尝试使用该应用程序上的滑块功能来控制电动机速度。但是,当我打开串行监视器以查看从HC05连接到arduino的RX和TX引脚以及5v和GND的信号时,会出现一些乱码。我已经附上了串行监视器产生的图像以及我的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);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

即使没有字节要读取,您仍在尝试读取串行缓冲区。查看您的if语句。

df['bar']
df.loc[:,'bar']

if (Serial.available() >= 0 ) { 返回缓冲区(see Arduino documentation)中可用的字节数。当Serial.available()时,没有任何内容可供阅读。

仅当缓冲区中有内容时才想调用Serial.available() == 0。将if语句更改为此:

Serial.read()

或者,简单地

if (Serial.available() > 0 ) {