feat: add motor impl
This commit is contained in:
parent
ae9b468be7
commit
32019e8b29
1 changed files with 63 additions and 0 deletions
63
motor.py
Normal file
63
motor.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
from i2c_handler import I2CSlaveHandler, Packet
|
||||
from machine import Pin
|
||||
|
||||
# -high + low -> nach vorne
|
||||
# andersrum nach hinten
|
||||
|
||||
in1_1 = Pin(18, Pin.OUT) # front right -
|
||||
in1_2 = Pin(19, Pin.OUT) # front right +
|
||||
in1_3 = Pin(20, Pin.OUT) # front left -
|
||||
in1_4 = Pin(21, Pin.OUT) # front left +
|
||||
|
||||
in2_1 = Pin(13, Pin.OUT) # back right -
|
||||
in2_2 = Pin(12, Pin.OUT) # back right +
|
||||
in2_3 = Pin(11, Pin.OUT) # back left -
|
||||
in2_4 = Pin(10, Pin.OUT) # back left +
|
||||
|
||||
def set_motor(direction, pin1, pin2):
|
||||
if direction == 0x00: # off
|
||||
pin1.value(0)
|
||||
pin2.value(0)
|
||||
elif direction == 0x01: # forward
|
||||
pin1.value(1)
|
||||
pin2.value(0)
|
||||
elif direction == 0x02: # backward
|
||||
pin1.value(0)
|
||||
pin2.value(1)
|
||||
|
||||
class MotorHandler(I2CSlaveHandler):
|
||||
def process_packet(self, packet: Packet):
|
||||
"""
|
||||
Example: Override process_packet to perform actions based on packet command/type.
|
||||
"""
|
||||
if packet[0] == 0x01:
|
||||
# Motor directions
|
||||
fl, fr, bl, br = packet[2], packet[3], packet[4], packet[5]
|
||||
|
||||
# Map motors to their control pins
|
||||
motors = {
|
||||
'fl': (fl, in1_3, in1_4),
|
||||
'fr': (fr, in1_1, in1_2),
|
||||
'bl': (bl, in2_3, in2_4),
|
||||
'br': (br, in2_1, in2_2)
|
||||
}
|
||||
|
||||
# Set each motor
|
||||
for name, (direction, pin1, pin2) in motors.items():
|
||||
set_motor(direction, pin1, pin2)
|
||||
|
||||
else:
|
||||
print("Unknown command")
|
||||
|
||||
# Usage example
|
||||
def main():
|
||||
handler = MotorHandler(i2c_id=0, sda=0, scl=1, slave_addr=0x41)
|
||||
print("MotorHandler I2C slave started")
|
||||
try:
|
||||
handler.handle()
|
||||
except KeyboardInterrupt:
|
||||
handler.deinit()
|
||||
print("I2C slave stopped")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue