我是靠谱客的博主 健忘世界,最近开发中收集的这篇文章主要介绍python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)前言一、python中pyfirmata的环境二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
python firmata协议利用arduino操控麦克纳姆轮小车
- 前言
- 一、python中pyfirmata的环境
- 材料
- 二、使用步骤
- 1.小车的安装方式 我在这采用的是X型安装方式
- 总结
前言
麦克纳姆轮小车的安装不在过多赘余 有需要的可以看看。在硬件安装上我们是如出一辙的 小车底盘是淘宝买的 。
王若依博客
他在博客中提到了利用自定义串口的方法操作麦克纳姆轮小车另外提到了小车的安装
一、python中pyfirmata的环境
在使用之前需要先下载pyfirmata 和serial两个库文件 通过pip即可下载
材料
1.L298N驱动板2
2.麦克纳姆轮4
3.3000MA电池
4.小车底盘
5.Arduino板子
L298N的工作原理
二、使用步骤
1.小车的安装方式 我在这采用的是X型安装方式
图片来源于网络
麦克纳姆轮小车的轮子并不是随便安装都可以实现万向的 注意安装方向。
这里用arduino UNO 来进行操控四个轮子分别用四个舵机驱动 。
话不多说 上代码
代码如下(示例):
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 1 16:33:32 2021
@author: 23119
"""
from pyfirmata import Arduino
board=Arduino('com3')
LB_IN1=2
LB_IN2=4
#LB_EN=3
LU_IN1=6
LU_IN2=7
#LU_EN=5
RU_IN1=8
RU_IN2=9
#RU_EN=10
RB_IN1=12
RB_IN2=14
#RB_EN=11
LB_EN=board.get_pin('d:3:p')
LU_EN=board.get_pin('d:5:p')
RU_EN=board.get_pin('d:10:p')
RB_EN=board.get_pin('d:11:p')
RB_IN2=board.get_pin('a:A0:P')
#150映射为0.6
def Up():
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
board.digital[LB_IN1].write(0)
board.digital[LB_IN2].write(1)
board.digital[LU_IN1].write(0)
board.digital[LU_IN2].write(1)
board.digital[RB_IN1].write(0)
board.digital[RB_IN2].write(1)
RB_IN2.write(1)
board.digital[RU_IN1].write(0)
board.digital[RU_IN2].write(1)
def Back():
board.digital[LB_IN1].write(1)
board.digital[LB_IN2].write(0)
board.digital[LU_IN1].write(1)
board.digital[LU_IN2].write(0)
board.digital[RB_IN1].write(1)
board.digital[RB_IN2].write(0)
board.digital[RU_IN1].write(1)
board.digital[RU_IN2].write(0)
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
def TurnRight():
#左侧正转右侧反转
board.digital[LB_IN1].write(0)
board.digital[LB_IN2].write(1)
board.digital[LU_IN1].write(0)
board.digital[LU_IN2].write(1)
board.digital[RB_IN1].write(1)
board.digital[RB_IN2].write(0)
board.digital[RU_IN1].write(1)
board.digital[RU_IN2].write(0)
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
#ba
#ab
#LU RU
#LB RB
def TurnLeft():
#左侧反转右侧正转
board.digital[LB_IN1].write(1)
board.digital[LB_IN2].write(0)
board.digital[LU_IN1].write(1)
board.digital[LU_IN2].write(0)
board.digital[RB_IN1].write(0)
board.digital[RB_IN2].write(1)
board.digital[RU_IN1].write(0)
board.digital[RU_IN2].write(1)
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
def RightLine():
#a反转b正转
board.digital[LB_IN1].write(1)
board.digital[LB_IN2].write(0)
board.digital[LU_IN1].write(0)
board.digital[LU_IN2].write(1)
board.digital[RB_IN1].write(0)
board.digital[RB_IN2].write(1)
board.digital[RU_IN1].write(1)
board.digital[RU_IN2].write(0)
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
def LeftLine():
#a正转b反转
board.digital[LB_IN1].write(0)
board.digital[LB_IN2].write(1)
board.digital[LU_IN1].write(1)
board.digital[LU_IN2].write(0)
board.digital[RB_IN1].write(1)
board.digital[RB_IN2].write(0)
board.digital[RU_IN1].write(0)
board.digital[RU_IN2].write(1)
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
def Stop():
board.digital[LB_IN1].write(0)
board.digital[LB_IN2].write(0)
board.digital[LU_IN1].write(0)
board.digital[LU_IN2].write(0)
board.digital[RB_IN1].write(0)
board.digital[RB_IN2].write(0)
board.digital[RU_IN1].write(0)
board.digital[RU_IN2].write(0)
LB_EN.write(0.6)
LU_EN.write(0.6)
RU_EN.write(0.6)
RB_EN.write(0.6)
Up()
#Back()
#TurnRight()
# TurnLeft()
# RightLine()
# LeftLine()
# Stop()
总结
亲测有效。在过程中如果有问题欢迎留言。
最后
以上就是健忘世界为你收集整理的python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)前言一、python中pyfirmata的环境二、使用步骤总结的全部内容,希望文章能够帮你解决python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)前言一、python中pyfirmata的环境二、使用步骤总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复