#include "driver/spi_master.h" #include "drv/ws2812b.h" #include "esp_spi_flash.h" #include "esp_system.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "sdkconfig.h" #include "station.h" #ifdef CONFIG_IDF_TARGET_ESP32 #define LCD_HOST HSPI_HOST #define PIN_NUM_MISO 25 #define PIN_NUM_MOSI 23 #define PIN_NUM_CLK 19 #define PIN_NUM_CS 22 #define PIN_NUM_DC 21 #define PIN_NUM_RST 18 #define PIN_NUM_BCKL 5 #elif defined CONFIG_IDF_TARGET_ESP32S2 #define LCD_HOST SPI2_HOST #define PIN_NUM_MISO 37 #define PIN_NUM_MOSI 35 #define PIN_NUM_CLK 36 #define PIN_NUM_CS 34 #define PIN_NUM_DC 4 #define PIN_NUM_RST 5 #define PIN_NUM_BCKL 6 #elif defined CONFIG_IDF_TARGET_ESP32C3 #define LCD_HOST SPI2_HOST #define PIN_NUM_MISO 2 #define PIN_NUM_MOSI 7 #define PIN_NUM_CLK 6 #define PIN_NUM_CS 10 #define PIN_NUM_DC 9 #define PIN_NUM_RST 4 #define PIN_NUM_BCKL 5 #endif void ws_init() { } uint8_t buffer[256]; void app_main(void) { esp_err_t error; spi_device_handle_t spi; spi_bus_config_t cfg = { .miso_io_num = PIN_NUM_MISO, .mosi_io_num = PIN_NUM_MOSI, .sclk_io_num = PIN_NUM_CLK, .quadwp_io_num = -1, .quadhd_io_num = -1, .max_transfer_sz = 320 * 2 + 8, }; spi_device_interface_config_t devcfg = { .clock_speed_hz = 25 * 100 * 1000, /* 2.5 MHz */ .mode = 0, .spics_io_num = PIN_NUM_CS, .queue_size = 7, .pre_cb = NULL, }; printf("Hello, World!\n"); printf("miso: %d\n", PIN_NUM_MISO); printf("mosi: %d\n", PIN_NUM_MOSI); printf("sclk: %d\n", PIN_NUM_CLK); error = spi_bus_initialize(HSPI_HOST, &cfg, SPI_DMA_CH_AUTO); printf("Bus Init\n"); ESP_ERROR_CHECK(error); error = spi_bus_add_device(HSPI_HOST, &devcfg, &spi); printf("Add Device\n"); ESP_ERROR_CHECK(error); printf("Configuration complete!!\n"); wifi_init_station(); ws2812b_t* drv = ws2812b_init(spi); ws2812b_buffer_t* buffer = ws2812b_new_buffer(5); ws2812b_buffer_set_rgb(buffer, 0, 255, 0, 0); ws2812b_buffer_set_rgb(buffer, 1, 0, 255, 0); ws2812b_buffer_set_rgb(buffer, 2, 0, 0, 255); ws2812b_buffer_set_rgb(buffer, 3, 255, 255, 0); ws2812b_buffer_set_rgb(buffer, 4, 255, 0, 255); while (1) { ws2812b_write_sync(drv, buffer); // TODO(rahm) push this into the sync write, or otherwise make this better // to deal with. vTaskDelay(10 / portTICK_PERIOD_MS); } }