Hallo!!!
Ich bin neu bei Arduino und habe einige Problem mit der Programmierung meines Touchscreens.
Den Schieberegler habe ich bereits programmiert nur würde ich ihn gerne mit einer Einrastfunktion realisieren.
Also mit 6 verschieden wie z.B. (60,90,120,160,190,250) und nicht so wie er jetzt ist Stufenlos.
Weiters im Menü rechts oben hätte ich gerne einen Timer nur habe ich keine Ahnung wie man solch einen Programmiert.
Außerdem kann ich die Schriftgröße nicht ändern lediglich die Schriftart (Big_FONT).
Bitte um Hilfe!!!
#include <memorysaver.h>
#include <UTFT.h>
#include <URTouch.h>
#include <URTouchCD.h>
//#define TOUCH_ORIENTATION PORTRAIT
UTFT myGLCD(CTE50CPLD,38,39,40,41);
URTouch myTouch( 6, 5, 4, 3, 2);
extern uint8_t BigFont[];
extern uint8_t SevenSeqNumFont[];
extern uint8_t SmallFont[];
char currentPage, selectedUnit;
int x,y;
const int Temperatur = 10;
int xR=38;
void drawHomeScreen(){
myGLCD.setColor(VGA_TEAL);
myGLCD.fillRoundRect(0,0,800,480);
myGLCD.setColor(VGA_MAROON);
myGLCD.fillRoundRect(50,80,750,180);
myGLCD.fillRoundRect(50,220,750,320);
myGLCD.fillRoundRect(50,360,750,460);
myGLCD.setColor(VGA_WHITE);
myGLCD.drawRoundRect(50,80,750,180);
myGLCD.drawRoundRect(50,220,750,320);
myGLCD.drawRoundRect(50,360,750,460);
myGLCD.drawRoundRect(0,0,799,479);
myGLCD.setColor(VGA_WHITE);
myGLCD.setFont(BigFont);
myGLCD.setBackColor(VGA_TEAL);
myGLCD.print("Menue",CENTER, 10);
myGLCD.print("DATUM/UHRZEIT",LEFT, 10);
myGLCD.print("In Betrieb seit:",RIGHT,10);
myGLCD.setBackColor(VGA_MAROON);
myGLCD.print("Temperaturauswahl",CENTER, 120);
myGLCD.print("Aktuelle Temperaturen",CENTER, 260);
myGLCD.print("Abschalten",CENTER, 400);
myGLCD.setColor(VGA_MAROON);
myGLCD.drawLine(360,25,440,25);
myGLCD.setColor(VGA_WHITE);
}
void drawFrame(int x1, int y1, int x2, int y2) {
myGLCD.setColor(VGA_LIME);
myGLCD.drawRoundRect (x1, y1, x2, y2);
while (myTouch.dataAvailable())
myTouch.read();
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (x1, y1, x2, y2);
}
void drawTemperaturauswahl(){
myGLCD.setColor(VGA_TEAL);
myGLCD.fillRoundRect(0,0,800,480);
myGLCD.setColor(VGA_MAROON);
myGLCD.fillRoundRect (10, 400,120, 460);
myGLCD.setColor(VGA_WHITE);
myGLCD.drawRoundRect (10, 400,120, 460);
myGLCD.drawRect(49, 199, 750, 275);
myGLCD.print("<-", 45, 420);
myGLCD.setBackColor(VGA_TEAL);
myGLCD.print("MIN(0)", 25, 175);
myGLCD.print("MAX(250)", 650, 175);
myGLCD.print("Temperaturauswahl", CENTER, 50);
}
void drawAktuelleTemperaturen(){
myGLCD.setColor(VGA_TEAL);
myGLCD.fillRoundRect(0,0,800,480);
myGLCD.setColor(VGA_MAROON);
myGLCD.fillRoundRect (10, 400, 120, 460);
myGLCD.setColor(VGA_WHITE);
myGLCD.drawRoundRect (10, 400, 120, 460);
myGLCD.print("<-", 45, 420);
myGLCD.setBackColor(VGA_TEAL);
myGLCD.print("Temp. im Garraum:", 50, 150);
myGLCD.print("Fleischtemperatur:", 50,200);
myGLCD.print("Aktuelle Temperaturen", CENTER, 50);
}
void setTemperaturauswahl() {
if (myTouch.dataAvailable()) {
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
if( (y>=200) && (y<=275)) {
xR=x;
if (xR<=50) {
xR=50;
}
if (xR>=740){
xR=740;
}
}
}
int xRC = map(xR,50,749,0,250);
analogWrite(Temperatur, xRC);
myGLCD.setColor(255, 255, 255);
myGLCD.fillRect(xR,200,(xR+15),274);
myGLCD.setColor(xRC, 0, 0);
myGLCD.fillRect(50, 200, (xR-1), 274);
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect((xR+16), 200, 749, 274);
}
void setup() {
myGLCD.InitLCD(LANDSCAPE);
myTouch.InitTouch();
myGLCD.clrScr();
myTouch.setPrecision(PREC_MEDIUM);
myGLCD.setFont(BigFont);
drawHomeScreen();
currentPage = '0';
}
void loop() {
if (myTouch.dataAvailable()) {
if (currentPage == '0') {
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
if ((x>=50) && (x<=750) && (y>=80) && (y<=180)) {
myGLCD.setColor(VGA_LIME);
myGLCD.print("Temperaturauswahl",CENTER, 120);
drawFrame(50, 80, 750, 180);
currentPage = '1';
myGLCD.clrScr();
drawTemperaturauswahl();
}
if ((x>=50) && (x<=750) && (y>=220) && (y<=320))
{ myGLCD.setColor(VGA_LIME);
myGLCD.print("Aktuelle Temperaturen",CENTER, 260);
drawFrame(50, 220, 750, 320);
currentPage = '2';
myGLCD.clrScr();
drawAktuelleTemperaturen();
}
}
}
if (currentPage == '1') {
setTemperaturauswahl();
if (myTouch.dataAvailable()) {
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
if ((x>=10) && (x<=120) &&(y>=400) && (y<=460)) {
myGLCD.setBackColor(VGA_MAROON);
myGLCD.setColor(VGA_LIME);
myGLCD.print("<-", 45, 420);
drawFrame(10, 400, 120, 460);
currentPage = '0';
myGLCD.clrScr();
drawHomeScreen();
}
}
}
if (currentPage == '2') {
if (myTouch.dataAvailable()) {
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
if ((x>=10) && (x<=120) &&(y>=400) && (y<=460)) {
myGLCD.setBackColor(VGA_MAROON);
myGLCD.setColor(VGA_LIME);
myGLCD.print("<-", 45, 420);
drawFrame(10, 400, 120, 460);
currentPage = '0';
myGLCD.clrScr();
drawHomeScreen();
}
}
}
}