Linux串口通信Arduino#3
Linux串口通信Arduino#1
Linux串口通信Arduino#2
前言
利用串口通信,在终端输入数字来控制Arduino Uno板13引脚LED的亮灭
Arduino程序
键盘输入数字1,打开LED灯;输入数字2,关闭LED灯。
int led 13
String str;
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop()
{
led_control();
}
void led_control()
{
if (Serial.availabile())
{
str = Serial.readString(); //读取串口字符串
if (str == "1")
{
digitalWrite(led,HIGH); //打开led
Serial.println("Led is open!"); //回应Linux
}
else if (str == "2")
{
digitalWrite(led,LOW); //关闭led
Serial.println("Led is close!");
}
}
}
led.py程序
import serial
from time import sleep
import sys
port = "/dev/ttyACM0"
rates = 9600
ser = serial.Serial(port,rates)
ser.flushInput()
try:
while True:
number = input('按1开灯 按2关灯 按e退出程序') # 提示输入
if number == '1':
print('开灯指令')
ser.write(b'1') # 发送字符串1
sleep(1) # 等待回应
elif number == '2':
print('关灯指令')
ser.write(b'2')
sleep(1)
elif number == 'e':
ser.close()
print('再见!')
sys.exit()
else:
print('输入错误')
while ser.in_waiting:
arduino_feedback = ser.readline().decode() # 接收回应并解码
print('Arduino:', arduino_feedback)
except KeyboardInterrupt:
ser.close()
print('再见!')