Python 不写入 Arduino 串行
Python doesn't write to Arduino serial
我是Arduino新手,只想左右旋转伺服电机。我的 arduino 代码如下所示:
#include <Servo.h>
int servoPin = 9;
Servo myServo;
int pos1 = 0;
void setup() {
Serial.begin(9600);
myServo.attach(servoPin);
}
void loop() {
myServo.write(180);
delay(1000);
myServo.write(0);
delay(1000);
}
而且效果很好。现在我想用 python 实现同样的事情,所以我的 python 代码如下所示:
import serial
import time
ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
print("Writing")
ser.write("180;".encode())
time.sleep(1)
ser.write("0;".encode())
time.sleep(1)
ser.close()
此代码在日志中打印 "Writing" 但什么也不做。
您正在正确地向 Arduino 写入命令,Arduino 只是没有在听。如果您希望看到伺服运动,则需要读取 Arduino 端的串行端口。这是从 https://www.arduino.cc/en/Serial/Read
上的 Arduino 文档读取串行端口的示例
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
用一些if-else逻辑或字符串到整数的转换来修改它来发送你需要的伺服命令。
我是Arduino新手,只想左右旋转伺服电机。我的 arduino 代码如下所示:
#include <Servo.h>
int servoPin = 9;
Servo myServo;
int pos1 = 0;
void setup() {
Serial.begin(9600);
myServo.attach(servoPin);
}
void loop() {
myServo.write(180);
delay(1000);
myServo.write(0);
delay(1000);
}
而且效果很好。现在我想用 python 实现同样的事情,所以我的 python 代码如下所示:
import serial
import time
ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
print("Writing")
ser.write("180;".encode())
time.sleep(1)
ser.write("0;".encode())
time.sleep(1)
ser.close()
此代码在日志中打印 "Writing" 但什么也不做。
您正在正确地向 Arduino 写入命令,Arduino 只是没有在听。如果您希望看到伺服运动,则需要读取 Arduino 端的串行端口。这是从 https://www.arduino.cc/en/Serial/Read
上的 Arduino 文档读取串行端口的示例int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
用一些if-else逻辑或字符串到整数的转换来修改它来发送你需要的伺服命令。