Arduino Codeänderung ---> Anfänger braucht Hilfe !

OP #5006678
Lesenswert?

Hallo
Möchte das RF-Power-Meter mittels Arduino Uno und LCD Keypad realisieren
und brauche Hilfe bei einer Codeänderung. Ich hoffe mir damit die 
Änderung der Hardware (wenn möglich) zu ersparen da ich ohne das 
Display, was leider fest aufgelötet ist, zu entfernen nicht an die 
entspr. Leiterbahnen heran komme. Das mit der anderen Belegung für die 
Display Pin´s habe ich ja noch selbst hinbekommen, obwohl mir nicht ganz 
klar ist warum der R/W Pin bei der orig. Schaltung an D11 liegt. Das 
Display zeigt zumindestens schon mal was an ;-)
Bei der erforderlichen Änderung der UP, Down, Enter/Select (LEFT, RIGTH 
wird nicht benötigt) Tasten hört bei mir dann aber das Verständnis für 
den Code auf obwohl der Code in der KEYPAD_TEST ja eigendlich als 
Beispiel schon vorhanden wäre:
1
// define some values used by the panel and buttons
2
#define btnRIGHT  0
3
#define btnUP     1
4
#define btnDOWN   2
5
#define btnLEFT   3
6
#define btnSELECT 4
7
#define btnNONE   5
8
int lcd_key     = 0;
9
int adc_key_in  = 0;
10

11
int read_LCD_buttons()                    
12
//function for detection of pressed keypad button
13
{
14
 adc_key_in = analogRead(0);              
15
// read the analog value from the sensor 
16
 if (adc_key_in > 1000) return btnNONE;   
17
// We make this the 1st option for speed reasons since 
18
it will be the most likely result
19
 if (adc_key_in < 50)   return btnRIGHT;  
20
 if (adc_key_in < 195)  return btnUP; 
21
 if (adc_key_in < 380)  return btnDOWN; 
22
 if (adc_key_in < 555)  return btnLEFT; 
23
 if (adc_key_in < 790)  return btnSELECT;   
24
 return btnNONE;  // when all others fail, return this...

Es wäre nett wenn mir jemand von den AVR Spezis dabei helfen könnte ;-)

Gruß
Angehängte Dateien:
Beitrag #5006688 wurde von einem Moderator gelöscht.
Gast #5006776
Lesenswert?

R. H. schrieb:
> adc_key_in = analogRead(0);
> ...
> if (adc_key_in < 50)   return btnRIGHT;
Beschaffe einen Schaltplan Deines Keypads!
Ich vermute, dass die Taster mit Widerständen beschaltet sind und sich 
damit am Analogeingang des Arduinos eine, je nach Taste 
unterschiedliche, Spannung messen lässt.

Freunde Dich mit Serial.print an und lasse Dir den Kram zum 
PC-Bildschirm senden, z.B.:
Serial.print("Wert = "); Serial.println(adc_key_in);
Gast #5006933
Lesenswert?

1
// Button pins
2
const byte BTN_UP = A1;
3
const byte BTN_ENTER = A2;
4
const byte BTN_DOWN = A3;

legt die digitalen Eingänge der drei knöpfe fest
1
Bounce button_UP = Bounce();      // Button driver for up button
2
Bounce button_ENTER = Bounce();   // Button driver for enter button
3
Bounce button_DOWN = Bounce();    // Button driver for down button

packt wohl ein Objekt um die Knöpfe, mit dem Tatsturdrücke, Entprellung 
usw. geregelt werden.
https://github.com/thomasfredericks/Bounce2/wiki

Bei Deinem Shield hängen die Tasten alle an einer Perlenschnur am ADC0 
und Du musst jetzt, abhängig vom eingelsenen Wert an ADC0 "A1", "A2", 
"A3" mit den Werten LOW oder HIGH belegen. Dann kannst Du die 
Knopfbehandlung so lassen.
SOnst musst Du dir wohl oder übel was neues mit den Tasten auf dem LCD 
einfallen lassen.

StromTuner
#5007042
Lesenswert?

IN deinem Programm werden die Tasten digital ausgewertet, auch wenn sie 
am Analogeingang hängen.
Wenn du dein Keypadshild verwenden willst muss die Tastenauswertung auf 
analog umgeschrieben werden. Einfacher ist es du nimmst nur das LCD und 
machst die drei Tasten extra, wie in der Schaltung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren