通过串行方式向 arduino 发送数字,发送不同的东西吗?

通过串行方式向 arduino 发送数字,发送不同的东西吗?

我有一个 arduino 设置,当它收到 1 时会打开灯,当它收到 0 时会关闭灯。我不认为代码有什么问题。我可以用 向 Arduino 发送 1,echo 1 > /dev/ttyACM0灯会闪烁,这让我很困惑。然后我发送了“h”,它做了同样的事情。我甚至用 打开了一个屏幕并screen /dev/ttyACM0输入 1,它闪烁了。我认为回显 1 会回显 1。我还使用了以下命令stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts 我在这里做错了什么吗?如果您需要更多信息,请直接询问。

Arduino 代码(我不认为这有缺陷):

void setup() {
Serial.begin(9600);
//set the LED pin to OUTPUT
pinMode(13, OUTPUT);
}

void loop() {
//wait until the serial connection is open
while (Serial.available() ==0);

//read from the serial connection; the - '0' is to cast the values as the int and not the ASCII code
int val = Serial.read() - '0';

//print to the console for testing
Serial.println(val);

//if we've recieved a '1', turn on the LED and print a message
if(val==1){
Serial.println("Received a 1");
digitalWrite(13, HIGH);
}
//if we've recieved a '0', turn off the LED and print a message
if(val==0){
Serial.println("Received a 0");
digitalWrite(13, LOW);
}
}

答案1

首先尝试在无需读取串行的情况下使 LED 闪烁。如果可行,则表示电路板没有问题,LED 可以正常工作。接下来,尝试使用使用 pyserial 的 Python 脚本并将数据写入 com 端口。网上有关于如何执行此操作的教程。(确保使用正确的 com 端口,在终端中使用命令 ls /dev/tty*[for Linux] 查看正确的 com 端口)。希望这可行。

相关内容