Und ich wiedermal,
diesmal aber mit einer Frage, die etwas komplizierter sein dürfte.
Bitte das angefügte Bild betrachten.
Ich habe eine 4D Systems Display und benutze die genieArduino Lib.
Was habe ich:
Ich steuere 4 Aktuatoren und deren Geschwindigkeit an einem Fahrzeug. (Klappt alles schon wunderbar, danke nochmal an dieser Stelle für Eure absolut tolle Hilfe.)
Diese sollen auf dem „Set Bildschirm“ siehe Foto Anhang gestellt werden.
Hier ist erstmal nur ein Aktuator zu sehen.
Die blaue Anzeige ist die IST Stellung und Verfahr Geschwindigkeit in Porzent (0-100%)
Die rote Anzeige ist die „Set“ Anzeige. Auf die ist ein „Touch“ Button gelegt.
Was soll nun passieren:
Ich tippe auf das rote Feld, das ich ändern will. -> Tastatur, wie auf dem Bild erscheint.--> Ich gebe eine Wert zwischen 0-100% ein, drücke SET. Wird wird im roten Feld angezeigt.
Ich drücke auf das nächste Feld -> mach das selbe, usw usw.....
Wenn ich fertig bin drücke ich den unteren Button und die Werte werden gesetzt.
Das lesen der Touch eingaben und auch der Tastatur klappen einwandfrei.
Was ich nun nicht weiß, wie man so eine Schleife aufbaut und wie man die Werte dem Feld zu weißt, das ich eben angeklickt habe, da die Tastaturwerte ja nur als Zahl „ankommen“
Ich habe versucht, eine Schleife wie folgt aufzubauen, aber wie zu erwarten war, klappt das nicht...
// Touchpad Intput
void handleGenieEvent (void)
{
genieFrame event;
genieDequeueEvent(&event);
int keyboardValue;
// auswahl speed anzeige knots / km/h / m/s
if (event.reportObject.object == GENIE_OBJ_USERBUTTON)
{
if (event.reportObject.index == 0) // Button 0 Change Gauge
{
gauge++;
if ( gauge == 3)gauge = 0;
//Serial.print(gauge);
}
}
// auswahl ende
if (event.reportObject.object == GENIE_OBJ_USERBUTTON)
{
if (event.reportObject.index == 2)
{
if(event.reportObject.object == GENIE_OBJ_KEYBOARD) // If this event is from a Keyboard
{
if (event.reportObject.index == 0) // If from Keyboard0
{
keyboardValue = genieGetEventData(&event); // Get data from Keyboard0
touchKey (keyboardValue); // pass data to the calculatorKey function for processing
}
}
}
}
Und
void touchKey (int key)
{
static int gotDecimal = FALSE ;
static int startNewNumber = TRUE ;
static double multiplier = 1.0 ;
float digit ;
// Eeeeee...
if (isdigit (key))
{
if (startNewNumber)
{
startNewNumber = FALSE ;
multiplier = 1.0 ;
display = 0.0 ;
}
digit = (double)(key - '0') ;
if (multiplier == 1.0)
display = display * 10 + (double)digit ;
else
{
display = display + (multiplier * digit) ;
multiplier /= 10.0 ;
}
genieWriteObject(GENIE_OBJ_LED_DIGITS, 15, display);
Serial.println(display);
return ;
}
}
Den Code hab ich mir aus dem Beispiel eines Taschenrechners mit Arduino und genie zusammen geklaubt
Mir geht jetzt weniger um einem kompletten Code, sondern generell, wie man sowas aufbaut.
Vielen lieben Dank schon mal.
Edit: Leider kann man hier grad keine Bilder posten... Gibt ein Fehlermeldung. Ich lade es wo anderst hoch und verlinke es...