diff options
| author | gamerdonkey | 2024-08-29 23:55:47 -0500 |
|---|---|---|
| committer | gamerdonkey | 2024-08-29 23:55:47 -0500 |
| commit | 844c3c8f671c83cf2d9b39831d7873cb0615fba0 (patch) | |
| tree | 67514edde8e33f76f4214e8ac6c2153e1242f485 /main/main.c | |
| parent | 2f8dc507d3874fb930799d1b235eac3f37478a84 (diff) | |
| download | esp32-inova-led-controller-844c3c8f671c83cf2d9b39831d7873cb0615fba0.tar.gz esp32-inova-led-controller-844c3c8f671c83cf2d9b39831d7873cb0615fba0.tar.bz2 esp32-inova-led-controller-844c3c8f671c83cf2d9b39831d7873cb0615fba0.zip | |
Moving display update to its own task. Fancier demo.
Diffstat (limited to 'main/main.c')
| -rw-r--r-- | main/main.c | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/main/main.c b/main/main.c index b5f7362..f2822a8 100644 --- a/main/main.c +++ b/main/main.c @@ -27,10 +27,12 @@ #define PIN_NUM_R_ADDR_1 18 #define PIN_NUM_R_ADDR_2 19 -#define TAG "led_display" +#define TAG "led_display" +#define STACK_SIZE 2000 static uint16_t pattern[NUM_ROW][NUM_COL / 8]; // each column is two bits, so 8 can fit in 16-bit integer + void draw_char_at_position(char character, uint16_t col_start, uint16_t row_start, uint16_t color) { uint8_t cur_char_row; for(int row = row_start; (row - row_start) < CHAR_HEIGHT && row < NUM_ROW; row++) { @@ -44,7 +46,8 @@ void draw_char_at_position(char character, uint16_t col_start, uint16_t row_star } } -void app_main(void) + +void updateDisplay(void* params) { esp_err_t ret; spi_device_handle_t spi; @@ -83,29 +86,10 @@ void app_main(void) ESP_LOGI(TAG, "Setup GPIO."); - char* text = "Hello World!! 1234567890"; - for(int i = 0; i < strlen(text); i++) { - draw_char_at_position(text[i], i * CHAR_WIDTH, 0, RED); - } - - ESP_LOG_BUFFER_HEX(TAG, pattern[0], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[1], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[2], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[3], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[4], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[5], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[6], 16); - ESP_LOG_BUFFER_HEX(TAG, pattern[7], 16); - - ESP_LOGI(TAG, "Done drawing pattern."); - ESP_LOGI(TAG, "Ticks per MS: %i", (int) portTICK_PERIOD_MS); - TickType_t xLastWakeTime; const TickType_t xFrequency = 1 / portTICK_PERIOD_MS; xLastWakeTime = xTaskGetTickCount(); - ESP_LOGI(TAG, "Ticks between updates: %i", (int) xFrequency); - uint8_t current_row = 0; uint16_t refresh_count = 0; TickType_t startMillis = xTaskGetTickCount(); @@ -148,3 +132,29 @@ void app_main(void) } } } + + +void app_main(void) +{ + TaskHandle_t taskHandle; + xTaskCreate(updateDisplay, "updateDisplay", STACK_SIZE, NULL, tskIDLE_PRIORITY, &taskHandle); + + int j = 0; + while(true) { + ESP_LOGI(TAG, "Writing words..."); + + char* hello = "Hello World!!"; + for(int i = 0; i < strlen(hello); i++) { + draw_char_at_position(hello[i], i * CHAR_WIDTH, 0, j % 2 + 1); + } + + char* numbers = "0123456789"; + int offset = strlen(hello) + 1; + for(int i = 0; i < strlen(numbers); i++) { + draw_char_at_position(numbers[i], (i + offset) * CHAR_WIDTH, 0, j % 2 + 2); + } + + j++; + vTaskDelay(5000 / portTICK_PERIOD_MS); + } +} |
