18-01-2024, 16:03
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
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() {
//uruchomienie akcja.attach
akcja.process();
// Pobierz dane z DS1302
t = rtc.getTime();
uint16_t t_x = 0, t_y = 0; // współrzędne pulsacji
bool pressed = tft.getTouch(&t_x, &t_y); // prawda po naciśnięciu
// Sprawdź, czy kliknąłeś obszar przycisku
for (uint8_t b = 0; b < totalButtonNumber; b++) {
if (pressed && key[b].contains(t_x, t_y)) {
key[b].press(true);
Serial.print(t_x);
Serial.print(",");
Serial.println(t_y);
} else {
key[b].press(false);
}
}
// Akcja po naciśnięciu przycisku
for (uint8_t b = 0; b < totalButtonNumber; b++) {
if (key[b].justReleased()) {
key[b].drawButton(); // przerysuj po wydaniu
switch (b) {
case 0:
//ekran1
break;
case 1:
//ekran2
break;
case 2:
//ekran3
break;
case 3:
//ekran4
break;
case 4:
//
break;
case 5:
//
break;
case 6:
//
break;
case 7:
//
break;
case 8:
//
break;
default:
delay(1);
// sprawozdania
return;
}
}
if (key[b].justPressed()) {
key[b].drawButton(true); // zmienia kolor przycisku po naciśnięciu
delay(10); // Odrzucanie interfejsu użytkownika
}
}
}