Removed old examples

servo-pio
ZodiusInfuser 2022-03-26 00:11:02 +00:00
rodzic ce31f88e2d
commit 15b19c9019
2 zmienionych plików z 0 dodań i 127 usunięć

Wyświetl plik

@ -1,13 +0,0 @@
set(OUTPUT_NAME servo2040_functions)
add_executable(${OUTPUT_NAME} servo2040_functions.cpp)
target_link_libraries(${OUTPUT_NAME}
pico_stdlib
servo2040
button
)
# enable usb output
pico_enable_stdio_usb(${OUTPUT_NAME} 1)
pico_add_extra_outputs(${OUTPUT_NAME})

Wyświetl plik

@ -1,114 +0,0 @@
#include <stdio.h>
#include <math.h>
#include <cstdint>
#include "pico/stdlib.h"
#include "servo2040.hpp"
#include "common/pimoroni_common.hpp"
#include "button.hpp"
/*
A simple balancing game, where you use the MSA301 accelerometer to line up a band with a goal on the strip.
This can either be done using:
- Angle mode: Where position on the strip directly matches the accelerometer's angle
- Velocity mode: Where tilting the accelerometer changes the speed the band moves at
When the goal position is reached, a new position is randomly selected
Press "A" to change the game mode.
Press "B" to start or stop the game mode.
Press "Boot" to invert the direction of the accelerometer tilt
*/
using namespace pimoroni;
using namespace plasma;
using namespace servo;
// Set how many LEDs you have
const uint N_LEDS = 6;
// The speed that the LEDs will start cycling at
const uint DEFAULT_SPEED = 10;
// How many times the LEDs will be updated per second
const uint UPDATES = 60;
// WS28X-style LEDs with a single signal line. AKA NeoPixel
WS2812 led_bar(N_LEDS, pio0, 0, servo2040::LED_DAT);
Button user_sw(servo2040::USER_SW, Polarity::ACTIVE_LOW, 0);
Servo simple_servo(0);
uint count = 0;
uint servo_seq = 0;
int main() {
stdio_init_all();
led_bar.start(UPDATES);
sleep_ms(5000);
//Calibration& calib = simple_servo.calibration();
//calib.create_three_point_calibration(500, 1500, 2500, 4);
simple_servo.init();
//PWMCluster pwms(pio1, 0, 0b111111111111111);
//pwms.set_wrap(20000);
//ServoCluster cluster(pio1, 0, 0b111100);
ServoCluster cluster(pio1, 0, {2, 3, 4, 5});
cluster.init();
int speed = DEFAULT_SPEED;
float offset = 0.0f;
bool toggle = false;
while(true) {
bool sw_pressed = user_sw.read();
if(sw_pressed) {
speed = DEFAULT_SPEED;
}
speed = std::min((int)255, std::max((int)1, speed));
offset += float(speed) / 2000.0f;
for(auto i = 0u; i < led_bar.num_leds; ++i) {
float hue = float(i) / led_bar.num_leds;
led_bar.set_hsv(i, hue + offset, 1.0f, 0.5f);
}
count++;
if(count >= 100) {
count = 0;
//pwms.set_chan_level(servo_seq, 2000);//toggle ? 2000 : 1000);
cluster.set_pulse(servo_seq + 2, toggle ? 2000 : 1000);
//pwms.set_chan_polarity(servo_seq, toggle);
//pwms.set_chan_offset(servo_seq, toggle ? 19000 : 0);
simple_servo.set_pulse(servo_seq + 1500);
//cluster.set_pulse(0, servo_seq + 1500);
servo_seq++;
if(servo_seq >= 4) {
servo_seq = 0;
toggle = !toggle;
//pwms.set_wrap(toggle ? 30000 : 20000);
//float div = clock_get_hz(clk_sys) / (toggle ? 500000 : 5000000);
//pwms.set_clkdiv(div);
simple_servo.disable();
}
//printf("Angle = %f, Pulse = %f, Enabled = %s\n", simple_servo.get_value(), simple_servo.get_pulse(), simple_servo.is_enabled() ? "true" : "false");
//pwms.load_pwm();
}
//pwms.update(true);
// Sleep time controls the rate at which the LED buffer is updated
// but *not* the actual framerate at which the buffer is sent to the LEDs
sleep_ms(1000 / UPDATES);
}
}