INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Keypad auslesen
11.02.2019, 19:20 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2019 19:26 von Dieter_T.)
Beitrag #1
Keypad auslesen
Irgendwie sehe ich meinen Fehler nicht.

Code:
char buf[100];
volatile byte pos;
volatile boolean fertig = false;
volatile boolean holeZahl = false;



#include <Metro.h>
#include <Wire.h>
#include <MyKeypad_I2C.h>

MyKeypad_I2C MyKey(0x38); //I2C Adresse des Portexpanders PCF8574
Metro TastaturZyklusMetro(150); //Festlegung des Tastaturabfragezyklus (150 ms)

byte Taste;

void setup() {
  Serial.begin(9600);
  //Eventuell Anpassung der Tastencodes
  MyKey.clearAllKeyCodes(); //Loeschen der in der Library definierten Tastencodes
  MyKey.setKeyCode(0xEE, 1);  //Tastencode 0xDE, Rueckgabewert 1
  MyKey.setKeyCode(0xED, 2);  //Tastencode 0xDE, Rueckgabewert 2
  MyKey.setKeyCode(0xEB, 3);  //Tastencode 0xDE, Rueckgabewert 3
  MyKey.setKeyCode(0xDE, 4);  //Tastencode 0xDE, Rueckgabewert 4
  MyKey.setKeyCode(0xDD, 5);  //Tastencode 0xDE, Rueckgabewert 5
  MyKey.setKeyCode(0xDB, 6);  //Tastencode 0xDE, Rueckgabewert 6
  MyKey.setKeyCode(0xBE, 7);  //Tastencode 0xDE, Rueckgabewert 7
  MyKey.setKeyCode(0xBD, 8);  //Tastencode 0xDE, Rueckgabewert 8
  MyKey.setKeyCode(0xBB, 9);  //Tastencode 0xDE, Rueckgabewert 9
  MyKey.setKeyCode(0x7D, 10); //Tastencode 0xDE, Rueckgabewert 10
  MyKey.setKeyCode(0x7E, 11); //Tastencode 0xDE, Rueckgabewert *
  MyKey.setKeyCode(0x7B, 12); //Tastencode 0xDE, Rueckgabewert #
  MyKey.setKeyCode(0xE7, 13); //Tastencode 0xDE, Rueckgabewert A
  MyKey.setKeyCode(0xD7, 14); //Tastencode 0xDE, Rueckgabewert B
  MyKey.setKeyCode(0xB7, 15); //Tastencode 0xDE, Rueckgabewert C
  MyKey.setKeyCode(0x77, 0);  //Tastencode 0xDE, Rueckgabewert D
  //..........................,..............
  if (MyKey.isReady()) Serial.println("Tastatur ok"); //Abfrage, ob I2C-Schnittstelle ansprechbar
  else Serial.println("Tastatur Fehler!!");
}





/*************************************(Hauptprogramm)****************************​**********/
void loop() {

  if (TastaturZyklusMetro.check()) //Zykluszeit für Tastaturabfrage abgelaufen?
  {
    //Abfrage der Tastatur, wird Taste länger gedrückt, Änderung des Rückgabewertes nach 5 Zyklen
    Taste = MyKey.receiveKey(5);
    if (Taste < 255)  Serial.println(Taste);
    if (Taste == 13) holeZahl = true;
    if (holeZahl == true) Hole_Zahl(Taste);
  }

}
/*************************************( End Hauptprogramm)**************************************/

void Hole_Zahl (byte Tasten_Wert)
{
  if (Tasten_Wert >= 255) return;

  byte c = Tasten_Wert;  //kopieren der Daten von SPI Buffer
  Serial.print("Tasten_Wert ----> ");
  Serial.println(Tasten_Wert);
  if (pos < (sizeof(buf) - 1)) buf[pos++] = c;
  if (c == 12) fertig = true;


  if (fertig)
  {
    buf[pos] = 0;
    Serial.println (buf);
    pos = 0;
    fertig = false;
    holeZahl = false;
  }


}

Tasten_Wert ----> 12


ist die Ausgabe anstatt ein Zahlen wert mit 3 Zahlen

Der Code ansonsten ist ok, das Programm macht genau das was es soll.
wenn ich den Tastenwert von 12 habe soll er mir den char aus geben aber es kommen nur die unlesbaren rauten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:26
Beitrag #2
RE: Keypad auslesen
Gib uns mal einen Link auf die verwendeten Libs.
Wie hast Du das Keypad (welches - Link bitte) angeschlossen?
Ich sehe nicht, dass Du mit Interrupts arbeitest. Warum sind die Variablen dann volatile?

Deine Kommentare bei den Tasten passen nicht zum Inhalt.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:30 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2019 19:33 von Dieter_T.)
Beitrag #3
RE: Keypad auslesen
(11.02.2019 19:26)Tommy56 schrieb:  Gib uns mal einen Link auf die verwendeten Libs.
Wie hast Du das Keypad (welches - Link bitte) angeschlossen?
Ich sehe nicht, dass Du mit Interrupts arbeitest. Warum sind die Variablen dann volatile?

Deine Kommentare bei den Tasten passen nicht zum Inhalt.

Gruß Tommy

http://m.arduino-projekte.webnode.at/meine-libraries/

Das Programm ist soweit sonst ok hab eine 4x4 Tastatur über i2c angeschlossen das ist auch alles gut und klappt
volatile wäre hier nicht notwendig

hab eigendlich nur das problem das er mir den char nicht als lesbar ausgibt
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:38
Beitrag #4
RE: Keypad auslesen
(11.02.2019 19:30)Dieter_T schrieb:  Das Programm ist soweit sonst ok hab eine 4x4 Tastatur über i2c angeschlossen das ist auch alles gut und klappt

hab eigendlich nur das problem das er mir den char nicht als lesbar ausgibt
Das verstehe ich nicht.

Ohne einen Blick in die MyKeypad_I2C kann ich da nichts sagen und die finde ich in der Website nicht.
Ich würde sagen, Du gibst nicht die richtigen Zeichen für die Keys vor, z.B. ist 1 != '1'.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:42 (Dieser Beitrag wurde zuletzt bearbeitet: 11.02.2019 19:42 von Dieter_T.)
Beitrag #5
RE: Keypad auslesen
http://m.arduino-projekte.webnode.at/mei...-tastatur/

da ist die lib drin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:44
Beitrag #6
RE: Keypad auslesen
Ok. Dann gib doch mal das Zeichen an, was Du bekommen willst:
Code:
MyKey.setKeyCode(0xEE, '1');
...
MyKey.setKeyCode(0x77, 'D');

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:45
Beitrag #7
RE: Keypad auslesen
Tommy56,
diese Libs läuft im Gegensatz zu vielen getesteten Libs super zuverlässig, aber die Abfrage
if (c == 12) fertig = true;
geht ja auch soweit
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.02.2019, 19:51
Beitrag #8
RE: Keypad auslesen
Was willst Du uns damit sagen?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Zeit vom Nextion Enhanced mit Arduino auslesen MarkoM 36 1.241 08.02.2019 10:06
Letzter Beitrag: MarkoM
  2 Pt1000 über externen AD wandler auslesen Noob63 16 997 15.11.2018 20:10
Letzter Beitrag: ardu_arne
  mcp2515 CAN BUS nur eine ID auslesen Golf_Cabrio 6 679 24.10.2018 20:51
Letzter Beitrag: Golf_Cabrio
  LCD Keypad unvollständige Anzeige MarioE 4 559 18.07.2018 15:16
Letzter Beitrag: MarioE
  Sensor mit 10 Hz auslesen Olafson Larson 7 968 05.07.2018 15:59
Letzter Beitrag: Tommy56
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 2.099 05.04.2018 10:54
Letzter Beitrag: amithlon
Star BME680 IAQ Wert auslesen Bitklopfer 9 4.723 18.03.2018 02:33
Letzter Beitrag: Wampo
  Serial auslesen > 64 Byte uk1408 18 2.474 09.03.2018 16:05
Letzter Beitrag: Tommy56
  API auslesen von Coindesk! Gandalf 1 923 15.01.2018 15:34
Letzter Beitrag: Tommy56
  Kleiner Denkanstoß - Auslesen eines KY-040 Encoders Stargazer 26 2.859 20.12.2017 16:13
Letzter Beitrag: Stargazer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste