组装和测试3个臂端工具

这是第一个程序,也是你必须看到的程序。

在这个项目中,你将学习如何组装和使用 PiArm 的3个臂端工具。

铲斗

运行代码

cd /home/pi/piarm/examples
sudo python3 shovel.py

运行代码后,你将看到铲斗来回移动。但你需要先组装 铲斗

注解

如果你发现舵机为0时,铲斗不是垂直向下的,需要松开舵机螺钉,再重新将铲斗以垂直向下的角度安装一遍。

代码

from robot_hat import Robot,Servo,PWM
from robot_hat.utils import reset_mcu
from time import sleep
from piarm import PiArm

reset_mcu()
sleep(0.01)
arm = PiArm([1,2,3])
arm.bucket_init(PWM('P3'))
arm.set_offset([0,0,0])

if __name__ == "__main__":
    while True:
        arm.set_bucket(-50)
        sleep(1)
        arm.set_bucket(90)
        sleep(1)

它是怎么工作的

from robot_hat import Robot,Servo,PWM
from robot_hat.utils import reset_mcu
from time import sleep
from piarm import PiArm
  • 首先,从 robot_hat 中导入 RobotservoPWM 等类。

  • robot_hat.utils 模块中导入 reset_mcu 类,用来复位MCU, 以免程序间的冲突,导致通信错误。

  • time 模块中导入 sleep 类,用来实现延时的功能,单位:秒。

  • piarm 模块中导入 PiArm 类别,这是用来控制PiArm。

reset_mcu()
sleep(0.01)
arm = PiArm([1,2,3])
arm.bucket_init(PWM('P3'))
arm.set_offset([0,0,0])

先初始化MCU,然后初始化PiArm的各个舵机连接引脚以及铲斗的连接引脚。

  • PiArm():初始化手臂上的3个舵机引脚。

  • bucket_init( ):设置bucket的引脚。

  • set_offset(): 设置arm上的3个舵机的偏移值。

while True:
    arm.set_bucket(-50)
    sleep(1)
    arm.set_bucket(90)
    sleep(1)

这段代码是用来让铲斗在-50和90度之间来回移动,时间间隔为1秒。

  • set_bucket():用来控制铲斗的转动角度。

竖直夹

运行代码

cd /home/pi/piarm/examples
sudo python3 clip.py

运行代码后,你将看到竖直夹重复的打开/闭合。但你需要先组装 竖直夹

注解

如果你发现竖直夹在90°时,不是垂直向下并合拢。需要将竖直夹的固定螺钉取下,重新再安装一遍。

代码

from robot_hat import Robot,Servo,PWM
from robot_hat.utils import reset_mcu
from time import sleep
from piarm import PiArm

reset_mcu()
sleep(0.01)
arm = PiArm([1,2,3])
arm.hanging_clip_init(PWM('P3'))
arm.set_offset([0,0,0])

if __name__ == "__main__":
    while True:
        arm.set_hanging_clip(-50)
        sleep(1)
        arm.set_hanging_clip(90)
        sleep(1)
  • hanging_clip_init( ):用来初始化竖直夹的引脚。

  • set_hanging_clip():用来设置竖直夹的转动角度。

电磁铁

运行代码

cd /home/pi/piarm/examples
sudo python3 electromagnet.py

运行代码后,你会发现, 电磁铁 每秒钟都会通电(电磁铁上的LED(D2)亮起,表明它通电了,这时可以用铁吸附一些材料。)。但你需要先组装 电磁铁

代码

from robot_hat import Robot,Servo,PWM
from robot_hat.utils import reset_mcu
from time import sleep
from piarm import PiArm

reset_mcu()
sleep(0.01)
arm = PiArm([1,2,3])
arm.electromagnet_init(PWM('P3'))
arm.set_offset([0,0,0])

if __name__ == "__main__":
    while True:
        arm.set_electromagnet('on')
        sleep(1)
        arm.set_electromagnet('off')
        sleep(1)
  • electromagnet_init( ):用来初始化电磁铁的连接。

  • set_electromagnet():用来控制电磁铁的开/关。