Forum: Mikrocontroller und Digitale Elektronik Arduino Codeänderung ---> Anfänger braucht Hilfe !


von R. H. (snapper)


Angehängte Dateien:

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ß

: Verschoben durch User
von Teo D. (teoderix)


Lesenswert?

Ich hab keinen Schimmer von dem Arduino Zeugs, aber du wirst wohl in der 
'analogRead()' suchen müssen.

: Bearbeitet durch User
von R. H. (snapper)


Lesenswert?

Teo D. schrieb:
> Kein Schimmer von dem Arduino Zeugs,

Hatte ich bis gestern auch noch nicht wirklich, dann sind wir ja schon 
zu zweit ;-))

Beitrag #5006688 wurde von einem Moderator gelöscht.
von ljkftz (Gast)


Lesenswert?

Wie lautet die Frage?

ljkftz

von Manfred (Gast)


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);

von R. H. (snapper)


Angehängte Dateien:

Lesenswert?

Beispiel Code und Schaltplan ist in der LCD_Keypad_Shield_Test.zip 
enthalten !

von Hubert G. (hubertg)


Angehängte Dateien:

Lesenswert?

Jetzt wäre nur interessant was du gerne ändern möchtest.
Ich nehme an das du diese Shild hast.

von R. H. (snapper)


Angehängte Dateien:

Lesenswert?

ja, der Schaltplan und Code sind in der anderen zip Datei !

von Teo D. (teoderix)


Lesenswert?

Hubert G. schrieb:
> Jetzt wäre nur interessant was du gerne ändern möchtest.

Er hat ne andre Pinbelegung, muss nen andren ADC-Eingang nutzen.....

von Axel R. (Gast)


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

von Hubert G. (hubertg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.