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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von R. H. (snapper)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 Moderator
von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Wie lautet die Frage?

ljkftz

von Manfred (Gast)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel Code und Schaltplan ist in der LCD_Keypad_Shield_Test.zip 
enthalten !

von Hubert G. (hubertg)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht lesenswert
ja, der Schaltplan und Code sind in der anderen zip Datei !

von Teo D. (teoderix)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.