diff --git a/buzzer/CMakeLists.txt b/buzzer/CMakeLists.txt new file mode 100644 index 0000000..2fabe7d --- /dev/null +++ b/buzzer/CMakeLists.txt @@ -0,0 +1,44 @@ +# Generated Cmake Pico project file + +cmake_minimum_required(VERSION 3.13) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Pull in Raspberry Pi Pico SDK (must be before project) +include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake) + +project(buzzer C CXX ASM) + +# force picotool executable path +add_executable(picotool IMPORTED GLOBAL) +set_target_properties(picotool PROPERTIES + IMPORTED_LOCATION "$(PICOTOOL_PATH)/picotool" +) + +# Initialise the Raspberry Pi Pico SDK +pico_sdk_init() + +# Add executable. Default name is the project name, version 0.1 + +add_executable(buzzer main.c ) + +pico_set_program_name(buzzer "buzzer") +pico_set_program_version(buzzer "0.1") + +# Modify the below lines to enable/disable output over UART/USB +pico_enable_stdio_uart(buzzer 0) +pico_enable_stdio_usb(buzzer 1) + +# Add the standard library to the build +target_link_libraries(buzzer + pico_stdlib hardware_pwm) + +# Add the standard include files to the build +target_include_directories(buzzer PRIVATE + ${CMAKE_CURRENT_LIST_DIR} +) + +pico_add_extra_outputs(buzzer) + diff --git a/buzzer/main.c b/buzzer/main.c new file mode 100644 index 0000000..0c6dd2e --- /dev/null +++ b/buzzer/main.c @@ -0,0 +1,45 @@ +#include +#include +#include + +#define GPIO_BUTTON 16 +#define GPIO_BUZZER 15 +#define NB_GPIO 2 + +typedef struct gpio gpio; +struct gpio { + size_t pin; + size_t direction; +}; + +static gpio GPIOS[2] = { + (gpio) {.pin = GPIO_BUZZER, .direction = GPIO_OUT}, + (gpio) { + .pin = GPIO_BUTTON, .direction = GPIO_IN + } +}; + +void init_gpio() { + gpio_init(PICO_DEFAULT_LED_PIN); + gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); + + for (size_t i = 0; i < NB_GPIO; i++) { + gpio_init(GPIOS[i].pin); + gpio_set_dir(GPIOS[i].pin, GPIOS[i].direction); + } +} + +int main() { + stdio_init_all(); + init_gpio(); + + while (true) { + if (!gpio_get(GPIOS[1].pin)) { + gpio_put(PICO_DEFAULT_LED_PIN, true); + gpio_put(GPIOS[0].pin, true); + continue; + } + gpio_put(GPIOS[0].pin, false); + gpio_put(PICO_DEFAULT_LED_PIN, false); + } +}