add buzzer program
This commit is contained in:
parent
0db9d21ec6
commit
9c0f6b0552
44
buzzer/CMakeLists.txt
Normal file
44
buzzer/CMakeLists.txt
Normal file
@ -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)
|
||||
|
||||
45
buzzer/main.c
Normal file
45
buzzer/main.c
Normal file
@ -0,0 +1,45 @@
|
||||
#include <pico/printf.h>
|
||||
#include <pico/stdlib.h>
|
||||
#include <hardware/pwm.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user