From the beginning, I had problems with the ILI9341 display and the ESP32 board, when WiFi is on, nothing can be written on the display or random rows of pixels are displayed. Please help.
Here's my code
#include <WiFi.h>
#include <TFT_eSPI.h> // Knihovna pro TFT displej
#include <SPI.h>
//#include <FreeRTOS.h> // FreeRTOS knihovna pro tasky, semafory, mutexy
//#define TFT_CS 15
const char* ssid = "YourSSID";
const char* password = "YourPassword";
TFT_eSPI tft = TFT_eSPI(); // Objekt pro TFT displej
TaskHandle_t Task1; // Handle pro Task 1 (Wi-Fi připojení)
TaskHandle_t Task2; // Handle pro Task 2 (Vykreslování na displej)
// Mutex pro sdílení dat
SemaphoreHandle_t wifiMutex;
String wifiStatus = "Connecting to Wi-Fi..."; // Sdílená proměnná pro stav Wi-Fi
void setup() {
Serial.begin(115200); // Inicializace sériového portu pro ladění
// SPI.begin(18, 19, 23, 15);
tft.begin(); // Inicializace displeje
tft.setRotation(3); // Nastavení rotace displeje
tft.fillScreen(TFT_BLACK); // Vyčištění displeje
tft.setCursor(0, 0); // Nastavení pozice kurzoru
tft.setTextColor(TFT_WHITE); // Barva textu
tft.setTextSize(2); // Velikost textu
tft.print(wifiStatus);
// Inicializace mutexu
wifiMutex = xSemaphoreCreateMutex();
// Začínáme úkoly na různých jádrech
xTaskCreatePinnedToCore(WifiTask, "WiFi Task", 10000, NULL, 1, &Task1, 0); // Task na jádru 0
xTaskCreatePinnedToCore(DisplayTask, "Display Task", 10000, NULL, 1, &Task2, 1); // Task na jádru 1
}
void loop() {
// Hlavní smyčka může být prázdná, protože úkoly běží na pozadí
}
// Funkce pro připojení k Wi-Fi (spustí se na jádru 0)
void WifiTask(void *parameter) {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password); // Pokus o připojení k Wi-Fi
Serial.print("Connecting to Wi-Fi...");
// Čekání na připojení k Wi-Fi
while (WiFi.status() != WL_CONNECTED) {
delay(1000); // Čekáme 1 sekundu mezi pokusy
Serial.print(".");
}
// Když se Wi-Fi připojí, aktualizujeme stav
// Získáme mutex pro úpravu sdílené proměnné
xSemaphoreTake(wifiMutex, portMAX_DELAY); // Čekáme na zámek mutexu
wifiStatus = "Wi-Fi connected!"; // Aktualizujeme stav Wi-Fi
Serial.println("Wi-Fi connected!");
xSemaphoreGive(wifiMutex); // Uvolníme mutex
}
// Funkce pro vykreslování na displej (spustí se na jádru 1)
void DisplayTask(void *parameter) {
unsigned long previousMillis = 0; // Časovač pro aktualizaci displeje
const long interval = 1000; // Interval pro vykreslování
while (true) {
unsigned long currentMillis = millis();
// Pokud uplynul interval pro vykreslení
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Získáme mutex pro čtení sdílené proměnné
xSemaphoreTake(wifiMutex, portMAX_DELAY); // Čekáme na zámek mutexu
// Ladicí výstup
Serial.println("Refreshing display...");
// Aktualizujeme displej podle stavu Wi-Fi
tft.fillScreen(TFT_BLACK); // Vyčištění displeje
tft.setCursor(0, 0); // Nastavení pozice kurzoru
tft.setTextColor(TFT_WHITE); // Barva textu
tft.setTextSize(2); // Velikost textu
tft.print(wifiStatus); // Zobrazení stavu Wi-Fi
Serial.println(wifiStatus);
xSemaphoreGive(wifiMutex); // Uvolníme mutex
}
}
}
ILI9341 not working when WiFi is on
Jump to
- English Forum
- Explore
- News
- General Discussion
- FAQ
- Documentation
- Documentation
- Sample Code
- Discussion Forum
- Hardware
- ESP-IDF
- ESP-BOX
- ESP-ADF
- ESP-MDF
- ESP-WHO
- ESP-SkaiNet
- ESP32 Arduino
- IDEs for ESP-IDF
- ESP-AT
- ESP IoT Solution
- ESP RainMaker
- Rust
- ESP8266
- Report Bugs
- Showcase
- Chinese Forum 中文社区
- 活动区
- 乐鑫活动专区
- 讨论区
- 全国大学生物联网设计竞赛乐鑫答疑专区
- ESP-IDF 中文讨论版
- 《ESP32-C3 物联网工程开发实战》书籍讨论版
- 中文文档讨论版
- ESP-AT 中文讨论版
- ESP-BOX 中文讨论版
- ESP IoT Solution 中文讨论版
- ESP-ADF 中文讨论版
- ESP Mesh 中文讨论版
- ESP Cloud 中文讨论版
- ESP-WHO 中文讨论版
- ESP-SkaiNet 中文讨论版
- ESP 生产支持讨论版
- 硬件问题讨论
- 项目展示
Who is online
Users browsing this forum: No registered users and 25 guests
- All times are UTC
- Top
- Delete cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. ESP8266EX and ESP32 are some of our products.