Ultimo Projeto
Ultimo Projeto
h>
#include "pico/stdlib.h"
#include "hardware/i2c.h"
#include "hardware/pwm.h"
#include "pico/time.h"
#include "ssd1306.h"
#define SDA_PIN 4
#define SCL_PIN 5
#define JOYSTICK_Y 27
#define JOYSTICK_BTN 26
#define BUZZER_PIN 15
#define LED_R_PIN 16
#define LED_G_PIN 17
#define LED_B_PIN 18
"Joystick LED",
"Buzzer PWM",
"LED RGB"
};
int selected_item = 0;
ssd1306_t display;
void draw_menu() {
ssd1306_clear(&display);
for (int i = 0; i < MENU_SIZE; i++) {
if (i == selected_item) {
ssd1306_show(&display);
void joystick_led() {
sleep_ms(1000);
in_menu = true;
void buzzer_pwm() {
gpio_set_function(BUZZER_PIN, GPIO_FUNC_PWM);
pwm_set_wrap(slice_num, 12500);
pwm_set_gpio_level(BUZZER_PIN, 6250);
pwm_set_enabled(slice_num, true);
sleep_ms(500);
pwm_set_enabled(slice_num, false);
in_menu = true;
void led_rgb() {
gpio_set_function(LED_R_PIN, GPIO_FUNC_PWM);
gpio_set_function(LED_G_PIN, GPIO_FUNC_PWM);
gpio_set_function(LED_B_PIN, GPIO_FUNC_PWM);
pwm_set_wrap(slice_r, 255);
pwm_set_wrap(slice_g, 255);
pwm_set_wrap(slice_b, 255);
pwm_set_gpio_level(LED_R_PIN, 128);
pwm_set_gpio_level(LED_G_PIN, 64);
pwm_set_gpio_level(LED_B_PIN, 192);
pwm_set_enabled(slice_r, true);
pwm_set_enabled(slice_g, true);
pwm_set_enabled(slice_b, true);
sleep_ms(1000);
pwm_set_enabled(slice_r, false);
pwm_set_enabled(slice_g, false);
pwm_set_enabled(slice_b, false);
in_menu = true;
void run_selected_option() {
in_menu = false;
switch (selected_item) {
case 0:
joystick_led();
break;
case 1:
buzzer_pwm();
break;
case 2:
led_rgb();
break;
if (in_menu) {
run_selected_option();
} else {
in_menu = true;
draw_menu();
int main() {
stdio_init_all();
gpio_set_function(SDA_PIN, GPIO_FUNC_I2C);
gpio_set_function(SCL_PIN, GPIO_FUNC_I2C);
gpio_pull_up(SDA_PIN);
gpio_pull_up(SCL_PIN);
gpio_init(JOYSTICK_Y);
gpio_set_dir(JOYSTICK_Y, GPIO_IN);
gpio_pull_up(JOYSTICK_Y);
gpio_init(JOYSTICK_BTN);
gpio_set_dir(JOYSTICK_BTN, GPIO_IN);
gpio_pull_up(JOYSTICK_BTN);
gpio_set_irq_enabled_with_callback(JOYSTICK_BTN, GPIO_IRQ_EDGE_FALL, true,
&button_callback);
gpio_init(BUZZER_PIN);
gpio_set_dir(BUZZER_PIN, GPIO_OUT);
gpio_init(LED_R_PIN);
gpio_init(LED_G_PIN);
gpio_init(LED_B_PIN);
gpio_set_dir(LED_R_PIN, GPIO_OUT);
gpio
draw_menu();_set_dir(LED_G_PIN, GPIO_OUT);
gpio_set_dir(LED_B_PIN, GPIO_OUT);
while (1) {
draw_menu();
sleep_ms(200);