Проблемы при работе с сенсором. Очень медленно выполняется команда.
- Войдите на сайт для отправки комментариев
Пнд, 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. Что я делаю не так ???