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
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于Python控制舵机,可以使用tkinter库来创建一个带有滚动条的窗口,通过滚动条控制舵机的角度。首先,需要导入相关的模块,包括serial和tkinter。然后,建立串口连接,并创建一个按钮窗口。在按钮控制函数中,通过scale.get()获取滚动条的值,然后将其转换为字符串并通过串口写入。同时,可以通过serial读取舵机角度的信息。代码中的硬件连接和执行python程序的具体步骤可以参考引用。请注意,SG90舵机的脉冲周期为20ms,脉宽0.5ms-2.5ms对应的角度范围为-90到90,对应的占空比为2.5%-12.5%。在给定范围内,不同的占空比对应一个特定的角度。引用提供了一个基于Python的编程示例,可以参考该代码来控制SG90舵机的转动角度。123 #### 引用[.reference_title] - *1* *2* [Python 控制舵机](https://blog.csdn.net/u013372493/article/details/120401134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [使用python 控制G90舵机,RPI.GPIO 模块的脉宽调制(PWM)功能](https://blog.csdn.net/wailaizhu/article/details/54666520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值