咸鱼ZTMR实例—机械臂
咸鱼ZTMR实例—机械臂
1个舵机不过瘾,来4个搞搞机械臂。
SG90舵机X4
范围180°(-90°~90°)
引脚 | 说明 |
---|---|
暗灰(棕色) | GND |
红色 | 5V |
橙色 | X1 |
PS2手柄
PS2手柄数字 | 代表舵机 | 机械臂状态 |
---|---|---|
5&7 | 2号&3号舵机 | 支架上下运动 |
6&8 | 1号舵机 | 机身左右转 |
16(方块)&14(圆圈) | 4号舵机 | 爪开合 |
例程:“粗糙机械臂”
main.py
# main.py -- put your code here!
import ps2
from pyb import Servo,delay#定义舵机
s1=Servo(1)
s2=Servo(2)
s3=Servo(3)
s4=Servo(4)
#定义舵机初始位置
s1.angle(0)
s2.angle(0)
s3.angle(0)
s4.angle(0)def setServoTurn1(flag1):turn_angle1 = s1.angle()if flag1:#逆时针 值递增 最大值90度turn_angle1 += 10 #每按一次转10度if turn_angle1 <= 90:s1.angle(turn_angle1)else:#顺时针 值递减 最小值-90度turn_angle1 -= 10if turn_angle1 >= -90:s1.angle(turn_angle1)def setServoTurn2(flag2):turn_angle2 = s2.angle()if flag2:#逆时针 值递增 最大值90度turn_angle2 += 10 #每按一次转10度if turn_angle2 <= 90:s2.angle(turn_angle2) else:#顺时针 值递减 最小值-90度turn_angle2 -= 10if turn_angle2 >= -90:s2.angle(turn_angle2)def setServoTurn3(flag3):turn_angle3 = s3.angle()if flag3:#逆时针 值递增 最大值90度turn_angle3 += 10 #每按一次转10度if turn_angle3 <= 90:s3.angle(turn_angle3) else:#顺时针 值递减 最小值-90度turn_angle3 -= 10if turn_angle3 >= -90:s3.angle(turn_angle3)def setServoTurn4(flag4):turn_angle4 = s4.angle()if flag4:#逆时针 值递增 最大值90度turn_angle4 += 10 #每按一次转10度if turn_angle4 <= 90:s4.angle(turn_angle4)else:#顺时针 值递减 最小值-90度turn_angle4 -= 10if turn_angle4 >= -90:s4.angle(turn_angle4)#比较粗糙,因为占时没有机械臂的套件测试
#不过4个舵机可以按照要求转动了到时候微调即可while True: pyb.delay(100)print(ps2.ps2_key()) if (ps2.ps2_key()==5): #5或7 舵机2和3转setServoTurn2(True) setServoTurn3(True) elif (ps2.ps2_key()==7):setServoTurn2(False)setServoTurn3(False)elif (ps2.ps2_key()==6): #6或8 舵机1转setServoTurn1(True)elif (ps2.ps2_key()==8):setServoTurn1(False)elif (ps2.ps2_key()==16): #16或14 舵机4转(爪开合)setServoTurn4(True)elif (ps2.ps2_key()==14):setServoTurn4(False)
参考
ps2.py
from machine import Pin
import time
def ps2_test():print('test ok')
di=Pin(Pin.cpu.C6,Pin.IN,Pin.PULL_DOWN)
do=Pin(Pin.cpu.C7,Pin.OUT, )
cs=Pin(Pin.cpu.B0,Pin.OUT,) #PULL_UP
clk=Pin(Pin.cpu.B1,Pin.OUT,)
#D0 16 dat=DI
#D2 04 cmd=DO
#D3 0 CS =CS
#D4 02 CLK=CLK
def DO_H():do.value(1)
def DO_L():do.value(0)
def CS_H ():cs.value(1)
def CS_L():cs.value(0)
def CLK_H ():clk.value(1)
def CLK_L():clk.value(0)#常量按钮
PSB_SELECT = 1
PSB_L3 = 2
PSB_R3 = 3
PSB_START = 4
PSB_PAD_UP = 5
PSB_PAD_RIGHT = 6
PSB_PAD_DOWN = 7
PSB_PAD_LEFT = 8
PSB_L2 = 9
PSB_R2 = 10
PSB_L1 = 11
PSB_R1 = 12
PSB_GREEN = 13
PSB_RED = 14
PSB_BLUE = 15
PSB_PINK = 16
PSB_TRIANGLE = 13
PSB_CIRCLE = 14
PSB_CROSS = 15
PSB_SQUARE = 26
# 左摇杆
PSS_RX = 5
PSS_RY = 6
PSS_LX = 7
PSS_LY = 8
mask=[
PSB_SELECT,PSB_L3,PSB_R3 ,PSB_START,PSB_PAD_UP,PSB_PAD_RIGHT,PSB_PAD_DOWN,PSB_PAD_LEFT,PSB_L2,PSB_R2,PSB_L1,PSB_R1 ,PSB_GREEN,PSB_RED,PSB_BLUE,PSB_PINK]
comd=[0x01,0x42]
data=[0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
def ps2_init():CLK_H()DO_H()time.sleep_ms(10)
def ps2_cmd(cmd):global datadata[1]=0for ref in (1,2,4,8,16,32,64,128):if ( ref & cmd):DO_H()else:DO_L()CLK_H ()time.sleep_us(50)CLK_L()time.sleep_us(50)CLK_H ()if(di.value()==1):data[1]=ref|data[1]
def ps2_red():global dataglobal comdCS_L()ps2_cmd(comd[0])ps2_cmd(comd[1])CS_H()if(data[1]==57):return 0#red lightelse:return 1#not red
def ps2_read():global dataglobal comdbyte=0ref=0x01CS_L()ps2_cmd(comd[0])ps2_cmd(comd[1])for byte in (2,3,4,5,6,7,8):for ref in (1,2,4,8,16,32,64,128):CLK_H ()CLK_L()time.sleep_us(50)CLK_H ()if(di.value()==1):data[byte]= ref|data[byte]time.sleep_us(50)CS_H ()
def ps2_clear():#okglobal datafor i in range(0,9,1):data[i]=0def ps2_andata(button):global datareturn data[button]
def ps2_key():global dataglobal maskps2_clear()ps2_read()handkey=(data[4]<<8)|data[3]for index in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15):if (( handkey&(1<<(mask[index]-1)))==0):return index+2return 0
到时候补充个机械臂的效果视频(/捂脸笑)
咸鱼ZTMR实例—机械臂相关推荐
- 咸鱼ZTMR实例—板载LED
咸鱼ZTMR实例-板载LED 大部分开发板的例程,都是从闪灯(控制LED闪烁)开始的.因为闪灯的程序简单,也比较直观,不但可以让初学者快速了解基本方法, 也可以直观地看到效果. 用法 说明 pyb.L ...
- 咸鱼ZTMR实例—寻迹模块
咸鱼ZTMR实例-寻迹模块 主控板:ZTMR1.1python开发板 寻迹模块 ZT红外寻迹 规格参数: 1.工作电压:DC 3.3V-5V 2.工作电流:尽量选择1A以上电源供电 3.工作温度:-1 ...
- 咸鱼ZTMR实例—加速传感器
咸鱼ZTMR实例-加速传感器 MMA7660FC 加速度传感器基本使用 制作水平仪 MMA7660FC MMA7660FC可在六个方向定制垂直水平座向 集成了众多智能的运动功能,如方向.震动和敲击检测 ...
- 咸鱼ZTMR实例—巡线入门
咸鱼ZTMR实例-巡线入门 之前我们用寻迹模块简单的做了一个防止小车高处跌落的功能,但是寻迹并不简单(/滑稽).本次我们使用寻迹来做一个巡线功能.简单来说就是我们画一条线,让小车按照线来行驶~~ 巡线 ...
- 咸鱼ZTMR实例—土壤湿度计检测模块
咸鱼ZTMR实例-土壤湿度计检测模块 通过电位器调节土壤湿度控制阀值,可以自动对菜园,花园自动浇水,家庭花盆土壤湿度的控制,各种电子比赛,电子积木,arduino设计等. 主控板:ZTMR1.1开发板 ...
- 咸鱼ZTMR实例—自动浇花器
咸鱼ZTMR实例-自动浇花器 我们之前用过土壤湿度计检测模块,继电器我们也会用了,还等什么呢?自动灌水安排上~ 主控板:ZTMR1.1开发板 土壤湿度计检测模块 模块介绍 采用优质土壤传感器做土壤湿度 ...
- Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit!
机械臂仿真控制实例 目录 环境设置 项目工具介绍 Gazebo (1)Gazebo组件 (2)Gazebo界面 统一机器人描述格式(URDF) RViz Moveit! 1.环境设置 对于此项目,使用 ...
- 机器人动力学建模实例:二连杆机械臂
机器人动力学方程比较复杂,通常每一个参数矩阵都非常庞大,这里介绍几个简单结构的动力学方程,对于一般的控制算法,可以在这几个动力学方程中进行验证. 1.欧拉-拉格朗日动力学方程 (不考虑摩擦和末端受力) ...
- Udacity机器人软件工程师课程笔记(十八)-机械臂仿真控制实例(其三)-KR210机械臂反向运动学
机械臂仿真控制实例(其二)-KR210正向运动学 目录 反向运动学概述 为Kuka KR210创建IK解算器 1.反向运动学概述 KR210的最后三个关节是满足三个相邻的关节轴线在单点处相交的旋转关节 ...
最新文章
- OKR的落实过程中如何判断设定的OKR是否是合格的OKR?
- 全球知名物联网研究机构预测:2016物联网发展形势
- ROS Gazebo(二):概述
- Spring文档学习
- Java关键字(一)——instanceof
- ubuntu下修改中文字体
- 一款霸榜 GitHub 的开源 Linux 资源监视器!
- 详细解析WSAAsyncSelect模型
- linux df命令无反馈,Linux-df命令
- JS Math.sin() 与 Math.cos() 用法
- 计算机科学基础word实验一,大学计算机基础综合实验实验报告 参考模板(1)
- 计算机审计 报告哦,计算机审计实训报告
- 微信小程序云开发视频教程上线啦
- PDMS中如何设置颜色规则
- LeetCode力扣算法总结-go版本
- python多线程返回值问题重写Thread类的run方法
- Sketch基础学习
- 2022中国消费者洞察
- 飞机下滑波束导引系统设计
- Qt 系统下的qm翻译文件