Keypad Shield - kein tastendruck erkannt (bis auf rechts)

Hallo noch einmal,
zum Aufbau:
Ich habe den Arduino Uno, und darauf das Rev3 Motor Shield. An dem Motorshield ist das Keypad Shield mit dem 16x2 Display angeschlossen (LINK).
Als Ausgabe bekomme ich leider immer nur:
"LCD Key Shield"
"Press Key:Right"

Obwohl ich noch gar nichts gedrückt habe, bzw auch andere Tasten drücke.

Code:

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0,0);
  lcd.print("LCD Key Shield");
  lcd.setCursor(0,1);
  lcd.print("Press Key:");
  Serial.begin(9600);
}

void loop() {
  int x;
  x = analogRead (0);
  lcd.setCursor(10,1);
  if (x < 60) {
    lcd.print ("Right ");
  }
  else if (x < 200) {
    lcd.print ("Up    ");
  }
  else if (x < 400){
    lcd.print ("Down  ");
  }
  else if (x < 600){
    lcd.print ("Left  ");
  }
  else if (x < 800){
    lcd.print ("Select");
  }
  Serial.println(x);
}

Aufbau:


Bild auch im Anhang

Serial Print:
immer so bei 34, wenn ich den "Right Button" drücke bei 48/49

Bei den anderen Buttons keine Reaktion

Verhält sich die Ausgabe auch so, wenn das MotorShield nicht "dazwischengeschaltet" ist?
Nicht, daß der CurrentSensePin (A0) von diesem die AnalogWerte irgendwie verfälscht? (Mutmaßung)

Serial Print:
immer so bei 34, wenn ich den "Right Button" drücke bei 48/49

Na dann, passe die Grenzwerte im code an.

bei dir ist offenbar "kleiner" 38 Idle
48/49 right
< und > musst dann wohl auch anpassen.

Wenn du da am A0 noch was angeschlossen hast, warum wundert dich überhaupt, dass das einen Einfluss haben könnte?

Danke für die Antowrt mein Versuch:

Motorshield rausgenommen
Belegung:
Shield - ArduinoUno
A0-A0
D4-D4
D5-D5
D6-D6
D7-D7
Rs-D8
E-D9

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0,0);
  lcd.print("DisplayShield1");
  lcd.setCursor(0,1);
  lcd.print("Press Key:");
  Serial.begin(9600);
}

void loop() {
  int x;
  x = analogRead (0);
  lcd.setCursor(10,1);
  if (x < 60) {
    lcd.print ("Right ");
  }
  else if (x < 200) {
    lcd.print ("Up    ");
  }
  else if (x < 400){
    lcd.print ("Down  ");
  }
  else if (x < 600){
    lcd.print ("Left  ");
  }
  else if (x < 800){
    lcd.print ("Select");
  }
  Serial.println(x);
}

Werte:
keine taste: 219/220
Select:219/220
Left:219/220
Down:219/220
Up:219/220
Right:101
Rst:219/220

Es kann doch nicht sein das alle Knöpfe Kaputt sind ?

@noiasca

Ich habe jetzt dauerhaft ohne Druck der 220 Wert egal ob ich knöpfe (bis auf Right) drücke oder nicht.

dreimal kontrollieren: LCD Board richtig aufgesteckt?

Hast du ein Multimeter zur Verfügung?
Bist du in der Lage die Widerstandswerte bei abgestecktem LCD-Board zu messen?

Wenn der Schaltplan http://image.dfrobot.com/image/data/DFR0009/LCDKeypad%20Shield%20V1.0%20SCH.pdf was taugt:

Prüfspitze fix an GND und AD0 (am ABGESTECKTEM LCD/Button Board)
Right nahe 0 Ohm
Up nahe 330 Ohm
Down nahe 950 OHM
LEFT nahe 2K
Select nahe 5K

alle geschätzt, kann auch anders sein, aber du sollst deutliche unterschiede sehen.

Vielen Dank für die ausführliche Hilfe

Messung zwischen
A0 - Right: 320,5
A0 Right gedrückt: 4,7
A0- Rest~322

EDIT:
So Prüfspitzen bleiben fix an A0 und GND nach diesem Foto
(https://mikroelectron.com/ProImg/X4/61cea21b-6e6a-46a3-aa23-5843f93d3a15.jpg)

nichts gedrückt: 321,4
left-322,3
up-321,1
down-321,2
right-4,5

Hi

Fehler zwischen AD0 und R4 - siehst Du etwas an den Lötstellen von R3?

MfG

passt ihmo nicht ansatzweise zum Schaltbild. Wenn du die Möglichkeit hast, schick das Drumm zurück.
Kauf dir ein schönes Tastenboard (oder noch schönere Tasten :wink: )
Kauf dir ein I2C LCD-Display. Langfristig willst sowieso nicht mit dem 4Bit Modus rumeiern.

noch ein Ansatz: hat vielleicht einer der Taster einen Kurzschluss (ist immer "gedrückt")? Laut Schaltbild tippe ich auf den "up"-Taster... Das würde auch erklären, wieso sich nur bei "right"-gedrückt etwas ändert..