Skip to content

Commit 115645e

Browse files
committed
update peripheral demo for MaixCAM2
1 parent 754d6e7 commit 115645e

File tree

15 files changed

+305
-90
lines changed

15 files changed

+305
-90
lines changed

examples/peripheral/adc/adc_read.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
from maix.peripheral import adc
2-
from maix import time
2+
from maix import time, sys
3+
4+
device_id = sys.device_id()
5+
if device_id == "maixcam2":
6+
raise Exception("MaixCAM2 don't have ADC")
7+
else:
8+
pin_name = "A19"
9+
310

411
a = adc.ADC(0, adc.RES_BIT_12)
512

examples/peripheral/gpio/gpio_board_led.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
1-
from maix import gpio, pinmap, time
1+
from maix import gpio, pinmap, time, sys
22

3-
pinmap.set_pin_function("A14", "GPIOA14")
4-
led = gpio.GPIO("GPIOA14", gpio.Mode.OUT)
3+
# get pin and GPIO number according to device id
4+
device_id = sys.device_id()
5+
if device_id == "maixcam2":
6+
pin_name = "IO0_A6"
7+
gpio_id = "GPIO0_A6"
8+
else:
9+
pin_name = "A14"
10+
gpio_id = "GPIOA14"
11+
12+
# set pinmap
13+
pinmap.set_pin_function(pin_name, gpio_id)
14+
15+
led = gpio.GPIO(gpio_id, gpio.Mode.OUT)
516
led.value(0)
617

718
while 1:

examples/peripheral/gpio/gpio_board_led_light.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1-
from maix import gpio, pinmap, time
1+
from maix import gpio, pinmap, time, sys
22

3-
pinmap.set_pin_function("B3", "GPIOB3")
4-
led = gpio.GPIO("GPIOB3", gpio.Mode.OUT)
3+
# get pin and GPIO number according to device id
4+
device_id = sys.device_id()
5+
if device_id == "maixcam2":
6+
pin_name = "IO1_A25"
7+
gpio_id = "GPIO1_A25"
8+
else:
9+
pin_name = "B3"
10+
gpio_id = "GPIOB3"
11+
12+
# set pinmap
13+
pinmap.set_pin_function(pin_name, gpio_id)
14+
15+
# Init GPIO
16+
led = gpio.GPIO(gpio_id, gpio.Mode.OUT)
517
led.value(0)
618

719
while 1:

examples/peripheral/gpio/gpio_input.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
1-
from maix import gpio, pinmap, time
1+
from maix import gpio, pinmap, time, sys
22

3-
pinmap.set_pin_function("A19", "GPIOA19")
4-
led = gpio.GPIO("GPIOA19", gpio.Mode.IN)
3+
# get pin and GPIO number according to device id
4+
device_id = sys.device_id()
5+
if device_id == "maixcam2":
6+
pin_name = "IO0_A2"
7+
gpio_id = "GPIO0_A2"
8+
else:
9+
pin_name = "A19"
10+
gpio_id = "GPIOA19"
11+
12+
# set pinmap
13+
pinmap.set_pin_function(pin_name, gpio_id)
14+
15+
# Init GPIO
16+
led = gpio.GPIO(gpio_id, gpio.Mode.IN)
517

618
while 1:
719
print(led.value())

examples/peripheral/i2c/i2c_master.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
1-
from maix import i2c, pinmap
1+
from maix import i2c, pinmap, sys
22

3-
pinmap.set_pin_function("A15", "I2C5_SCL")
4-
pinmap.set_pin_function("A27", "I2C5_SDA")
53

6-
bus = i2c.I2C(5, i2c.Mode.MASTER)
4+
# get pin and i2c number according to device id
5+
device_id = sys.device_id()
6+
if device_id == "maixcam2":
7+
scl_pin_name = "IO0_A1"
8+
scl_i2c_id = "I2C6_SCL"
9+
sda_pin_name = "IO0_A0"
10+
sda_i2c_id = "I2C6_SDA"
11+
i2c_id = 6
12+
else:
13+
scl_pin_name = "A15"
14+
scl_i2c_id = "I2C5_SCL"
15+
sda_pin_name = "A27"
16+
sda_i2c_id = "I2C5_SDA"
17+
i2c_id = 5
18+
19+
# set pinmap
20+
pinmap.set_pin_function(scl_pin_name, scl_i2c_id)
21+
pinmap.set_pin_function(sda_pin_name, sda_i2c_id)
22+
23+
bus = i2c.I2C(i2c_id, i2c.Mode.MASTER)
724
slaves = bus.scan()
825
print("find slaves:")
926
for s in slaves:
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from maix.peripheral import pinmap, gpio
2+
from maix import sys, time
3+
4+
# get pin and GPIO number according to device id
5+
device_id = sys.device_id()
6+
if device_id == "maixcam2":
7+
pin_name = "IO1_A25"
8+
else:
9+
pin_name = "B3"
10+
11+
# Every Pin may have multiple functions
12+
print(f"Pin {pin_name} functions:")
13+
funcs = pinmap.get_pin_functions(pin_name)
14+
print(funcs)
15+
16+
# Find GPIO function id and set pin function to it
17+
print(f"Set pin function to GPIO")
18+
gpio_id = None
19+
for func_id in funcs:
20+
if "GPIO" in func_id:
21+
print(f"set function as {func_id}")
22+
pinmap.set_pin_function(pin_name, func_id)
23+
gpio_id = func_id
24+
break
25+
26+
if not gpio_id:
27+
print(f"Pin {pin_name} not support GPIO function")
28+
else:
29+
# Now we can use GPIO normally
30+
# Init GPIO
31+
led = gpio.GPIO(gpio_id, gpio.Mode.OUT)
32+
led.value(0)
33+
34+
while 1:
35+
led.toggle()
36+
time.sleep_ms(500)
37+

examples/peripheral/pinmap/pinmap_gpio_a28.py

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from maix.peripheral import pinmap
2+
3+
print("All pins of MaixCAM:")
4+
print(pinmap.get_pins())
5+
6+
print("All pin's functions:")
7+
for pin in pinmap.get_pins():
8+
funcs = pinmap.get_pin_functions(pin)
9+
print(f"{pin:10s}: {', '.join(funcs)}")
10+
11+
# set pinmap
12+
# pinmap.set_pin_function("A28", "GPIOA28")
13+

examples/peripheral/pwm/pwm_led.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from maix import pwm, time, pinmap, sys
2+
3+
4+
# get pin and pwm number according to device id
5+
device_id = sys.device_id()
6+
if device_id == "maixcam2":
7+
pin_name = "IO0_A30"
8+
pwm_id = 6
9+
else:
10+
pin_name = "A18"
11+
pwm_id = 6
12+
13+
# set pinmap
14+
pinmap.set_pin_function(pin_name, f"PWM{pwm_id}")
15+
16+
17+
SERVO_PERIOD = 100000 # 100kHz 0.01ms
18+
19+
out = pwm.PWM(pwm_id, freq=SERVO_PERIOD, duty=0, enable=True)
20+
21+
for i in range(100):
22+
print(i)
23+
out.duty(i)
24+
time.sleep_ms(100)
25+
26+
for i in range(100):
27+
print(i)
28+
out.duty(100 - i)
29+
time.sleep_ms(100)

examples/peripheral/pwm/pwm_servo.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,18 @@
44
SERVO_MIN_DUTY = 2.5 # 2.5% -> 0.5ms
55
SERVO_MAX_DUTY = 12.5 # 12.5% -> 2.5ms
66

7-
# Use PWM7
8-
pwm_id = 7
9-
# !! set pinmap to use PWM7
10-
pinmap.set_pin_function("A19", "PWM7")
7+
8+
# get pin and pwm number according to device id
9+
device_id = sys.device_id()
10+
if device_id == "maixcam2":
11+
pin_name = "IO0_A31"
12+
pwm_id = 7
13+
else:
14+
pin_name = "A19"
15+
pwm_id = 7
16+
17+
# set pinmap
18+
pinmap.set_pin_function(pin_name, f"PWM{pwm_id}")
1119

1220

1321

0 commit comments

Comments
 (0)