|
| 1 | +# Dev by Sonthaya Nongnuch |
| 2 | + |
| 3 | +from machine import Pin, PWM |
| 4 | +from time import sleep |
| 5 | +from micropython import const |
| 6 | + |
| 7 | +FORWARD = const(1) |
| 8 | +BACKWARD = const(2) |
| 9 | +TURN_LEFT = const(3) |
| 10 | +TURN_RIGHT = const(4) |
| 11 | + |
| 12 | +__m1_a = PWM(Pin(13)) |
| 13 | +__m1_a.freq(1000) |
| 14 | + |
| 15 | +__m1_b = PWM(Pin(14)) |
| 16 | +__m1_b.freq(1000) |
| 17 | + |
| 18 | +__m2_a = PWM(Pin(17)) |
| 19 | +__m2_a.freq(1000) |
| 20 | + |
| 21 | +__m2_b = PWM(Pin(16)) |
| 22 | +__m2_b.freq(1000) |
| 23 | + |
| 24 | +def wheel(speed_left, speed_right): |
| 25 | + dir1 = 0 if speed_left >= 0 else 1 |
| 26 | + if speed_left < 0: |
| 27 | + speed_left = speed_left * -1 |
| 28 | + speed_left = 65535 - min(max(int(speed_left / 100 * 65535), 0), 65535) |
| 29 | + __m1_a.duty_u16(65535 if dir1 == 1 else speed_left) |
| 30 | + __m1_b.duty_u16(speed_left if dir1 == 1 else 65535) |
| 31 | + |
| 32 | + dir2 = 1 if speed_right >= 0 else 0 |
| 33 | + if speed_right < 0: |
| 34 | + speed_right = speed_right * -1 |
| 35 | + speed_right = 65535 - min(max(int(speed_right / 100 * 65535), 0), 65535) |
| 36 | + __m2_a.duty_u16(65535 if dir2 == 1 else speed_right) |
| 37 | + __m2_b.duty_u16(speed_right if dir2 == 1 else 65535) |
| 38 | + |
| 39 | +def forward(speed=50, time=1): |
| 40 | + wheel(speed, speed) |
| 41 | + sleep(time) |
| 42 | + wheel(0, 0) |
| 43 | + |
| 44 | +def backward(speed=50, time=1): |
| 45 | + wheel(speed * -1, speed * -1) |
| 46 | + sleep(time) |
| 47 | + wheel(0, 0) |
| 48 | + |
| 49 | +def turn_left(speed=50, time=1): |
| 50 | + wheel(0, speed) |
| 51 | + sleep(time) |
| 52 | + wheel(0, 0) |
| 53 | + |
| 54 | +def turn_right(speed=50, time=1): |
| 55 | + wheel(speed, 0) |
| 56 | + sleep(time) |
| 57 | + wheel(0, 0) |
| 58 | + |
| 59 | +def move(dir, speed): |
| 60 | + if dir == FORWARD: |
| 61 | + wheel(speed, speed) |
| 62 | + elif dir == BACKWARD: |
| 63 | + wheel(speed * -1, speed * -1) |
| 64 | + elif dir == TURN_LEFT: |
| 65 | + wheel(0, speed) |
| 66 | + elif dir == TURN_RIGHT: |
| 67 | + wheel(speed, 0) |
| 68 | + |
| 69 | +def stop(): |
| 70 | + wheel(0, 0) |
0 commit comments