1.树莓派上Python:
import tkinter
import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
def showNum():
print(scale1.get())
val = str(scale1.get())
ser.write(val.encode('utf-8')) # python3中write()串口写字符需加encode()转码,否则报错
win = tkinter.Tk()
win.title("FrankSoft Servo 0.1") #窗口标题
win.geometry("500x100+200+20") #窗口尺寸
scale1 = tkinter.Scale(win, from_=0, to=180, orient=tkinter.HORIZONTAL, tickinterval=60, length=200)
scale1.pack()
scale1.set(18) # 设置scale的默认值
tkinter.Button(win, text="按钮", command=showNum).pack()
win.mainloop() # 窗口持久化
运行后显示:
点击按钮后发送对应数值到Arduino串口。
2.Arduino程序
/*
舵机的控制
*/
#include <Servo.h> //导入舵机的库
Servo servo_pin_9;
int state = 0; //初始状态,舵机角度为0
void setup()
{
Serial.begin(9600);
servo_pin_9.attach(9);//使用第9号引脚为信号输出
}
void loop()
{
while(!Serial)//检测是否有串口接通
{}
if(Serial.available()>0) //判断是否具有输入,如果没有输入,值为-1
{
state = Serial.parseInt(); //接收数据
servo_pin_9.write( state ); //定义舵机的转动角度
delay(100);
}
}