• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z ekranem dotykowym
#1
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() {


  //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
    }
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
Problem z ekranem dotykowym - przez Daevid - 18-01-2024, 16:03
RE: Problem z ekranem dotykowym - przez kaczakat - 19-01-2024, 16:20
RE: Problem z ekranem dotykowym - przez Daevid - 19-01-2024, 21:56

Skocz do:


Przeglądający: 1 gości