aboutsummaryrefslogtreecommitdiff
path: root/main/main.c
diff options
context:
space:
mode:
authorgamerdonkey2024-08-29 23:55:47 -0500
committergamerdonkey2024-08-29 23:55:47 -0500
commit844c3c8f671c83cf2d9b39831d7873cb0615fba0 (patch)
tree67514edde8e33f76f4214e8ac6c2153e1242f485 /main/main.c
parent2f8dc507d3874fb930799d1b235eac3f37478a84 (diff)
downloadesp32-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.c52
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);
+ }
+}