2022-11-19日 esp32中 MICROPYTHON 的tm1638配合5轴机械臂程序记录

机械臂自制程序

下面这个程序首选确定各个机械臂的活动范围,主要功能不是让机械臂动作而是让机械臂动作起来比较平缓,所以整个程序里边有根据输入平缓渐进移动的动作逻辑,而且这个动作逻辑占据了程序大部分内容。

zhua.py

from machine import PWM ,Pin
import time
class Zhua(object):
    def __init__(self,a,b,c,d,f):
        self.a=PWM(Pin(a),freq=50)#旋转底座 30~130  中心位置75
        self.b=PWM(Pin(b),freq=50)#根部第一节 30~130  中心位置75
        self.c=PWM(Pin(c),freq=50) #根部第二节 30~130  中心位置75
        self.d=PWM(Pin(d),freq=50)#根部第三节 30~130  中心位置75
        self.f=PWM(Pin(f),freq=50)# 夹爪30~84
        self.zero()
    def run(self,x,y):
        if y>self.zero_list[x]:
            print('0')
            for i in range(y//1):
                if i>=self.zero_list[x]:
                    self.server_list[x].duty(i)
                    time.sleep_ms(80)
        else:
            for i in range((self.zero_list[x]-y)//1):
                self.server_list[x].duty(self.zero_list[x]-i)
                time.sleep_ms(110)
            self.server_list[x].duty(y)
        self.zero_list[x]=y
    def zero(self):
        self.zero_list=dict()
        self.zero_list['a']=75
        self.zero_list['b']=75
        self.zero_list['c']=75
        self.zero_list['d']=75
        self.zero_list['f']=84
        self.server_list=dict()
        self.server_list['a']=self.a
        self.server_list['b']=self.b
        self.server_list['c']=self.c
        self.server_list['d']=self.d
        self.server_list['f']=self.f
        self.run_all([75,75,75,75,84])
    def run_all(self,list_1):
        
        self.run('a',list_1[0])
        self.run('b',list_1[1])
        self.run('c',list_1[2])
        self.run('d',list_1[3])
        self.run('f',list_1[4])
        
if __name__=='__main__':
    xx=Zhua(16,17,18,19,14)
    

下面这个部分是和1638配合实现输入和输出与机械臂联动并且录制机械臂动作并重现录制这么个逻辑,因为只有8个按键所以1-5号按键代表5个轴,7号配合1-5中的一个毽子实现增加,8号配合1-5实现减少,6号毽子为记录当前位置,7+8一起按则是重放记录,1+4一起按时复位到起始位置。

ctrlZhua.py

#  五轴机械臂程序,配合TM1638 实现按键控制,记录动作并复制动作功能
from zhua import Zhua #自制控制库名为爪。。。
from machine import Pin
xx=Zhua(16,17,18,19,14)#传入引脚标号
import tm1638,time
tm=tm1638.TM1638(stb=Pin(25),clk=Pin(26),dio=Pin(27)) ##TM1638标号一致 板子有标记
list_all=[] #录制动作的列表,有需要可以写到NVS里边永久保存
while 1:
    #垃圾判断懒得优化,能用就行
    if tm.keys()==1:#这是底座舵机
        tm.show('ch1 %d'%xx.zero_list['a']) #显示通道,获取当前舵机数据
    elif tm.keys()==65:
        xx.run('a',xx.zero_list['a']+1) #加一运行
        tm.show('ch1 %d'%xx.zero_list['a'])#显示
    elif tm.keys()==129:
        xx.run('a',xx.zero_list['a']-1)
        tm.show('ch1 %d'%xx.zero_list['a'])
        
        
        
    if tm.keys()==2:
        tm.show('ch2 %d'%xx.zero_list['b']) 
    elif tm.keys()==66:
        xx.run('b',xx.zero_list['b']+1)
        tm.show('ch2 %d'%xx.zero_list['b'])
    elif tm.keys()==130:
        xx.run('b',xx.zero_list['b']-1)
        tm.show('ch2 %d'%xx.zero_list['b'])
        
    if tm.keys()==9:
        tm.show('zero')
        xx.zero()
        
        
    if tm.keys()==4:
        tm.show('ch3 %d'%xx.zero_list['c']) 
    elif tm.keys()==68:
        xx.run('c',xx.zero_list['c']+1)
        tm.show('ch3 %d'%xx.zero_list['c'])
    elif tm.keys()==132:
        xx.run('c',xx.zero_list['c']-1)
        tm.show('ch3 %d'%xx.zero_list['c'])
        
    if tm.keys()==0:
        tm.clear()
        tm.show('cool')
        time.sleep(0.5)
    if tm.keys()==8:
        tm.show('ch4 %d'%xx.zero_list['d']) 
    elif tm.keys()==72:
        xx.run('d',xx.zero_list['d']+1)
        tm.show('ch4 %d'%xx.zero_list['d'])
    elif tm.keys()==136:
        xx.run('d',xx.zero_list['d']-1)
        tm.show('ch4 %d'%xx.zero_list['d'])
        
        
        
    if tm.keys()==16:#夹爪舵机
        tm.show('ch5 %d'%xx.zero_list['f']) 
    elif tm.keys()==80:
        xx.run('f',xx.zero_list['f']+1)
        tm.show('ch5 %d'%xx.zero_list['f'])
    elif tm.keys()==144:
        xx.run('f',xx.zero_list['f']-1)
        tm.show('ch5 %d'%xx.zero_list['f'])
        
    if tm.keys()==32:
        list_1 = [xx.zero_list['a'],xx.zero_list['b'],xx.zero_list['c'],xx.zero_list['d'],xx.zero_list['f']]#录制动作
        list_all.append(list_1)
        tm.show('rec---')
        time.sleep(1)
        print(list_all)
    if tm.keys()==192:
        tm.show('Run')
        for i in list_all:#重放的逻辑
            xx.run_all(i)
    time.sleep(0.1)

贴个成品图片,请添加图片描述

留个记录得了。
请添加图片描述
请添加图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值