### 介紹影片
https://www.youtube.com/watch?v=v4wUC5L-KBc
### 零件清單
1. Dobot 手臂套件

2. Dobot 輸送帶套件

3. Makeblock CyberPi 控制板

4. Makeblock 藍牙搖桿

5. 20cm 杜邦排線

6. 迷你棧板、貨櫃模型
https://skfb.ly/oVqpx
https://skfb.ly/oVqqn
### CyberPi 接線與程式燒錄
https://hackmd.io/bl-fxyf8Taar2aM6UEPCtg
### CyberPi Python程式
``` python=1
from machine import UART
import cyberpi,time,struct,gamepad,mbuild
uart1 = UART(1, baudrate=115200, tx=15, rx=21)
Sx=260;Sy=0;Sz=0;Sr=0
def MoveToPoint(x,y,z,r):
UartCommand=[170,170]
length=19
ID=84
Ctrl=3
ptpmode=1
# Home 260,0,-8.5,0
# x = 200
Dx=list(struct.pack("!f",x)) # 32float to 4 decimel list
print(Dx[::-1]) # to reverse
# y = 0
Dy=list(struct.pack("!f",y))
print(Dy[::-1])
# z = -8.5
Dz=list(struct.pack("!f",z))
print(Dz[::-1])
# r= 0
Dr=list(struct.pack("!f",r))
print(Dx[::-1])
payload=[]
payload.append(ID)
payload.append(Ctrl)
payload.append(ptpmode)
payload.extend(Dx[::-1])
payload.extend(Dy[::-1])
payload.extend(Dz[::-1])
payload.extend(Dr[::-1])
# print(payload)
Checksum=256 - sum(payload) & 0xff
# print(Checksum)
UartCommand.append(length)
UartCommand.extend(payload)
UartCommand.append(Checksum)
# print(UartCommand)
uart1.write(bytes(UartCommand))
# c=uart1.read()
# cyberpi.console.println(x,y,z,r)
while True :
suck=False
if gamepad.is_key_pressed('Select'):
cyberpi.console.print('homing')
# homing commend
data1 = [170,170, 6, 31,3,0,0,0,0,222]
uart1.write(bytes(data1))
Sx=260;Sy=0;Sz=0;Sr=0
time.sleep(1)
elif gamepad.get_joystick('Rx')==100:
cyberpi.console.print('x')
Sr-=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Rx')==-100:
cyberpi.console.print('o')
Sr+=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Ry')==100:
cyberpi.console.print('-')
Sz-=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Ry')==-100:
cyberpi.console.print('+')
Sz+=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Lx')==100: # 檢測是否按下按鍵
cyberpi.console.print('>')
Sy-=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Lx')==-100:
cyberpi.console.print('<')
Sy+=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Ly')==100:
cyberpi.console.print('^')
Sx+=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.get_joystick('Ly')==-100:
cyberpi.console.print('v')
Sx-=5
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.is_key_pressed('L1'):
UartCommand=[170, 170, 4, 63, 3, 0, 0, 190] # unsuck
uart1.write(bytes(UartCommand))
suck=False
cyberpi.console.print('unsuck')
elif gamepad.is_key_pressed('R1'):
UartCommand=[170, 170, 4, 63, 3, 1, 1, 188] # suck
uart1.write(bytes(UartCommand))
suck=True
cyberpi.console.print('suck')
elif gamepad.is_key_pressed('Start'):
uart1.write(bytes([170, 170, 8, 135, 3, 0, 1, 16, 39, 0, 0, 62])) # on
time.sleep(.295)
uart1.write(bytes([170, 170, 8, 135, 3, 0, 1, 0, 0, 0, 0, 117])) # on
elif gamepad.is_key_pressed('N2'):
Sx=200;Sy=0;Sz=50;Sr=0
MoveToPoint(Sx,Sy,Sz,Sr)
elif gamepad.is_key_pressed('N1'):
Sx=0;Sy=200;Sz=50;Sr=0
MoveToPoint(Sx,Sy,Sz,Sr)
```