Skip to content

Commit 59101d2

Browse files
committed
Add KidMotor V4 board
1 parent c7ed62f commit 59101d2

File tree

6 files changed

+137
-0
lines changed

6 files changed

+137
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"deploy": [
3+
"../deploy.md"
4+
],
5+
"docs": "",
6+
"features": [
7+
"Breadboard friendly",
8+
"Castellated Pads",
9+
"Micro USB"
10+
],
11+
"id": "rp2-pico",
12+
"images": [
13+
"rp2-pico.jpg"
14+
],
15+
"mcu": "rp2040",
16+
"product": "Pico",
17+
"thumbnail": "",
18+
"url": "https://www.raspberrypi.org/products/raspberry-pi-pico/",
19+
"vendor": "Raspberry Pi"
20+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
include("$(PORT_DIR)/boards/manifest.py")
2+
freeze("modules")
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Dev by Sonthaya Nongnuch
2+
3+
from machine import Pin, PWM
4+
5+
SV1 = Pin(18)
6+
SV2 = Pin(19)
7+
SV3 = Pin(20)
8+
9+
SV1_obj = PWM(SV1)
10+
SV1_obj.freq(50)
11+
SV1_obj.duty_ns(0)
12+
13+
SV2_obj = PWM(SV2)
14+
SV2_obj.freq(50)
15+
SV2_obj.duty_ns(0)
16+
17+
SV3_obj = PWM(SV3)
18+
SV3_obj.freq(50)
19+
SV3_obj.duty_ns(0)
20+
21+
MIN = 500000
22+
MAX = 2500000
23+
24+
def angle(pin, angle):
25+
angle_to_ns = int(MIN + ((angle / 180.0) * (MAX - MIN)))
26+
if pin == SV1:
27+
SV1_obj.duty_ns(angle_to_ns)
28+
elif pin == SV2:
29+
SV2_obj.duty_ns(angle_to_ns)
30+
elif pin == SV3:
31+
SV3_obj.duty_ns(angle_to_ns)
32+
else:
33+
servo_tmp = PWM(pin, freq=50)
34+
servo_tmp.freq(50)
35+
servo_tmp.duty_ns(angle_to_ns)
36+
37+
def timing(min_ns=500000, max_ns=2500000):
38+
global MIN, MAX
39+
MIN = min_ns
40+
MAX = max_ns
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# cmake file for Raspberry Pi Pico
2+
set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/manifest.py)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// Board and hardware specific configuration
2+
#define MICROPY_HW_BOARD_NAME "KidMotor V4"
3+
#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)

0 commit comments

Comments
 (0)