Проблемы при работе с сенсором. Очень медленно выполняется команда.
- Войдите на сайт для отправки комментариев
Пнд, 01/08/2016 - 16:20
Собственно имею вот такую простенькую программку, 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!!!"); } }
Ужас сколько много непонятных букв. Каждый может написать код понятный компьютеру, а вот написать код понятный человеку, могут еденицы
И чего конкретно тут непонятно написано ??? Имею проблемы в задержке при работе с кнопкой. алгоритм if(p.x >300 && 500 <p.x && p.y >300 500 <p.y) улавливает когда координаты нажатия совпадают с кнопкой. Было в примере tftpaint. Что я делаю не так ???