#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "driver/spi_master.h"
// Buttons
#define BTN_UP 4
#define BTN_DOWN 5
#define BTN_LEFT 6
#define BTN_RIGHT 7
#define BTN_SELECT 15
// SPI pins
#define PIN_MOSI 11
#define PIN_MISO 13
#define PIN_SCLK 12
spi_device_handle_t spi;
void setup_button(int pin) {
gpio_config_t io_conf = {
.pin_bit_mask = (1ULL << pin),
.mode = GPIO_MODE_INPUT,
.pull_up_en = GPIO_PULLUP_ENABLE
};
gpio_config(&io_conf);
}
void init_spi() {
spi_bus_config_t buscfg = {
.mosi_io_num = PIN_MOSI,
.miso_io_num = PIN_MISO,
.sclk_io_num = PIN_SCLK,
.quadwp_io_num = -1,
.quadhd_io_num = -1
};
spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);
printf("SPI initialized\n");
}
void app_main() {
printf("----------------\n");
printf("Hello\n");
setup_button(BTN_UP);
setup_button(BTN_DOWN);
setup_button(BTN_LEFT);
setup_button(BTN_RIGHT);
setup_button(BTN_SELECT);
init_spi();
printf("System ready\n");
while (1) {
if (gpio_get_level(BTN_UP) == 0) printf("UP\n");
if (gpio_get_level(BTN_DOWN) == 0) printf("DOWN\n");
if (gpio_get_level(BTN_LEFT) == 0) printf("LEFT\n");
if (gpio_get_level(BTN_RIGHT) == 0) printf("RIGHT\n");
if (gpio_get_level(BTN_SELECT) == 0) printf("SELECT\n");
vTaskDelay(pdMS_TO_TICKS(200));
}
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1