#include "driver/spi_master.h" #include "drv/ws2812b.h" #include "esp_spi_flash.h" #include "esp_system.h" #include "lwip/sockets.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("Wort", "JoshIsBau5"); int s = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); addr.sin_port = htons(1234); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; int err = bind(s, (struct sockaddr*) &addr, sizeof(addr)); if (err) { printf("Error binding to sockaddr: %d\n", err); return; } printf("Listening ...\n"); listen(s, 1); ws2812b_t* drv = ws2812b_init(spi); ws2812b_buffer_t* buffer = ws2812b_new_buffer(5); while (true) { printf("Waiting for connection... \n"); char buf[128]; struct sockaddr_in client_addr; socklen_t size; int sock = accept(s, (struct sockaddr*)&client_addr, &size); printf("Accepted connection\n"); ssize_t len; while ((len = read(sock, buf, sizeof(buf) - 1)) > 0) { buf[len] = 0; printf("Got %s\n", buf); ws2812b_rgb_t color = {0}; if (!strcmp(buf, "green\n")) { color.g = 255; } else if (!strcmp(buf, "red\n")) { color.r = 255; } else if (!strcmp(buf, "blue\n")) { color.b = 255; } else { color.r = 255; color.g = 255; color.b = 255; } for (int i = 0; i < 5; ++ i) { ws2812b_buffer_set_color(buffer, i, &color); } ws2812b_write_sync(drv, buffer); vTaskDelay(10 / portTICK_PERIOD_MS); } } }