因为每次运行都是串口已经打开了,不知道是不是树莓派的串口自动打开,于是把ser.open()注释了
#!/usr/bin/env python
import serial
import time
def main():
ser = serial.Serial("/dev/ttyACM0",9600,timeout=0.5) #树莓派连接arduino的串口
print(ser.name)
print(ser.port)
#ser.open()
while True:
a = input('''please input control command:
1 led->high
2 led->low
''')
if (a==1):
ser.write("1")
if (a==2):
ser.write("2")
time.sleep(2)
data = ser.readline()
print(data)
#ser.close()
if __name__ == '__main__':
main()
arduino代码:Arduino 的输出基本就用两个函数 print 和 println,区别在于后者比前者多了回车换行
int val;
int ledpin=13;
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}
void loop()
{
val=Serial.read();
if(val=='1')
{
digitalWrite(ledpin,HIGH);
Serial.println("led light");
delay(500);
}
if(val=='2')
{
digitalWrite(ledpin,LOW);
Serial.println("led dark");
delay(500);
}