meArm/meControll.py
ketrptr 02f6dbef49 modified: Makefile
modified:   __pycache__/meControll.cpython-313.pyc
	modified:   demSequence.py
	modified:   meControll.py
	new file:   meControllMCU/config.h
	new file:   meControllMCU/meControllMCU.ino

 Changes not staged for commit:
	deleted:    controller.py
	deleted:    servoTest/config.h
	deleted:    servoTest/servoTest.ino
	deleted:    testSequence1
2025-04-15 18:09:58 +02:00

98 lines
1.9 KiB
Python

import serial
from time import sleep
class meArm:
position = [90,90,90,90] #home position
moves = [] #stored moves
port = "" #serial port
baudrate = 9600
ser = serial.Serial()
def __init__(self, port = '/dev/ttyACM0', bautrate = 9600):
self.port = port
self.baudrate = bautrate
self.ser = serial.Serial(self.port, self.baudrate, timeout = 1)
def addMove(self, moves = [b'D1\n']):
self.moves.append(moves)
return len(self.moves) -1
def getMoves(self):
[print(i, x) for i, x in enumerate(self.moves)]
#default cmd H1 sends current pos over serial
def sendCmd(self, cmd = b'H1'):
self.ser.flushInput() #Last change. if broken remove this
while(1):
line = self.ser.readline()
# print(f"sendCmd: {line}")
if(line == b'READY\r\n'):
break
self.ser.write(cmd)
self.ser.write(b'\n')
# print(f"sendCmd: wrote: {cmd}")
def execMove(self, idx):
if(idx >= len(self.moves)):
print("invalid movement index")
return
for cmd in self.moves[idx]:
print(f"sending: {cmd}")
self.sendCmd(cmd)
return len(self.moves[idx])
def getPos(self):
self.sendCmd()
sleep(0.1)
self.ser.flushInput()
c = 0
while(1):
line = self.ser.readline()
print(line)
if(line == b'READY\r\n'):
c+=1
if c ==2: break
if __name__ == '__main__':
m1 = [b'T70', b'L40', b'R150', b'G180', b'R90', b'D1']
m2 = [b'S1', b'T70', b'L40', b'R150', b'G180', b'R90', b'T140', b'L50', b'R150', b'G90', b'D1']
m3 = [b'S1', b'T140', b'L50', b'R150', b'G180', b'D1']
arm = meArm()
arm.getPos()
i = arm.addMove(m1)
i = arm.addMove(m2)
i = arm.addMove(m3)
arm.execMove(1)
arm.getPos()
arm.execMove(2)