我有一个 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 端口)。希望这可行。