Show Posts
Pages: 1 [2] 3
16  International / Deutsch / Re: Tochscreen-Display mit Menue-Steuerung on: August 16, 2012, 07:20:25 am
OK. Aber das sagt doch aus, dass man genau auf diesen Punkt bzw. Bereich einer Fläche drücken muss. Nämlich ungefähr oben links. Bei der ersten Seite sollte es aber so sein, egal wo auf dem Touchfeld ich drücke soll es eine Seite(menue) weiterspringen.
Was ist denn mit der Abkürzung API gemeint?
Quote
Soweit ich mich an das API erinnern kann, ist das nicht so gedacht.
Gruß Jens
17  International / Deutsch / Re: Tochscreen-Display mit Menue-Steuerung on: August 15, 2012, 01:37:35 pm
Hallo pylon,

ich habe
Quote
int mode (); gegen
int mode = 0; ersetzt.
Leider keine Änderung. Beim touch auf die "startseite" springt das Display wieder auf die "startseite" und nicht auf die "menue"-Seite.
Anbei mal den kompletten Sketch mit dem ich experimentiere.
Code:
// Remember to change the next line if you are using as 16bit module!
#include <ITDB02_Graph16.h>
#include <ITDB02_Touch.h>
#include <avr/pgmspace.h>
#define MODE_COUNT 3

// Schriftarten in Benutzung
extern uint8_t SmallFont[];
extern uint8_t Sinclair_S[];
extern uint8_t Sinclair_M[];
extern uint8_t BigFont[];


//Pinbelegung für das Display+Touchscreen
//myGLCD(RS,WR,CS,RST,ALE,mode);
ITDB02 myGLCD(A1,A2,A0,A3,A5,ITDB32S);
//myTouch(TCLK,TCS,DIN,DOUT,IRQ);
ITDB02_Touch  myTouch(13,10,11,12,A4);


//Konstanten
int cx, cy;
int rx[10], ry[10];
float px, py;
int ox, oy;
int x, y;
char stCurrent[20]="";
int stCurrentLen=0;
char stLast[20]="";
int mode = 0;


void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(Sinclair_S);

  myTouch.InitTouch();
  myTouch.setPrecision(PREC_LOW);
}

/*void waitForTouchRelease()
{
  // Wait for release
  while (myTouch.dataAvailable()==true)
    myTouch.read();
}*/

void waitForTouch()
{
  while (myTouch.dataAvailable() == true)
  {
    myTouch.read();
  }
  while (myTouch.dataAvailable() == false) {}
  while (myTouch.dataAvailable() == true)
  {
    myTouch.read();
  }}
 
 
//zeichnet eine rote Umrandung, wenn der Button gedrückt wird
void waitForIt(int x1, int y1, int x2, int y2)
{
  myGLCD.setColor(255, 0, 0);
  myGLCD.drawRoundRect (x1, y1, x2, y2);
  while (myTouch.dataAvailable())
    myTouch.read();
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawRoundRect (x1, y1, x2, y2);
}

//Aufbau der Startseite
void startseite()

{
  myGLCD.setColor( 0, 0, 0);  //setzt die Farbe im Hintergrund
  myGLCD.fillRect(0, 0, 239, 320);  //setzt die Größe und Position des Hintergrundes
  myGLCD.setColor(255, 255, 255);  //setzt die Schriftfarbe
  myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.drawLine(0, 14, 239, 14); //setzt die Position und Länge der Linie
  myGLCD.setColor( 0, 0, 237);
 myGLCD.fillRect(0, 0, 239, 12);  //setzt die Größe und Position des Hintergrundes
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("Startseite by Knippi", CENTER, 3);
  myGLCD.setBackColor(0, 0, 0);
   myGLCD.setFont(Sinclair_M);
  myGLCD.print("Startseite", CENTER, 30);
   myGLCD.setFont(Sinclair_S);
    myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.print("Touch screen to continue", CENTER, 305);
   myGLCD.setBackColor(0, 0, 0);  //setzt die hinterleget Farbe des Textes
   myGLCD.print("jens.knipphals@gmx.de", CENTER, 290);
  waitForTouch();
   
}

//Aufbau der Menueseite
void menue()

{
  myGLCD.setColor( 0, 0, 0);  //setzt die Farbe im Hintergrund
  myGLCD.fillRect(0, 0, 239, 320);  //setzt die Größe und Position des Hintergrundes
  //myGLCD.setColor(255, 255, 255);  //setzt die Schriftfarbe
  myGLCD.setBackColor(255, 255, 0);  //setzt die hinterleget Farbe des Textes
  myGLCD.drawLine(0, 14, 239, 14); //setzt die Position und Länge der Linie
  myGLCD.setColor( 255, 255, 0);     //setzt die Farbe des Farbbalkens oben
 myGLCD.fillRect(0, 0, 239, 13);  //setzt die Größe und Position des Hintergrundes des Balkens oben
  myGLCD.setColor(0, 0, 0);       //setzt die Schriftfarbe für den nachfolgenden Text
  myGLCD.print("Menue", CENTER, 3);
  myGLCD.setBackColor(0, 0, 0);   //setzt die Schriftfarbe für den nachfolgenden Texte
   myGLCD.setFont(Sinclair_M);
    myGLCD.setColor(255, 255, 255);
  myGLCD.print("Menue", CENTER, 30);
   myGLCD.setFont(Sinclair_S);
   /* myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.print("Touch screen to continue", CENTER, 305);*/
   myGLCD.setBackColor(0, 0, 0);  //setzt die hinterleget Farbe des Textes
   myGLCD.print("jens.knipphals@gmx.de", CENTER, 290);
   //waitForTouch();
      myGLCD.setColor(0, 0, 255);
    myGLCD.fillRoundRect (10, 60, 60, 10);
    myGLCD.setColor(255, 255, 255);
    myGLCD.drawRoundRect (10, 60, 60, 10);
     myGLCD.setColor(0, 0, 255);
    myGLCD.fillRoundRect (60, 130, 10, 80);
    myGLCD.setColor(255, 255, 255);
    myGLCD.drawRoundRect (60, 130, 10, 80);
    //myGLCD.print("1", 28, 27);
// waitForTouch();   
  waitForIt(10, 10, 60, 60);
}

//Aufbau der Settingseite
void setting()

{
  myGLCD.setColor( 0, 0, 0);  //setzt die Farbe im Hintergrund
  myGLCD.fillRect(0, 0, 239, 320);  //setzt die Größe und Position des Hintergrundes
  myGLCD.setColor(255, 255, 255);  //setzt die Schriftfarbe
  myGLCD.setBackColor(255, 0, 0);  //setzt die hinterleget Farbe des Textes
  myGLCD.drawLine(0, 14, 239, 14); //setzt die Position und Länge der Linie
  myGLCD.setColor( 255, 0, 0);     //setzt die Farbe des Farbbalkens oben
 myGLCD.fillRect(0, 0, 239, 12);  //setzt die Größe und Position des Hintergrundes des Balkens oben
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("Einstellungen", CENTER, 3);
  myGLCD.setBackColor(0, 0, 0);
   myGLCD.setFont(Sinclair_M);
  myGLCD.print("Einstellungen", CENTER, 30);
   myGLCD.setFont(Sinclair_S);
  /*  myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.print("Touch screen to continue", CENTER, 305);*/
   myGLCD.setBackColor(0, 0, 0);  //setzt die hinterleget Farbe des Textes
   myGLCD.print("jens.knipphals@gmx.de", CENTER, 290);
   //waitForTouch();
     myGLCD.setColor(0, 0, 255);
    myGLCD.fillRoundRect (10, 60, 60, 10);
    myGLCD.setColor(255, 255, 255);
    myGLCD.drawRoundRect (10, 60, 60, 10);
    //myGLCD.print("1", 28, 27);
// waitForTouch(); 
  waitForIt(10, 10, 60, 60);

}

void loop ()
{
 if (myTouch.dataAvailable())  {
 
   mode = (mode + 1) % MODE_COUNT;
}
 
 
  if (mode == 0) {
  startseite();
} else if (mode == 1) {
  menue();
} else if (mode == 2) {
  setting();


}}

Gruß Jens
18  International / Deutsch / Re: Tochscreen-Display mit Menue-Steuerung on: August 14, 2012, 04:07:40 pm
Hallo pylon,
danke für die Erklärungen. So langsam verstehe ich das Prinzip. Ich habe den loop mal für die "startseite" eingefügt. Hier sollte  einfach nur irgendwo in das Display gedrückt werden und dann auf die Seite "menue" wechseln.
Ich bekomme dann die im Bild nachfolgende Fehlermeldung. Muss für mode nicht noch irgendetwas definiert oder gesetzt werden?
Genau das war glaube ich das, was noch gefehlt hat. Auf jedenfall kommt keine Fehlermeldung(Bild "touch1") mehr.
Habe noch folgendes eingefügt:
Code:
int mode();
Was macht dieser Eintrag eigentlich?

Nun habe ich überlegt, was in diesem Teil passiert.
Quote
]if (myTouch.dataAvailable())  {
 
   mode = (mode + 1) % MODE_COUNT;
}

Hier wird doch der touch auf dem Bildschirm registriert und nachfolgend der mode berechnet. Richtig?
Quote
if (myTouch.dataAvailable())

Das Ergebnis von dem mode, müsste dann so aussehen:
 
Quote
mode = (mode + 1) % MODE_COUNT;
mode= (0+1)/3
mode=0
also springt es wieder auf die "startseite" zurück. Aber es soll auf die Seite "menue" springen.

Nun habe ich mal den Wert auf 4 erhöht und das Ergebnis wäre doch 1 oder?
Quote
mode = (mode + 4) % MODE_COUNT;
mode= (0+3)/3
mode=1
Quote
Ja, das ist richtig. Hier wird die "mode"-Variable eins hochgezählt und gleichzeitig bei einer Überschreitung der MODE_COUNT-Grenze wieder auf 0 zurückgesetzt. Dies geschieht mittel der sog. Modulo-Anweisung. Dabei wird der erste Operand ganzzahlig durch den zweiten geteilt, aber das Resultat ist nicht das Ergebnis der Division, sondern der Rest, der nicht ganzzahlig geteilt werden kann:

5 % 2 = 1
14 % 4 = 2
15 % 5 = 0
4 % 3 = 1
und damit müsste es doch auf die Seite "menue" springen, was es aber nicht macht.
Code:
else if (mode == 1) {
  menue();
}
Gruß Jens
19  International / Deutsch / Re: Tochscreen-Display mit Menue-Steuerung on: August 13, 2012, 06:23:44 pm
Hallo pylon,
vielen Dank für deine Unterstützung. Ich hatte schon die Hoffnung aufgegeben, das mir jemand mal unter die Arme greift.
Ich bin blutiger Anfänger, deshalb stellen sich für mich noch ab und an einige Fragen.
Vielleicht kann mir der ein oder andere aus dem Forum diese erklären.
Wofür ist dieser Befehl?
Code:
#define MODE_COUNT 3
Ich erkläre mir das so, dass dieser einen Counter(Zähler) definiert. Wozu steht der Begriff MODE und der Begriff COUNT und wofür steht die Zahl 3?
Ich gehe einmal davon aus, dass dieser Befehl wie folgt in meinem Sketch an dieser Stelle eingebunden wird, wie auch die Steuerbefehle des Display und des Touchscreen eingebunden sind richtig?
Code:
// Remember to change the next line if you are using as 16bit module!
#include <ITDB02_Graph16.h>
#include <ITDB02_Touch.h>
#include <avr/pgmspace.h>
#define MODE_COUNT 3

Gehe ich richtig in der Annahme, dass ich "buttonpress" gegen die Touchfunktion eines Buttons ersetzen muss und gehört dieser Teil in den loop Bereich? Was passiert hier in diesem Teil?
Code:
if (buttonpress) {
  mode = (mode + 1) % MODE_COUNT;
}
Also so: und das für jeden Button einzeln?
Code:
if (if (myTouch.dataAvailable())
    {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
     
      if ((y>=10) && (y<=60))  // vertikaler Abstand (von oben)
      {        if ((x>=179) && (x<=239))  // horizontaler Abstand (von rechts)
       
          waitForIt(10, 10, 60, 60); //Größe des roten Umrandung
      }}) {
  mode = (mode + 1) % MODE_COUNT;
}
Oder wäre das eleganter? für jeden Button und dann durchnummeriert?
Code:
void buttonpress1()
{
if (myTouch.dataAvailable())
    {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
     
      if ((y>=10) && (y<=60))  // vertikaler Abstand (von oben)
      {        if ((x>=179) && (x<=239))  // horizontaler Abstand (von rechts)
       
          waitForIt(10, 10, 60, 60); //Größe des roten Umrandung
      }}}
Code:
void buttonpress2()
{
if (myTouch.dataAvailable())
    {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
     
     if ((y>=80) && (y<=130))  // vertikaler Abstand (von oben)
      {        if ((x>=179) && (x<=239)))  // horizontaler Abstand (von rechts)
       
          waitForIt(10, 10, 60, 60); //Größe des roten Umrandung
      }}}

Als letztes dann noch dieser Teil:
Code:
if (mode == 0) {
  startseite();
} else if (mode == 1) {
  menue();
} else if (mode == 2) {
  setting();
} else {
  show_error();
}

Wie du schon erklärt hast werden in diesem Teil , die einzelnen Seiten (startseite;menue;setting) den mode (z.B mode==0 ist die Startseite) zugeordnet und angezeigt. Aber woher kommt denn jetzt die Zuordnung eines Button zu den mode==0?

Ich hoffe, ich verschrecke mit den vielen und wahrscheinlich dilettantischen Fragen niemanden und verbaue mir so eine Antwort auf mein Problem. Ich möchte noch sehr viel zu dem Arduino lernen. Als Anfänger ist das ein oder andere aber immer noch wie bömische Dörfer. smiley-eek-blue
Es wäre auch schon gut, wenn der ein oder andere nur einen Teil beantworten würde und dann letztendlich ein ganzes Beantwortung dabei heraus käme.  smiley
Vielen Dank, schon mal.
Gruß Jens
20  International / Deutsch / Re: Tochscreen-Display mit Menue-Steuerung on: August 10, 2012, 10:21:19 am
Irgendwie fehlte da noch das eine Bild.
Anbei

Gruß Jens
21  International / Deutsch / Tochscreen-Display mit Menue-Steuerung on: August 10, 2012, 10:16:25 am
Hallo mal wieder
Ich arbeite gerade an ein Projekt, welches ein Menü aus mehreren Seiten auf einem Touchscreen-Display darstellen und steuern soll. Es sollen später auf einer Seite Einstellungen (z.B. Uhrzeit) vorgenommen werden und auf einer anderen Seite einige Daten angezeigt werden.

Quote
Ich habe soweit als erstes eine Startseite erstellt, die durch einen einfachen Touch auf das Display zur nächsten Seite "Menue" (menue) springt. Dort habe ich zwei Button erstellt, die im Moment des Betätigens einen roten Rand haben, damit die Betätigung auch visuell erkennbar ist. Beim Betätigen des oberen Button, springt die Anzeige auf die Seite "Einstellungen" (setting). Beim Betätigen des unteren Button, springt die Anzeige auf die Seite "Startseite". Auf der Seite "Einstellungen" gibt es nur einen Button, der beim Betätigen die Seite "Menue" springt.

Nun zum Problem: Ich drücke auf der Startseite auf das Display>das Display springt auf die Menue-Seite. Danach drücke ich auf dieser Seite den unteren Button > das Display springt auf die Einstellungen-Seite. Drücke ich auf dieser Seite den einzelnen Button>springt das Display wieder auf die Startseite. Dort ins Display gedrückt>springt das Display wieder auf die Menue-Seite.
Bis jetzt ist alles so wie es sein soll. Nur geht es hier nicht mehr weiter. Ich kann nur noch den oberen Button betätigen(wird auch rot umrandet), aber leider springt das Display immer wieder in sich selbst(Menue-Seite) und der andere Button hat keine Funktion mehr.
Das selbe habe ich auch wenn ich von der Startseite>Menue-Seite>oberer Button drücken>Einstellungen-Seite>einziger Button drücken(soll eigentlich auf die Menue-Seite springen), springt das Display immer wieder in sich selbst(Einstellungen-Seite).

Anbei unten der Sketch und ein paar Bilder von den Screens.

Ich vermute einmal, dass im loop irgendetwas faul ist oder etwas fehlt und ich komme nicht drauf.

Hat vielleicht jemand eine Idee?

Vielen Dank schon mal.

Code:
// Remember to change the next line if you are using as 16bit module!
#include <ITDB02_Graph16.h>
#include <ITDB02_Touch.h>
#include <avr/pgmspace.h>

// Schriftarten in Benutzung
extern uint8_t SmallFont[];
extern uint8_t Sinclair_S[];
extern uint8_t Sinclair_M[];
extern uint8_t BigFont[];


//Pinbelegung für das Display+Touchscreen
//myGLCD(RS,WR,CS,RST,ALE,mode);
ITDB02 myGLCD(A1,A2,A0,A3,A5,ITDB32S);
//myTouch(TCLK,TCS,DIN,DOUT,IRQ);
ITDB02_Touch  myTouch(13,10,11,12,A4);


//Konstanten
int cx, cy;
int rx[10], ry[10];
float px, py;
int ox, oy;
int x, y;
char stCurrent[20]="";
int stCurrentLen=0;
char stLast[20]="";


void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(Sinclair_S);

  myTouch.InitTouch();
  myTouch.setPrecision(PREC_LOW);
}

/*void waitForTouchRelease()
{
  // Wait for release
  while (myTouch.dataAvailable()==true)
    myTouch.read();
}*/

void waitForTouch()
{
  while (myTouch.dataAvailable() == true)
  {
    myTouch.read();
  }
  while (myTouch.dataAvailable() == false) {}
  while (myTouch.dataAvailable() == true)
  {
    myTouch.read();
  }}
 
 
//zeichnet eine rote Umrandung, wenn der Button gedrückt wird
void waitForIt(int x1, int y1, int x2, int y2)
{
  myGLCD.setColor(255, 0, 0);
  myGLCD.drawRoundRect (x1, y1, x2, y2);
  while (myTouch.dataAvailable())
    myTouch.read();
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawRoundRect (x1, y1, x2, y2);
}

//Aufbau der Startseite
void startseite()

{
  myGLCD.setColor( 0, 0, 0);  //setzt die Farbe im Hintergrund
  myGLCD.fillRect(0, 0, 239, 320);  //setzt die Größe und Position des Hintergrundes
  myGLCD.setColor(255, 255, 255);  //setzt die Schriftfarbe
  myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.drawLine(0, 14, 239, 14); //setzt die Position und Länge der Linie
  myGLCD.setColor( 0, 0, 237);
 myGLCD.fillRect(0, 0, 239, 12);  //setzt die Größe und Position des Hintergrundes
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("Startseite by Knippi", CENTER, 3);
  myGLCD.setBackColor(0, 0, 0);
   myGLCD.setFont(Sinclair_M);
  myGLCD.print("Startseite", CENTER, 30);
   myGLCD.setFont(Sinclair_S);
    myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.print("Touch screen to continue", CENTER, 305);
   myGLCD.setBackColor(0, 0, 0);  //setzt die hinterleget Farbe des Textes
   myGLCD.print("jens.knipphals@gmx.de", CENTER, 290);
  waitForTouch();
   
}

//Aufbau der Menueseite
void menue()

{
  myGLCD.setColor( 0, 0, 0);  //setzt die Farbe im Hintergrund
  myGLCD.fillRect(0, 0, 239, 320);  //setzt die Größe und Position des Hintergrundes
  //myGLCD.setColor(255, 255, 255);  //setzt die Schriftfarbe
  myGLCD.setBackColor(255, 255, 0);  //setzt die hinterleget Farbe des Textes
  myGLCD.drawLine(0, 14, 239, 14); //setzt die Position und Länge der Linie
  myGLCD.setColor( 255, 255, 0);     //setzt die Farbe des Farbbalkens oben
 myGLCD.fillRect(0, 0, 239, 13);  //setzt die Größe und Position des Hintergrundes des Balkens oben
  myGLCD.setColor(0, 0, 0);       //setzt die Schriftfarbe für den nachfolgenden Text
  myGLCD.print("Menue", CENTER, 3);
  myGLCD.setBackColor(0, 0, 0);   //setzt die Schriftfarbe für den nachfolgenden Texte
   myGLCD.setFont(Sinclair_M);
    myGLCD.setColor(255, 255, 255);
  myGLCD.print("Menue", CENTER, 30);
   myGLCD.setFont(Sinclair_S);
   /* myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.print("Touch screen to continue", CENTER, 305);*/
   myGLCD.setBackColor(0, 0, 0);  //setzt die hinterleget Farbe des Textes
   myGLCD.print("jens.knipphals@gmx.de", CENTER, 290);
   //waitForTouch();
      myGLCD.setColor(0, 0, 255);
    myGLCD.fillRoundRect (10, 60, 60, 10);
    myGLCD.setColor(255, 255, 255);
    myGLCD.drawRoundRect (10, 60, 60, 10);
     myGLCD.setColor(0, 0, 255);
    myGLCD.fillRoundRect (60, 130, 10, 80);
    myGLCD.setColor(255, 255, 255);
    myGLCD.drawRoundRect (60, 130, 10, 80);
    //myGLCD.print("1", 28, 27);
// waitForTouch();   
  waitForIt(10, 10, 60, 60);
}

//Aufbau der Settingseite
void setting()

{
  myGLCD.setColor( 0, 0, 0);  //setzt die Farbe im Hintergrund
  myGLCD.fillRect(0, 0, 239, 320);  //setzt die Größe und Position des Hintergrundes
  myGLCD.setColor(255, 255, 255);  //setzt die Schriftfarbe
  myGLCD.setBackColor(255, 0, 0);  //setzt die hinterleget Farbe des Textes
  myGLCD.drawLine(0, 14, 239, 14); //setzt die Position und Länge der Linie
  myGLCD.setColor( 255, 0, 0);     //setzt die Farbe des Farbbalkens oben
 myGLCD.fillRect(0, 0, 239, 12);  //setzt die Größe und Position des Hintergrundes des Balkens oben
  myGLCD.setColor(255, 255, 255);
  myGLCD.print("Einstellungen", CENTER, 3);
  myGLCD.setBackColor(0, 0, 0);
   myGLCD.setFont(Sinclair_M);
  myGLCD.print("Einstellungen", CENTER, 30);
   myGLCD.setFont(Sinclair_S);
  /*  myGLCD.setBackColor(0, 0, 237);  //setzt die hinterleget Farbe des Textes
  myGLCD.print("Touch screen to continue", CENTER, 305);*/
   myGLCD.setBackColor(0, 0, 0);  //setzt die hinterleget Farbe des Textes
   myGLCD.print("jens.knipphals@gmx.de", CENTER, 290);
   //waitForTouch();
     myGLCD.setColor(0, 0, 255);
    myGLCD.fillRoundRect (10, 60, 60, 10);
    myGLCD.setColor(255, 255, 255);
    myGLCD.drawRoundRect (10, 60, 60, 10);
    //myGLCD.print("1", 28, 27);
// waitForTouch(); 
  waitForIt(10, 10, 60, 60);

}

void loop ()
{
  startseite();
  menue();
   // Betätigunsfunktion des oberer Button auf der Menueseite
    while (true)
  {
    if (myTouch.dataAvailable())
    {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
     
      if ((y>=10) && (y<=60))  // vertikaler Abstand (von oben)
      {        if ((x>=179) && (x<=239))  // horizontaler Abstand (von rechts)
       
          waitForIt(10, 10, 60, 60); //Größe des roten Umrandung
          setting();
      }
      //Betätigunsfunktion des unteren Button auf der Menueseite
      else if((y>=80) && (y<=130))  // vertikaler Abstand (von oben)
      {        if ((x>=179) && (x<=239))  // horizontaler Abstand (von rechts)
       
          waitForIt(10, 80, 60, 130); //Größe des roten Umrandung
   
startseite();
       
 
  setting();
  //Betätigunsfunktion des Button auf der Settingseite
  {
    if (myTouch.dataAvailable())
    {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
     
      if ((y>=10) && (y<=60))  // vertikaler Abstand (von oben)
      {        if ((x>=179) && (x<=239))  // horizontaler Abstand (von rechts)
       
          waitForIt(10, 10, 60, 60); //Größe des roten Umrandung
          menue();
   delay(10);       
}}}}}}}
22  International / Deutsch / Re: Halogentrafo schalten... on: August 09, 2012, 03:24:00 am
Hallo,
es gibt hier: http://www.pollin.de/shop/suchergebnis.html?S_TEXT=Stromstoss-Schalter%2C+230+V%7E%2C+1+Schaltkontakt&recommend=true ein paar Stromstoss-Schalter für kleines Geld smiley-grin, womit du direkt mit 12V und deinem Taster die 230V für deine Halogenlampen schalten kannst.
Gruß Jens
23  Using Arduino / Displays / Graphic Display LCD4884 on: June 29, 2012, 04:45:11 pm
Hello,
I have read this post(http://arduino.cc/forum/index.php/topic,95007.0.html and it's almost exactly what I was looking for a long time.
From this it is also the following sketch:
Code:
#include <Wire.h>
#include <LiquidCrystal.h>
#define DS1307_ADDRESS 0x68  // This is the I2C address

 // SainSmart LCD 16x2
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

 // Arduino Mega 2560
const int Blue1Pin = 2;
const int Blue2Pin = 3;
const int White3Pin = 11;
const int White4Pin = 12;
const int Night1Pin = 13;
const unsigned long HOUR = 60 * 60;
const unsigned long MINUTE = 60;
const int TARGET_BRIGHTNESS = (255 * 3) / 4;  // Target brightness is 3/4 of full

void setup()

  lcd.begin(16, 2);
   
  Wire.begin();
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

void loop()
{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("***");
  lcd.setCursor(4,0);

  /////  Get time from RTC into RTCHour, RTCMinute, RTCSecond

   // Set the register pointer to 0 (Second)
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write((byte)0);
  Wire.endTransmission();

  //  Read Second, Minute, and Hour
  Wire.requestFrom(DS1307_ADDRESS, 3);

  int RTCSecond = bcdToDec(Wire.read());
  int RTCMinute = bcdToDec(Wire.read());
  int RTCHour = bcdToDec(Wire.read() & 0b111111); //24 hour time

// write Time to LCD XX:XX:XX
  if(RTCHour < 10) {
    lcd.print("0");
  }
lcd.print(RTCHour);
lcd.print(":");
  if(RTCMinute < 10) {
    lcd.print("0");
  }
lcd.print(RTCMinute);
lcd.print(":");
  if(RTCSecond < 10) {
    lcd.print("0");
  }
lcd.print(RTCSecond);
lcd.setCursor(13,0);
lcd.print("***");
  unsigned long time = RTCHour * HOUR + RTCMinute * MINUTE + RTCSecond;  // Time in seconds
 
// write value within the timeframe to PWM
  analogWrite(Blue1Pin,   brightness(time, 7*HOUR,                 19*HOUR));
  analogWrite(Blue2Pin,   brightness(time, 7*HOUR+30*MINUTE,                 19*HOUR+30*MINUTE));
  analogWrite(White3Pin, brightness(time, 8*HOUR+30*MINUTE,                 16*HOUR+30*MINUTE));
  analogWrite(White4Pin, brightness(time, 9*HOUR+30*MINUTE,                 17*HOUR+30*MINUTE));
  analogWrite(Night1Pin, TARGET_BRIGHTNESS);

// write actual value in % to LCD (max. 255 = 100%)
lcd.setCursor(0,1); //White3Pin
if(((brightness(time,  8*HOUR+30*MINUTE,                 16*HOUR+30*MINUTE))*100/255) < 10) {
    lcd.print("0");
  }
lcd.print((brightness(time,  8*HOUR+30*MINUTE,                 16*HOUR+30*MINUTE))*100/255);
lcd.print("%");

lcd.setCursor(4,1); //Blue1Pin
if(((brightness(time, 7*HOUR,                 19*HOUR))*100/255) < 10) {
    lcd.print("0");
  }
lcd.print((brightness(time, 7*HOUR,                 19*HOUR))*100/255);
lcd.print("%");

lcd.setCursor(8,1); //Blue2Pin
if(((brightness(time, 7*HOUR+30*MINUTE,                 19*HOUR+30*MINUTE))*100/255) < 10) {
    lcd.print("0");
  }
lcd.print((brightness(time, 7*HOUR+30*MINUTE,                 19*HOUR+30*MINUTE))*100/255);
lcd.print("%");

lcd.setCursor(12,1); //White4Pin
if(((brightness(time, 9*HOUR+30*MINUTE,                 17*HOUR+30*MINUTE))*100/255) < 10) {
    lcd.print("0");
  }
lcd.print((brightness(time, 9*HOUR+30*MINUTE,                 17*HOUR+30*MINUTE))*100/255);
lcd.print("%");

  delay(1000);
}

byte brightness(unsigned long time, unsigned long fadeUpStart, unsigned long fadeDownStart)
{
  //  Mid day, light is at maximum brightness
  if (time >= fadeUpStart + HOUR  && time <= fadeDownStart)
    return TARGET_BRIGHTNESS;

  // Dawn:  fade up the light
  if (time >= fadeUpStart && time <= fadeUpStart + HOUR)  // Fading up
  {
    unsigned long seconds = time - fadeUpStart;  // Number of seconds into the fade time
    return TARGET_BRIGHTNESS * seconds / (HOUR);  // Fade up based on portion of interval completed.
  }

  // Evening: Fade down the light
  if (time >= fadeDownStart && time <= fadeDownStart + HOUR)  // Fading down
  {
    unsigned long seconds = (fadeDownStart + (HOUR)) - time;  // Number of seconds remaining in the fade time
    return TARGET_BRIGHTNESS * seconds / (HOUR);  // Fade down based on portion of interval left.
  }

  // The remaining times are night and the lights is off
  return 0;  // Shouldn't get here
}

I'm from Germany and unfortunately my English is really bad. So I write it with a translation program. I would like to display the light levels (brightness) in (%) on my display. But I have another display, as will be controlled in the sketch. I've rewritten the first sketch, so I light levels (brightness) in (%) in the serial monitor displays and get it working.
Unfortunately I can not get the commands in exchange Serial.print lcd.print and everything works.
I have the following graphic display http://tronixstuff.wordpress.com/2011/03/12/the-dfrobot-lcd4884-lcd-shield/ and I'm glad that I get message with a RTC (DS1307) the date and time .
Looks like this:
Code:
#include <Wire.h>
#include <RTClib.h>

#include "LCD4884.h"y


RTC_DS1307 RTC;
DateTime now;

const char LOGFORMAT[] = "%02u.%02u.%04u     %02u:%02u:%02u";

void setup(){
 //Serial.begin(9600);
    Wire.begin();
    RTC.begin();
lcd.LCD_init();
    lcd.LCD_clear();
    lcd.backlight(ON);

}

void loop()  {
    lcd.LCD_write_string(0, 0,"LED-Steuerung", MENU_HIGHLIGHT);
    lcd.LCD_write_string(8, 2,"c by Knippi", MENU_NORMAL);
    now=RTC.now();
   
  static char dataString[0];
    sprintf(dataString, LOGFORMAT, now.day(), now.month(), now.year(),now.hour(),now.minute(),now.second() );
       
   lcd.LCD_write_string(10, 4,dataString, MENU_NORMAL);


}

I've tried a lot and I think it must be in this part of the sketch to be installed, but how and what values​​?
Code:
static char dataString[0];
    sprintf(dataString, LOGFORMAT, now.day(), now.month(), now.year(),now.hour(),now.minute(),now.second() );
       
   lcd.LCD_write_string(10, 4,dataString, MENU_NORMAL);

I hope it has an idea. smiley-grin
Thank you ever.
Jens
24  Using Arduino / LEDs and Multiplexing / Re: time controlled High Power LED dimming on: June 28, 2012, 08:13:02 am
Hello,
I have read this post and it's almost exactly what I was looking for a long time.
I'm from Germany and unfortunately my English is really bad. So I write it with a translation program. I would like to display the light levels (brightness) in (%) on my display. But I have another display, as will be controlled in the sketch. I've rewritten the first sketch, so I light levels (brightness) in (%) in the serial monitor displays and get it working.
Unfortunately I can not get the commands in exchange Serial.print lcd.print and everything works.
I have the following graphic display http://tronixstuff.wordpress.com/2011/03/12/the-dfrobot-lcd4884-lcd-shield/ and I'm glad that I get message with a RTC (DS1307) the date and time .
Looks like this:
Code:
#include <Wire.h>
#include <RTClib.h>

#include "LCD4884.h"y


RTC_DS1307 RTC;
DateTime now;

const char LOGFORMAT[] = "%02u.%02u.%04u     %02u:%02u:%02u";

void setup(){
 //Serial.begin(9600);
    Wire.begin();
    RTC.begin();
lcd.LCD_init();
    lcd.LCD_clear();
    lcd.backlight(ON);

}

void loop()  {
    lcd.LCD_write_string(0, 0,"LED-Steuerung", MENU_HIGHLIGHT);
    lcd.LCD_write_string(8, 2,"c by Knippi", MENU_NORMAL);
    now=RTC.now();
   
  static char dataString[0];
    sprintf(dataString, LOGFORMAT, now.day(), now.month(), now.year(),now.hour(),now.minute(),now.second() );
       
   lcd.LCD_write_string(10, 4,dataString, MENU_NORMAL);


}

I've tried a lot and I think it must be in this part of the sketch to be installed, but how and what values​​?
Code:
static char dataString[0];
    sprintf(dataString, LOGFORMAT, now.day(), now.month(), now.year(),now.hour(),now.minute(),now.second() );
       
   lcd.LCD_write_string(10, 4,dataString, MENU_NORMAL);

I hope it has an idea.
Thank you ever.
Jens
25  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 11:56:03 am
oder besser gesagt:

Quote
lcd.LCD_write_string( 3, 2, "Hallo brauche", MENU_NORMAL);
  lcd.LCD_write_string(10, 5, "Hilfe :-)", MENU_HIGHLIGHT );


Jens
26  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 11:23:40 am
Kann man die Schriftgröße/art im Display verändern?
Ich habe herausgefunden, dass "Highlight" den Text schwarz hinterlegt und "Normal" der Text normal anzeigt.
Gibt es noch andere Möglichkeiten?
Kennt jemand eine Übersicht der Möglichkeiten?

Quote
lcd.LCD_write_string(10, 5, dataString, MENU_HIGHLIGHT );

Gruß Jens
27  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 07:58:02 am
Danke für die Erklärung.
Ich habe gesehen, dass man mit der DS1307new auch den Wochentag mit angezeigt bekommt. Kann man so etwas auch mit der RTClib und wenn ja, wie funktioniert das?
Jens
28  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 05:10:47 am
Wofür sind die Zahlen in den eckigen Klammern und kann man diese frei wählen?

Quote
static char dateString[11];
29  International / Deutsch / Re: DS1307 Uhrzeit und Datum einstellen on: June 21, 2012, 03:08:33 am
Hat alles geklappt.  smiley-grin Danke.
Gibt es eigenlich die Möglichkeit, im "LOGFORMAT" das Datum und die Uhrzeit getrennt auszulesen und damit im Display diese beiden Formate in getrennten Zeilen anzeigen zu lassen?
Jens
30  International / Deutsch / Re: Brauche mal Hilfe bei Schaltung -> ganz einfach on: June 20, 2012, 10:01:45 am
Du hast die LED in Reihe 6 in C+D gesteckt. Ich habe zwar kein Breadboard, aber ich meine gelesen zu haben, dass die Reihen durchkontaktiert sind. Also z.B. Reihe 6;ABCDE alle miteinander verbunden. Somit kann deine LED nicht blinken.
Wenn die deine orange Brücke eine Reihe weiter vor setzt, also in Reihe5 zu Minus und die LED in die Reihe 5 D und Reihe 6 D steckst, sollte es funktionieren.
Gruß Jens
Pages: 1 [2] 3