2024-02-06 15:50:50 +01:00
|
|
|
#include <stdio.h>
|
2024-02-11 15:45:12 +01:00
|
|
|
#include <inttypes.h>
|
2024-02-10 23:26:53 +01:00
|
|
|
|
|
|
|
#include "pico/stdlib.h"
|
2024-02-06 15:50:50 +01:00
|
|
|
|
2024-02-06 22:11:58 +01:00
|
|
|
#include "settings.h"
|
2024-02-10 23:26:53 +01:00
|
|
|
#include "keyer.h"
|
2024-02-06 22:11:58 +01:00
|
|
|
|
|
|
|
namespace
|
|
|
|
{
|
2024-02-07 11:15:41 +01:00
|
|
|
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
|
2024-02-10 23:51:55 +01:00
|
|
|
|
2024-02-10 23:26:53 +01:00
|
|
|
const uint RIGHT_PADDLE_PIN = 15;
|
2024-02-06 16:16:18 +01:00
|
|
|
}
|
2024-02-10 23:51:55 +01:00
|
|
|
extern const uint LEFT_PADDLE_PIN = 14;
|
2024-02-06 15:50:50 +01:00
|
|
|
|
2024-02-09 14:05:15 +01:00
|
|
|
void setup()
|
2024-02-06 15:50:50 +01:00
|
|
|
{
|
2024-02-09 14:05:15 +01:00
|
|
|
|
2024-02-07 11:15:41 +01:00
|
|
|
gpio_init(LED_PIN);
|
|
|
|
gpio_set_dir(LED_PIN, GPIO_OUT);
|
|
|
|
gpio_put(LED_PIN, 0);
|
2024-02-06 15:50:50 +01:00
|
|
|
|
2024-02-09 14:05:15 +01:00
|
|
|
// Setup pins for left and right paddles
|
|
|
|
gpio_init(LEFT_PADDLE_PIN);
|
|
|
|
gpio_set_dir(LEFT_PADDLE_PIN, GPIO_IN);
|
2024-02-11 15:45:12 +01:00
|
|
|
gpio_pull_up(LEFT_PADDLE_PIN);
|
2024-02-09 14:05:15 +01:00
|
|
|
gpio_init(RIGHT_PADDLE_PIN);
|
|
|
|
gpio_set_dir(RIGHT_PADDLE_PIN, GPIO_IN);
|
2024-02-11 15:45:12 +01:00
|
|
|
gpio_pull_up(RIGHT_PADDLE_PIN);
|
2024-02-09 14:05:15 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
2024-02-10 23:26:53 +01:00
|
|
|
stdio_init_all();
|
|
|
|
timer_hw->dbgpause = 0; // fix problem with debug and sleep_ms https://github.com/raspberrypi/pico-sdk/issues/1152#issuecomment-1418248639
|
|
|
|
sleep_ms(1000);
|
|
|
|
|
2024-02-09 14:05:15 +01:00
|
|
|
setup();
|
|
|
|
|
2024-02-07 11:35:30 +01:00
|
|
|
Settings settings{read_settings()};
|
2024-02-07 11:15:41 +01:00
|
|
|
|
2024-02-11 15:45:12 +01:00
|
|
|
printf("\nIambic mode (loaded): %d\n", static_cast<int>(settings.mode));
|
2024-02-07 11:36:22 +01:00
|
|
|
printf("WPM (loaded): %d\n", settings.wpm);
|
2024-02-11 15:45:12 +01:00
|
|
|
printf("Element duration (u_sec): %" PRIu64 "\n", element_duration_us(settings.wpm));
|
2024-02-07 11:15:41 +01:00
|
|
|
|
2024-02-10 23:26:53 +01:00
|
|
|
Keyer keyer;
|
|
|
|
|
2024-02-07 11:15:41 +01:00
|
|
|
while (true)
|
|
|
|
{
|
2024-02-11 15:45:12 +01:00
|
|
|
sleep_us(element_duration_us(settings.wpm));
|
2024-02-10 23:26:53 +01:00
|
|
|
keyer.run();
|
2024-02-07 09:32:11 +01:00
|
|
|
}
|
|
|
|
|
2024-02-06 15:50:50 +01:00
|
|
|
return 0;
|
|
|
|
}
|