2024-12-0900 Jetzt geht TOUCH und SD.
This commit is contained in:
parent
8897226d9a
commit
7708e5cb38
|
@ -8,8 +8,8 @@ board = esp32dev
|
||||||
framework = arduino
|
framework = arduino
|
||||||
lib_deps =
|
lib_deps =
|
||||||
bodmer/TFT_eSPI@^2.5.33
|
bodmer/TFT_eSPI@^2.5.33
|
||||||
;nitek/XPT2046_Bitbang_Slim@^2.0.0
|
nitek/XPT2046_Bitbang_Slim @ 2.0.0
|
||||||
https://github.com/PaulStoffregen/XPT2046_Touchscreen.git#v1.4
|
;https://github.com/PaulStoffregen/XPT2046_Touchscreen.git#v1.4
|
||||||
adafruit/Adafruit HTU21DF Library @ 1.0.5
|
adafruit/Adafruit HTU21DF Library @ 1.0.5
|
||||||
;wollewald/ADS1115_WE @ 1.4.3
|
;wollewald/ADS1115_WE @ 1.4.3
|
||||||
adafruit/Adafruit MCP9808 Library @ 2.0.0
|
adafruit/Adafruit MCP9808 Library @ 2.0.0
|
||||||
|
|
143
src/main.cpp
143
src/main.cpp
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#include <Wire.h>
|
#include <Wire.h>
|
||||||
|
|
||||||
#include <XPT2046_Touchscreen.h>
|
#include <XPT2046_Bitbang.h>
|
||||||
|
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
//#include <NTPClient.h>
|
//#include <NTPClient.h>
|
||||||
|
@ -31,11 +31,12 @@ char ausgabe[100];
|
||||||
// The CYD touch uses some non default
|
// The CYD touch uses some non default
|
||||||
// SPI pins
|
// SPI pins
|
||||||
|
|
||||||
#define XPT2046_IRQ 36
|
#define MOSI_PIN 32
|
||||||
#define XPT2046_MOSI 32
|
#define MISO_PIN 39
|
||||||
#define XPT2046_MISO 39
|
#define CLK_PIN 25
|
||||||
#define XPT2046_CLK 25
|
#define CS_PIN 33
|
||||||
#define XPT2046_CS 33
|
|
||||||
|
XPT2046_Bitbang touchscreen(MOSI_PIN, MISO_PIN, CLK_PIN, CS_PIN);
|
||||||
|
|
||||||
#define SD_SCK 18
|
#define SD_SCK 18
|
||||||
#define SD_MISO 19
|
#define SD_MISO 19
|
||||||
|
@ -46,7 +47,6 @@ TFT_eSPI tft = TFT_eSPI();
|
||||||
SPIClass spi2 = SPIClass(VSPI);
|
SPIClass spi2 = SPIClass(VSPI);
|
||||||
|
|
||||||
SPIClass mySpi = SPIClass(VSPI);
|
SPIClass mySpi = SPIClass(VSPI);
|
||||||
XPT2046_Touchscreen ts(XPT2046_CS, XPT2046_IRQ);
|
|
||||||
|
|
||||||
|
|
||||||
#include<mess_htu21.h>
|
#include<mess_htu21.h>
|
||||||
|
@ -61,6 +61,8 @@ XPT2046_Touchscreen ts(XPT2046_CS, XPT2046_IRQ);
|
||||||
bool getNTPtime(int sec);
|
bool getNTPtime(int sec);
|
||||||
void showTime(tm localTime);
|
void showTime(tm localTime);
|
||||||
void zeigeZeit(tm localTime, int x, int y);
|
void zeigeZeit(tm localTime, int x, int y);
|
||||||
|
void drawMenue(int32_t xs, int32_t sy);
|
||||||
|
void Menue();
|
||||||
|
|
||||||
void listDir(fs::FS &fs, const char * dirname, uint8_t levels) {
|
void listDir(fs::FS &fs, const char * dirname, uint8_t levels) {
|
||||||
Serial.printf("Listing directory: %s\n", dirname);
|
Serial.printf("Listing directory: %s\n", dirname);
|
||||||
|
@ -228,6 +230,8 @@ void setup() {
|
||||||
//spi2.begin(XPT2046_CLK, XPT2046_MISO, XPT2046_MOSI, XPT2046_CS);
|
//spi2.begin(XPT2046_CLK, XPT2046_MISO, XPT2046_MOSI, XPT2046_CS);
|
||||||
/* ts.begin(spi2);
|
/* ts.begin(spi2);
|
||||||
ts.setRotation(1); */
|
ts.setRotation(1); */
|
||||||
|
touchscreen.begin();
|
||||||
|
//touchscreen.setCalibration(1,320,1,240);
|
||||||
mySpi.begin(SD_SCK, SD_MISO, SD_MOSI);
|
mySpi.begin(SD_SCK, SD_MISO, SD_MOSI);
|
||||||
|
|
||||||
// Start the tft display and set it to black
|
// Start the tft display and set it to black
|
||||||
|
@ -245,7 +249,7 @@ void setup() {
|
||||||
x = 320 /2;
|
x = 320 /2;
|
||||||
y += 16;
|
y += 16;
|
||||||
tft.setTextColor(TFT_RED, TFT_BLACK);
|
tft.setTextColor(TFT_RED, TFT_BLACK);
|
||||||
tft.drawCentreString("Warte auf verbindung", x, y, fontNum *= 2);
|
tft.drawCentreString("Warte auf Verbindung", x, y, fontNum *= 2);
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
WiFi.reconnect();
|
WiFi.reconnect();
|
||||||
delay(10);
|
delay(10);
|
||||||
|
@ -315,7 +319,6 @@ void setup() {
|
||||||
tft.setTextSize(2);
|
tft.setTextSize(2);
|
||||||
tft.println(WiFi.localIP());
|
tft.println(WiFi.localIP());
|
||||||
tft.setTextSize(1);
|
tft.setTextSize(1);
|
||||||
delay(5000);
|
|
||||||
// Initialize a NTPClient to get time
|
// Initialize a NTPClient to get time
|
||||||
configTime(0, 0, NTP_SERVER);
|
configTime(0, 0, NTP_SERVER);
|
||||||
// See https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv for Timezone codes for your region
|
// See https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv for Timezone codes for your region
|
||||||
|
@ -351,7 +354,7 @@ void setup() {
|
||||||
tft.setTextColor(TFT_BLUE, TFT_BLACK);
|
tft.setTextColor(TFT_BLUE, TFT_BLACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
void printTouchToDisplay(TS_Point p) {
|
void printTouchToDisplay(TouchPoint p) {
|
||||||
|
|
||||||
// Clear screen first
|
// Clear screen first
|
||||||
tft.fillScreen(TFT_BLACK);
|
tft.fillScreen(TFT_BLACK);
|
||||||
|
@ -361,7 +364,7 @@ void printTouchToDisplay(TS_Point p) {
|
||||||
int y = 100;
|
int y = 100;
|
||||||
int fontSize = 2;
|
int fontSize = 2;
|
||||||
|
|
||||||
String temp = "Pressure = " + String(p.z);
|
String temp = "Pressure = " + String(p.zRaw);
|
||||||
tft.drawCentreString(temp, x, y, fontSize);
|
tft.drawCentreString(temp, x, y, fontSize);
|
||||||
|
|
||||||
y += 16;
|
y += 16;
|
||||||
|
@ -374,9 +377,9 @@ void printTouchToDisplay(TS_Point p) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void printTouchToSerial(TS_Point p) {
|
void printTouchToSerial(TouchPoint p) {
|
||||||
Serial.print("Pressure = ");
|
Serial.print("Pressure = ");
|
||||||
Serial.print(p.z);
|
Serial.print(p.zRaw);
|
||||||
Serial.print(", x = ");
|
Serial.print(", x = ");
|
||||||
Serial.print(p.x);
|
Serial.print(p.x);
|
||||||
Serial.print(", y = ");
|
Serial.print(", y = ");
|
||||||
|
@ -401,19 +404,19 @@ int ts_x, ts_y, ts_z;
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
|
||||||
if (ts.tirqTouched() && ts.touched()) {
|
TouchPoint touch = touchscreen.getTouch();
|
||||||
TS_Point p = ts.getPoint();
|
if (touch.zRaw != 0){
|
||||||
//printTouchToSerial(p);
|
|
||||||
ts_x = map(p.x, 200, 3700, 1, SCREEN_WIDTH);
|
|
||||||
ts_y = map(p.y, 240, 3800, 1, SCREEN_HEIGHT);
|
|
||||||
ts_z = p.z;
|
|
||||||
printTouchToSerial2(ts_x, ts_y, ts_z);
|
|
||||||
|
|
||||||
if((ts_x >= 300) && (ts_y >= 220)){
|
//printTouchToSerial(p);
|
||||||
Serial.printf(" Gefunden bei: %i : %i : %i \t", p.y, p.x, p.z);
|
/* ts_x = map(touch.x, 200, 3700, 1, SCREEN_WIDTH);
|
||||||
} else {
|
ts_y = map(touch.y, 240, 3800, 1, SCREEN_HEIGHT);
|
||||||
printTouchToDisplay(p);
|
ts_z = touch.zRaw ; */
|
||||||
}
|
printTouchToSerial2(touch.x, touch.y, touch.xRaw);
|
||||||
|
|
||||||
|
if((touch.x >= 275) && (touch.y >= 210)){
|
||||||
|
Serial.printf(" Gefunden bei: %i : %i : %i \t", touch.y, touch.x, touch.zRaw);
|
||||||
|
Menue();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
getNTPtime(10);
|
getNTPtime(10);
|
||||||
|
@ -427,6 +430,7 @@ void loop() {
|
||||||
read_HTU21D();
|
read_HTU21D();
|
||||||
getTemperature_MCP9808();
|
getTemperature_MCP9808();
|
||||||
read_BMP_280();
|
read_BMP_280();
|
||||||
|
drawMenue(300,225);
|
||||||
if (Minuten % SAVE_INTERVAL == 0){
|
if (Minuten % SAVE_INTERVAL == 0){
|
||||||
sprintf(ausgabe, "%s;%f;%f\n", szZeit, htuData.t, htuData.h);
|
sprintf(ausgabe, "%s;%f;%f\n", szZeit, htuData.t, htuData.h);
|
||||||
appendFile(SD, "/daten.csv", ausgabe);
|
appendFile(SD, "/daten.csv", ausgabe);
|
||||||
|
@ -475,4 +479,93 @@ void zeigeZeit(tm localTime, int x = 0, int y = 0){
|
||||||
tft.println(szZeit);
|
tft.println(szZeit);
|
||||||
tft.setTextSize(1);
|
tft.setTextSize(1);
|
||||||
}
|
}
|
||||||
|
void drawMenue(int32_t xs, int32_t sy){
|
||||||
|
tft.drawLine(xs,sy,xs+15,sy, TFT_YELLOW);
|
||||||
|
tft.drawLine(xs,sy+5,xs+15,sy+5, TFT_YELLOW);
|
||||||
|
tft.drawLine(xs,sy+10,xs+15,sy+10, TFT_YELLOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menue(){
|
||||||
|
tft.fillScreen(TFT_BLACK);
|
||||||
|
while(1){
|
||||||
|
TouchPoint touch = touchscreen.getTouch();
|
||||||
|
tft.setTextColor(TFT_YELLOW, TFT_BLACK);
|
||||||
|
tft.drawCentreString("Einstellungen: ", 160, 20, 4);
|
||||||
|
getNTPtime(10);
|
||||||
|
tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||||
|
zeigeZeit(timeinfo, 215, 0);
|
||||||
|
tft.setCursor(1,50);
|
||||||
|
tft.setTextSize(2);
|
||||||
|
tft.println("Interval der Daten-\nsicherung (in Minuten).");
|
||||||
|
if (touch.zRaw != 0){
|
||||||
|
|
||||||
|
printTouchToSerial2(touch.x, touch.y, touch.xRaw);
|
||||||
|
|
||||||
|
if(((touch.x >= 15) && (touch.x <= 55)) && ((touch.y >= 95) && (touch.y <= 125))){
|
||||||
|
Serial.printf(" Gefunden bei 1: %i : %i : %i \t", touch.y, touch.x, touch.zRaw);
|
||||||
|
tft.drawRoundRect(11,91,38,38,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(12,92,36,36,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(13,93,34,34,5,TFT_GOLD);
|
||||||
|
delay(1000);
|
||||||
|
tft.drawRoundRect(11,91,38,38,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(12,92,36,36,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(13,93,34,34,5,TFT_BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(((touch.x >= 65) && (touch.x <= 95)) && ((touch.y >= 95) && (touch.y <= 125))){
|
||||||
|
Serial.printf(" Gefunden bei 2: %i : %i : %i \t", touch.y, touch.x, touch.zRaw);
|
||||||
|
tft.drawRoundRect(61,91,38,38,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(62,92,36,36,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(63,93,34,34,5,TFT_GOLD);
|
||||||
|
delay(1000);
|
||||||
|
tft.drawRoundRect(61,91,38,38,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(62,92,36,36,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(63,93,34,34,5,TFT_BLACK);
|
||||||
|
}
|
||||||
|
if(((touch.x >= 110) && (touch.x <= 140)) && ((touch.y >= 95) && (touch.y <= 125))){
|
||||||
|
Serial.printf(" Gefunden bei 3: %i : %i : %i \t", touch.y, touch.x, touch.zRaw);
|
||||||
|
tft.drawRoundRect(111,91,38,38,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(112,92,36,36,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(113,93,34,34,5,TFT_GOLD);
|
||||||
|
delay(1000);
|
||||||
|
tft.drawRoundRect(111,91,38,38,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(112,92,36,36,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(113,93,34,34,5,TFT_BLACK);
|
||||||
|
}
|
||||||
|
if(((touch.x >= 150) && (touch.x <= 195)) && ((touch.y >= 95) && (touch.y <= 125))){
|
||||||
|
Serial.printf(" Gefunden bei 4: %i : %i : %i \t", touch.y, touch.x, touch.zRaw);
|
||||||
|
tft.drawRoundRect(161,91,38,38,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(162,92,36,36,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(163,93,34,34,5,TFT_GOLD);
|
||||||
|
delay(1000);
|
||||||
|
tft.drawRoundRect(161,91,38,38,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(162,92,36,36,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(163,93,34,34,5,TFT_BLACK);
|
||||||
|
}
|
||||||
|
if(((touch.x >= 200) && (touch.x <= 230)) && ((touch.y >= 95) && (touch.y <= 125))){
|
||||||
|
Serial.printf(" Gefunden bei 5: %i : %i : %i \t", touch.y, touch.x, touch.zRaw);
|
||||||
|
tft.drawRoundRect(211,91,38,38,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(212,92,36,36,5,TFT_GOLD);
|
||||||
|
tft.drawRoundRect(213,93,34,34,5,TFT_GOLD);
|
||||||
|
delay(1000);
|
||||||
|
tft.drawRoundRect(211,91,38,38,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(212,92,36,36,5,TFT_BLACK);
|
||||||
|
tft.drawRoundRect(213,93,34,34,5,TFT_BLACK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tft.drawRoundRect(10,90,40,40,5,TFT_GREEN);
|
||||||
|
tft.drawRoundRect(60,90,40,40,5,TFT_GREEN);
|
||||||
|
tft.drawRoundRect(110,90,40,40,5,TFT_GREEN);
|
||||||
|
tft.drawRoundRect(160,90,40,40,5,TFT_GREEN);
|
||||||
|
tft.drawRoundRect(210,90,40,40,5,TFT_GREEN);
|
||||||
|
|
||||||
|
tft.drawNumber(1, 25, 105);
|
||||||
|
tft.drawNumber(5, 75, 105);
|
||||||
|
tft.drawNumber(10, 120, 105);
|
||||||
|
tft.drawNumber(30, 170, 105);
|
||||||
|
tft.drawNumber(60, 220, 105);
|
||||||
|
tft.setTextSize(1);
|
||||||
|
delay(200);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user