Python 控制舵机

原理:

  • UNO R3中写入控制舵机转动度数的程序,该程序一直检测:serial是否又数据,有则操作舵机。
  • python程序负责向 serial 写入数据,并可以通过serial读取 舵机角度的信息。

1、硬件连接

说明:示例中的信号线接的是10号引脚。

 2、通过usb数据线,上传控制舵机的程序到UNR R3

说明:这里的舵机引脚 是10 

/*
  舵机的控制
*/

//导入舵机的库
#include <Servo.h>

Servo servo_pin_1;

int state=0; //初始状态
int t=10; //延时毫秒
void setup()
{
  Serial.begin(9600);//这个一定要设置为9600 否则乱码  python也要保证一致
  servo_pin_1.attach(10);//使用第10号引脚为信号输出
}

void loop()
{
  while(!Serial)//检测是否有串口接通
  {} 
  if(Serial.available()>0) //判断是否具有输入
  {
    state=Serial.parseInt(); //接收数据
    servo_pin_1.write( state ); //定义舵机的转动角度
    delay( 30 );//延时1000毫秒
    Serial.print(state);
  }
}

 

3、执行python程序 

# -*- coding: utf-8 -*-
"""
Created on Sat Feb  6 16:44:35 2021

@author: Admin
"""

"""
    python:tkinter控制舵机的角度

"""
# 导入模块
import serial
import tkinter as tk
import time

# 建立串口连接
ser = serial.Serial('COM5', 9600, timeout=0.5)


# 创建一个按钮的窗体
class ButtonsApp(tk.Tk):
    def __init__(self):
        super().__init__()
        # 开灯按钮 resolution=50 表示步长为50
        self.scale = tk.Scale(self, from_=0,
                              tickinterval=30,
                              resolution=30,
                              to=180, length=800,
                              width=50,  orien=tk.HORIZONTAL,
                              cursor="hand2",
                              command=self.on)
        self.scale.pack(padx=40, pady=10)

    # 控制函数,特别注意event参数的使用
    def on(self, event):
        val = str(self.scale.get())
        ser.write(val.encode('utf-8'))
        print(val,ser.read())


if __name__ == '__main__':
    app = ButtonsApp()
    app.title('滚动条控制舵机')
    app.mainloop()
    ser.close()

参考博客:python与arduino结合控制舵机_张一根的博客-CSDN博客 

下一步:检测 物体偏移多少度,并让舵机也执行多少度。CSDN

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值