Added LED bar example and exposed servo2040 constants

pull/259/head
ZodiusInfuser 2022-03-18 17:19:18 +00:00
rodzic aee14e2d51
commit cc7179d6d0
5 zmienionych plików z 91 dodań i 30 usunięć

Wyświetl plik

@ -0,0 +1,36 @@
import time
from pimoroni import Button
from plasma import WS2812
from servo import servo2040
# Press "Boot" to exit the program.
SPEED = 5 # The speed that the LEDs will cycle at
BRIGHTNESS = 0.4 # The brightness of the LEDs
UPDATES = 60 # How many times the LEDs will be updated per second
# Create the LED bar
led_bar = WS2812(servo2040.NUM_LEDS, 1, 0, servo2040.LED_DAT)
# Create the user button
user_sw = Button(servo2040.USER_SW)
# Start updating the LED bar
led_bar.start()
offset = 0.0
# Make rainbows until the user button is pressed
while user_sw.raw() != True:
offset += SPEED / 1000.0
for i in range(servo2040.NUM_LEDS):
hue = float(i) / servo2040.NUM_LEDS
led_bar.set_hsv(i, hue + offset, 1.0, BRIGHTNESS)
time.sleep(1.0 / UPDATES)
# Turn off the LED bar
led_bar.clear()

Wyświetl plik

@ -1,10 +1,10 @@
import time
import math
from servo import Servo
from servo import Servo, servo2040
# Create a list of servos for pins 0 to 3. Up to 16 servos can be created
START_PIN = 0
END_PIN = 3
START_PIN = servo2040.SERVO_1
END_PIN = servo2040.SERVO_3
servos = [Servo(i) for i in range(START_PIN, END_PIN + 1)]
# Enable all servos (this puts it at the middle)

Wyświetl plik

@ -1,16 +1,15 @@
import time
import math
from servo import ServoCluster
from servo import ServoCluster, servo2040
# NOTE: ServoCluster lets you control up to 30 servos at once.
# This is done using the RP2040's PIO system. As such it is experimental
# and may have edge-cases that will need to be fixed. This is particularly
# true when attempting to run a program multiple times.
# If you do encounter issues, try resetting your board.
# NOTE: ServoCluster lets you control up to 30 servos at once. This is done using the
# RP2040's PIO system. As such it is experimental and may have edge-cases that will
# need to be fixed. This is particularly true when attempting to run a program multiple
# times. If you do encounter issues, try resetting your board.
# Create a servo cluster for pins 0 to 3, using PIO 0 and State Machine 0
START_PIN = 0
END_PIN = 3
START_PIN = servo2040.SERVO_1
END_PIN = servo2040.SERVO_4
servos = ServoCluster(pio=0, sm=0, pins=list(range(START_PIN, END_PIN + 1)))
# Enable all servos (this puts it at the middle)
@ -29,10 +28,10 @@ time.sleep(2)
servos.all_to_mid()
time.sleep(2)
SWEEPS = 3 # How many sweeps of the servo to perform
STEPS = 10 # The number of discrete sweep steps
STEPS_INTERVAL = 0.5 # The time in seconds between each step of the sequence
SWEEP_EXTENT = 90.0 # How far from zero to move the servo when sweeping
SWEEPS = 3 # How many sweeps of the servo to perform
STEPS = 10 # The number of discrete sweep steps
STEPS_INTERVAL = 0.5 # The time in seconds between each step of the sequence
SWEEP_EXTENT = 90.0 # How far from zero to move the servo when sweeping
# Do a sine sweep
for j in range(SWEEPS):

Wyświetl plik

@ -1,10 +1,9 @@
import time
import math
from servo import Servo
from servo import Servo, servo2040
# Create a servo on pin 0
PIN = 0
s = Servo(PIN)
s = Servo(servo2040.SERVO_1)
# Enable the servo (this puts it at the middle)
s.enable()

Wyświetl plik

@ -166,25 +166,52 @@ typedef struct _mp_obj_float_t {
mp_obj_base_t base;
mp_float_t value;
} mp_obj_float_t;
mp_obj_float_t servo2040_shunt_resistor = {{&mp_type_float}, 0.015f};
mp_obj_float_t servo2040_shunt_resistor = {{&mp_type_float}, 0.003f};
/***** Globals Table *****/
STATIC const mp_map_elem_t servo2040_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_servo2040) },
{ MP_ROM_QSTR(MP_QSTR_LED_R), MP_ROM_INT(16) },
{ MP_ROM_QSTR(MP_QSTR_LED_G), MP_ROM_INT(17) },
{ MP_ROM_QSTR(MP_QSTR_LED_B), MP_ROM_INT(18) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON_A), MP_ROM_INT(12) },
{ MP_ROM_QSTR(MP_QSTR_BUTTON_B), MP_ROM_INT(13) },
{ MP_ROM_QSTR(MP_QSTR_USER_SW), MP_ROM_INT(23) },
{ MP_ROM_QSTR(MP_QSTR_CLK), MP_ROM_INT(14) },
{ MP_ROM_QSTR(MP_QSTR_DAT), MP_ROM_INT(15) },
{ MP_ROM_QSTR(MP_QSTR_CURRENT_SENSE), MP_ROM_INT(29) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_1), MP_ROM_INT(0) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_2), MP_ROM_INT(1) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_3), MP_ROM_INT(2) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_4), MP_ROM_INT(3) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_5), MP_ROM_INT(4) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_6), MP_ROM_INT(5) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_7), MP_ROM_INT(6) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_8), MP_ROM_INT(7) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_9), MP_ROM_INT(8) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_10), MP_ROM_INT(9) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_11), MP_ROM_INT(10) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_12), MP_ROM_INT(11) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_13), MP_ROM_INT(12) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_14), MP_ROM_INT(13) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_15), MP_ROM_INT(14) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_16), MP_ROM_INT(15) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_17), MP_ROM_INT(16) },
{ MP_ROM_QSTR(MP_QSTR_SERVO_18), MP_ROM_INT(17) },
{ MP_ROM_QSTR(MP_QSTR_LED_DAT), MP_ROM_INT(18) },
{ MP_ROM_QSTR(MP_QSTR_NUM_LEDS), MP_ROM_INT(6) },
{ MP_ROM_QSTR(MP_QSTR_INT), MP_ROM_INT(19) },
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_INT(20) },
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_INT(21) },
{ MP_ROM_QSTR(MP_QSTR_USER_SW), MP_ROM_INT(23) },
{ MP_ROM_QSTR(MP_QSTR_ADC_ADDR_0), MP_ROM_INT(22) },
{ MP_ROM_QSTR(MP_QSTR_ADC_ADDR_1), MP_ROM_INT(24) },
{ MP_ROM_QSTR(MP_QSTR_ADC_ADDR_2), MP_ROM_INT(25) },
{ MP_ROM_QSTR(MP_QSTR_ADC0), MP_ROM_INT(26) },
{ MP_ROM_QSTR(MP_QSTR_ADC1), MP_ROM_INT(27) },
{ MP_ROM_QSTR(MP_QSTR_ADC2), MP_ROM_INT(28) },
{ MP_ROM_QSTR(MP_QSTR_SHARED_ADC), MP_ROM_INT(29) },
{ MP_ROM_QSTR(MP_QSTR_SENSOR_1_ADDR), MP_ROM_INT(0b000) },
{ MP_ROM_QSTR(MP_QSTR_SENSOR_2_ADDR), MP_ROM_INT(0b001) },
{ MP_ROM_QSTR(MP_QSTR_SENSOR_3_ADDR), MP_ROM_INT(0b010) },
{ MP_ROM_QSTR(MP_QSTR_SENSOR_4_ADDR), MP_ROM_INT(0b011) },
{ MP_ROM_QSTR(MP_QSTR_SENSOR_5_ADDR), MP_ROM_INT(0b100) },
{ MP_ROM_QSTR(MP_QSTR_SENSOR_6_ADDR), MP_ROM_INT(0b101) },
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_SENSE_ADDR), MP_ROM_INT(0b110) },
{ MP_ROM_QSTR(MP_QSTR_CURRENT_SENSE_ADDR), MP_ROM_INT(0b111) },
{ MP_ROM_QSTR(MP_QSTR_SHUNT_RESISTOR), MP_ROM_PTR(&servo2040_shunt_resistor) },
{ MP_ROM_QSTR(MP_QSTR_ADC_GAIN), MP_ROM_INT(50) },
{ MP_ROM_QSTR(MP_QSTR_ADC_GAIN), MP_ROM_INT(69) },
};
STATIC MP_DEFINE_CONST_DICT(mp_module_servo2040_globals, servo2040_globals_table);