我正在尝试设置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);
}
}
}
答案 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 ) {