Проблемы при работе с сенсором. Очень медленно выполняется команда.

Mikhail86
Offline
Зарегистрирован: 01.08.2016

Собственно имею вот такую простенькую программку, arduino mega+ 2.4TFT сенсорный экран
mcufriend.
Беда вся в том, что при нажатии на кнопку она отрабатывается через 1-2 секунды. Это слишком
долго... Что можно придумать с таким тормознутым сенсором? Ведь в примере tftpaint.ino
он отрабатывает мгновенно! Я перенес код, убрал даже частично проверку по tp.z.
но результата нет. натыкался на http://easyelectronics.ru/rabota-s-rezistivnym-sensornym-ekranom.html
статейку. тут описан алгоритм приема сигнала с сенсора без библиотеки. На сколько возможно
перенести это под IDE? или есть еще какие-нибудь библиотеки рабочие ?
utouch.h пробовал - работать отказывается.


#include <avr/wdt.h>
#include <Adafruit_GFX.h>    // Core graphics library
#include <SWTFT.h> // Hardware-specific library
#include <TouchScreen.h>



#define YP A1  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 7   // can be a digital pin
#define XP 6   // can be a digital pin

#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940

// For better pressure precision, we need to know the resistance
// between X+ and X- Use any multimeter to read it
// For the one we're using, its 300 ohms across the X plate
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 358);



// Assign human-readable names to some common 16-bit color values:
#define  BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF


SWTFT tft;
void setup(void) {
 
   
  Serial.begin(9600);
  
  tft.reset();
  
  uint16_t identifier = tft.readID();

  tft.begin(identifier);
  tft.setRotation(1);
  tft.fillScreen(BLACK);
  pinMode(13, OUTPUT);
 
}

#define MINPRESSURE 1
#define MAXPRESSURE 1000

void loop()
{
  digitalWrite(13, HIGH);
  TSPoint p = ts.getPoint();
  digitalWrite(13, LOW);
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);
    
     
//    tft.print(tp.z);
         tft.drawRect(165,120,110,40, CYAN);
     tft.setCursor(175,125);
     tft.setTextSize(2);
     tft.setTextColor(CYAN,BLACK);
     tft.print("FlushNow");  
 
      
         
  //Serial.println();    
   
       //If Button flush pressed   


   


      if (p.x > 350 && p.x < 500  && p.y > 500 && p.y < 780  && p.z > 10 ){

      tft.setCursor(25,140);
     tft.setTextSize(2);
     tft.setTextColor(CYAN,BLACK);
     tft.print("PRESSED!!!");
     }
 

}

 

VeD
Offline
Зарегистрирован: 21.02.2016

Ужас сколько много непонятных букв. Каждый может написать код понятный компьютеру, а вот написать код понятный человеку, могут еденицы

Mikhail86
Offline
Зарегистрирован: 01.08.2016

VeD пишет:
Ужас сколько много непонятных букв. Каждый может написать код понятный компьютеру, а вот написать код понятный человеку, могут еденицы

И чего конкретно тут непонятно написано ??? Имею проблемы в задержке при работе с кнопкой.  алгоритм if(p.x >300 &&  500 <p.x && p.y >300  500 <p.y) улавливает когда координаты нажатия совпадают с кнопкой. Было в примере tftpaint. Что я делаю не так ???