Problem z ekranem dotykowym - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Problem z ekranem dotykowym (/watek-problem-z-ekranem-dotykowym) |
Problem z ekranem dotykowym - Daevid - 18-01-2024 Witam Wszystkich. Mam problem z wyświetlaczem dotykowym tft 2,8" z SD SPI na ST7789, sterowny jest ESP32 WROOM 32. Mianowicie chodzi o to że po uruchomieniu wyświetlają się 2 przyciski (powiedzmy 1 i 2). Po wejściu w np. "1" są kolejne 3 przyciski do ustawień przekaźników. Problem w tym że po wciśnięciu ekranu w miejscu przycisku 1 on dalej tam jest a nie powinien. Niestety tft.fillScreen() zamalowuje tylko ekran a nie czyści "bufora? współrzędnych?". Nie mam pojęcia jak sobie z tym poradzić. Druga sprawa to przerwania tegoż ekranu/dotyku. nie wiem jak napisać tą funkcję. biblioteki użyte: #include <FS.h> #include "FS.h" #include "Free_Fonts.h" // Include the header file attached to this sketch #include "eeprom.h" #include "grafika.h" #include <TFT_eSPI.h> #include <SPI.h> #include <Wire.h> #include <OneWire.h> #include <DallasTemperature.h> #include <WiFiMulti.h> #include <stdint.h> #include <SD.h> #include <DS1302.h> #include <Timers.h> #include <HX711_ADC.h> #include <Stepper.h> //krokowy #include <PCF8575.h> #include <Adafruit_GFX.h> #include <TouchScreen.h> podłączenie pinów SPI: #define TFT_MISO 19 #define TFT_MOSI 23 #define TFT_SCLK 18 #define TFT_CS 15 #define TFT_DC 2 #define TFT_RST 4 #define TOUCH_CS 5 Pin TFT_CS oraz TOUCH_CS ustawione na HIGH Kod: void loop() { RE: Problem z ekranem dotykowym - kaczakat - 19-01-2024 Niestety projekt zbyt unikatowy sprzętowo by go odtworzyć i coś w nim grzebać. Ale od razu widać, że w ogóle nie starasz się zarządzać czasem w programie, próbując w każdym obiegu loop pytać o czas z RTC. Do napisania funkcji obsługi przerwania wybierasz pin IRQ z TFT i pod ten pin od strony IO ESP32 piszesz funkcję, wpisz w Google pytanie i masz przykład https://www.upesy.com/blogs/tutorials/what-are-interrupts-in-esp32-with-examples-for-arduino-code Kod: void IRAM_ATTR function_ISR() { RE: Problem z ekranem dotykowym - Daevid - 19-01-2024 (19-01-2024, 16:20)kaczakat napisał(a): Niestety projekt zbyt unikatowy sprzętowo by go odtworzyć i coś w nim grzebać. Ale od razu widać, że w ogóle nie starasz się zarządzać czasem w programie, próbując w każdym obiegu loop pytać o czas z RTC.Pin IRQ z TFT podłączyłem pod pin 36, inne mam już zajęte a na PCF8575 nie będzie i tak działał prawidłowo. Po odczytaniu stanu pinu wychodzi zawsze "1" po naciśnięciu jest zmiana na "0". Przerwanie chciałem zrobić na przykładzie podanym przez Ciebie w linku lecz po różnych kombinacjach zawsze po wgraniu do esp niestety sie resetuje w kółko. Kod: void IRAM_ATTR tft_irq_isr(void) { Kod: pinMode(TFT_IRQ_PIN, INPUT); //pin TFT_irq przerwania Kod: attachInterrupt(TFT_IRQ_PIN, tft_irq_isr, FALLING); |