24-12-2018, 12:23
Hej, mam pewien problem z wejściami TOUCH w ESP32, mianowicie losowo wykrywa mi na nich dotknięcia, ale tylko i wyłącznie gdy dodam 3 dotykowce w programie. Jak odczytuje tylko jeden to nie ma żadnego problemu. Podsyłam program poniżej.
Dodam że wykryte wartości w momencie wyzwolenia są powyżej 70 (wysyłam je do Serial) gdzie w IFie zadeklarowałem że ma reagować tylko gdy jest poniżej 40, może ktoś z was poradzi co nagmatwałem ??
Gdy skasuje dwa ify, to pojedynczy działa OK, reaguje idealnie na dotyk, gdy dodam choć jeszcze jeden, to co chwila się aktywują oba losowo na zmianę.
Dodam że wykryte wartości w momencie wyzwolenia są powyżej 70 (wysyłam je do Serial) gdzie w IFie zadeklarowałem że ma reagować tylko gdy jest poniżej 40, może ktoś z was poradzi co nagmatwałem ??
Kod:
//TFT
#include <TFT_eSPI.h> // TFT ST7735 sterownik
#include <SPI.h>
// SCK - D18
// SDA - D23
// A0 - D2
// RESET - D4
// CS - D15
TFT_eSPI tft = TFT_eSPI();
//czujnik DHT
#include "DHTesp.h"
DHTesp dht;
// Blynk oraz WiFi
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
Skasowane dane dostepowe do Blynka !!
//Zmienne
byte StanPrzekaznik = 0;
byte cisnienie;
float Aktualny;
byte Wilgotnosc;
float INiza;
float OUTiza;
//Menu
byte SETmenu;
float SETtemp;
float SEThist;
// Timery
BlynkTimer LCD;
BlynkTimer INDHT;
void INDHTupdate()
{
Aktualny = dht.getTemperature();
Wilgotnosc = dht.getHumidity();
}
void LCDupdate()
{
//tft.drawString("Temperatura:", 0, 18, 2);
// Lewa, od gory, cos
tft.fillScreen(TFT_BLACK);
// Stale
tft.setTextColor(TFT_RED);
tft.setTextSize(2);
tft.drawString("Ustawienia Temperatury:", 0, 0, 1);
tft.setTextSize(1);
tft.setTextColor(TFT_GREEN);
tft.drawString("Temperatura:", 0, 18, 2);
tft.drawString("Wilgotnosc:", 0, 36, 2);
if (StanPrzekaznik == 1){
tft.setTextColor(TFT_ORANGE);
tft.drawString("Grzanie", 84, 34, 2);
}
else if (StanPrzekaznik == 0){
tft.setTextColor(TFT_CYAN);
tft.drawString("Chlodzenie", 84, 34, 2);
}
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass, DaneLogowania);
//Timery
LCD.setInterval(5000L, LCDupdate);
INDHT.setInterval(1000L, INDHTupdate);
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
dht.setup(17, DHTesp::DHT11);
}
void loop()
{
Blynk.run();
LCD.run();
INDHT.run();
if (touchRead(T5) < 10){
Serial.println("Menu");
Serial.println(touchRead(T5));
delay(1000);
}
if (touchRead(T6) < 10){
Serial.println(touchRead(T6));
Serial.println("dodaj");
delay(1000);
}
if (10 > touchRead(T4)){
Serial.println(touchRead(T4));
Serial.println("Odjemij");
delay(1000);
}
}