alles klar, dann kann ich den Taster auch weglassen. Zwei Taster mit gleicher Funktion im Abstand von weniger als 1cm ist überflüssige Redundanz.
So, ich komme schrittweise vorwärts und kann kleine Erfolge verbuchen. Ich kommentiere hier auch mal Deine PN, damit das alles wieder im Zusammenhang steht. Möglicherweise hilft es ja auch anderen.
Wollte ich das? Davon wusste ich nichts. Gut, ich habe ein paar Seiten zurück geblättert und gefunden, was Du meinst. Ebenso die V2.8, die ja im Wiki noch nicht verlinkt ist. Das Auskommentieren von #define KEY_PIN führte allerdings auch in der V2.8 zu einem Fehler. Also bin ich die Schritte durchgegangen und habe erst mal den Code von Holger übernommen:yacco hat geschrieben:Pin 0 und A0 sind der gleiche Pin, auf A0 werden daher immer noch die Tastatureingaben erwartet (wolltest du nichtr0sewhite hat geschrieben:Kann es an KEY_PIN liegen, weil er auf A0 die kaskadierenden Buttons erwartet, wo bei mir Vert liegt? Das würde erklären, warum ich ausschließlich mit vertikalen Bewegungen Veränderungen bewirken kann.
die Zeileersetzen? )Code: Alles auswählen
rawKey = analogRead(KEY_PIN); // read the value from the sensor
Alternativ kannst du auch auf Version 2.8 upgraden und #define KEY_PIN auskommentieren.
Code: Alles auswählen
#ifdef HWKEYS
if (digitalRead(HW_RIGHT) ==0) {result = KEY_RIGHT; }
else if (digitalRead(HW_UP) ==0) {result = KEY_UP; }
else if (digitalRead(HW_DOWN) ==0) {result = KEY_DOWN; }
else if (digitalRead(HW_LEFT) ==0) {result = KEY_LEFT; }
else if (digitalRead(HW_SELECT)==0) {result = KEY_SELECT;}
#else
uint16_t input = analogRead(0); // read the value from the sensor
for (uint8_t k = 0; result < 0 && k < NUM_KEYS; k++) {
if (input < adc_key_val[k]) {
result = k;
}
}
#endif
Code: Alles auswählen
uint16_t input = analogRead(KEY_PIN);
Code: Alles auswählen
uint16_t input = 1023;
Brachte nicht den gewünschten Erfolg. Danach war ich etwas radikaler und habe einfach den kompletten Bereich
Code: Alles auswählen
#else
uint16_t input = analogRead(0); // read the value from the sensor
for (uint8_t k = 0; result < 0 && k < NUM_KEYS; k++) {
if (input < adc_key_val[k]) {
result = k;
}
}

Komischerweise zeigt mir CHECK_INPUT zwar die Joystickbewegungen an, nicht aber den Select-Taster. KEY steht beharrlich auf 0000, funktioniert aber trotzdem. Ich kann in den Menüs herumblättern und mit Select auswählen. Egal, Wenn CHECK_INPUT nicht will, ist das eben kein Drama.
Allerdings kriege ich nun immer noch ständig einen Timeout, wenn ich das LCD an ein MWC-Board anschließe. Möglicherweise liegt es einfach daran, dass ich zuvor mit dem verrücktspielenden Joystick einige Parameter ungewollte verstellt habe, da ich einige Male in die Settings gerutscht bin. Augenblicklich steht da eine Delay Time von 80 und eine Baudrate von 19200. Bei der Baudrate tippe ich einfach mal auf 115200, doch welche Delay Time ist Standard und wo finde ich sie notfalls im Sketch? Mit dem Jostick kann ich den Wert nämlich nur in Schritten von 50ms ändern.
EDIT: Nur zur Absicherung: RX und TX müsen zwischen den Arduinos logischerweise gekreuzt sein, oder?