树莓派python写数据到Arduino控制舵机简单笔记

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);
  }
}

 

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页