Noop Frage: mehrere Taster - ein Analog-Pin

Hallo,

ich spiele seit zwei Wochen mit dem Arduino herum und komme bei einem Problem nicht weiter.

Folgende Aufgabenstellung:

Ich habe mehrere Taster, deren Aktivierung mit einem Analog-Pin abgefragt wird. Google ist mein Freund und so habe ich bereits im Netz ein paar Hinweise bekommen. Allerdings funktioniert keines davon so richtig. Also habe ich meine Rübe angestrengt und mir einen eigenen Plan erdacht.

Grundidee ist, jeweils einen Widerstand mit unterschiedlichem Wirkungsgrad vor den 5V Eingangsspannung anzulegen.

Das Ganze sieht etwa so aus:

Ich wollte programmäßig erst einmal überprüfen, welche Werte ich denn erhalte. Also sieht mein Sketch wie folgt aus:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue, DEC);
}

Jetzt erhalte ich immer den Wert 1023, egal, welchen Taster ich drücke. Kann mir jemand weiterhelfen?

Grüße,

Holger

Ein widerstand gegen masse auf dem A0 fehlt

Oder anders gesagt: Du brauchst mehrere Spannungsteiler.
Schau dir hierzu mal den Tread komplett an: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1288992904/0

hi

die analogen pins lösen werte von gnd bis 5V (oder bei einigen arduinos 3,3V) in einen wert zwischen 0 und 1023 auf.

für dein problem solltest du soweit ich deine aufgabenstellung verstanden habe digital pins verwenden:

int pinwert;
int pinnummer = 3;
.
.
.

pinwert = digitalRead(pinnummer);

if(pinwert == HIGH) doSometing();

dann sollte es klappen denn ein taster kann nur gedrückt oder nicht gedrückt werden also HIGH oder LOW sein...

die analogen pins kannst du zb für potentiometer oder analoge sensoren verwenden...

nur zur info:
du musst nicht unbedingt wirkliche widerstände verwenden sondern kannst die im arduino vorhandenen pullUP-DOWN widerstände verwenden indem du bei der setup() funktion
den die pinnummer HIGH oder LOW setzt (digitalWrite(pinnummer, LOW oder HIGH):wink:

ich hoffe ich konnte dir helfen =)

mfg hoonse

@Hoonse
Er will ja mehrere Taster mit einem Pin abfragen, somit ist der analoge Eingang schon richtig.

Ich verwende für so etwas allerdings immer einen 74HC165. Damit brauche ich zwar drei (digitale) Pins, kann aber dafür bis zu acht Taster abfragen. Und wenns mehr sein müssen, kann man mehrere 74HC165 einfach verbinden (2 für 16 Taster, 3 für 24, ...). Der große Vorteil: es können beliebig viele Taster gleichzeitig gedrückt werden.

Der große Vorteil: es können beliebig viele Taster gleichzeitig gedrückt werden.

Richtig :slight_smile:

Darin sehe ich genau den Nachteil von diesen Widerstand-Leitern / R2Rs Nur ein Knopf kann ausgelesen werden.

Es ist auch eher eine experimentelle Lösung, da wir das vor kurzem hatten wollte ich es nicht unerwähnt lassen. :wink:

Also gebe ich auch noch meine Meinung kund:

Hallo fullArduinoNoop
Ich weiß nicht wie Du die Taster ins Steckbrett gesteckt hast. Die Tster haben jeweils 2 Füßchen intern verbunden und wenn Du den Taster betätigst werden alle die 2 Füßchen mit den anderen 2 Füßchen verbunden.

Wenn Du den Taster waagerecht einsteckst dann ist der Widerstand immer mit Masse verbunden und Du liest am Eingang einen unbestimmten wert weil de Eingang in der Luft hängt und wenn Du den Taster betätigst liest Du 0.

Hast Du den Taster um 90 Grad gedreht hast Du am eingang immer Masse anliegen und wenn Du den Taster betätigst fliest zusätzlich ein strom über den Widerstand , andert aber nichts am Eingang.

Die 3 Taster sind paralellgeschaltet darum ändert sich nichts.

so ist es richtig: Beispiel mit 2 Taster:

Du machst einen Spannungsteiler mit 2 Widerständen und einen dritten um den Eingang eine Spannungswert zu geben wenn kein Taster gedrückt ist.

+5V------------------
| |
R1 R2
| |
---- Taster 1---- ( hier sind 2,5V)
| |
R1 |
| |
masse---- Taster 2-------- Analoger Eingang

Wobei R1 ca 10 mal kleiner sein soll als R2

Wenn kein Taster gedrückt ist dann hast Du 5V am Eingang.
Wenn Taster 1 gedrückt ist dann hast Du 2,5V am Eingang.
Wenn Taster 2 gedrückt ist dann hast Du 0 V am Eingang.
Wenn Du beide Taster gleichzeitig drückst, dann hast Du 0V am Eingang.

Grüße Uwe

Hi,

Es können alle Widerstände den gleichen Wert besitzen. Bei einer entsprechenden Verschaltung können gleichzeitig gedrückte Taster erkannt werden.
Werde morgen mal eine entsprechende Schaltung posten.

Gruß,

Sebastian

so:

brauchte mir die Arbeit garnicht selbst machen:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267115381

Gruß

Sebastian

Vielen Dank für die schnelle Reaktion und die ausführlichen Antworten! Das ist nicht selbstverständlich. Ich werde mir alles genau durchlesen und es entsprechend in mein Projekt verwursten.

Beste Grüße,

Holger

Ich habe eine solche Tastatur bereits realisiert...
Bist Du an dem Code interessiert ??

Hi LC_Data,

gerne! Ich habe mir schon ein Konzept ausgedacht und kann es dann mit deiner Lösung vergleichen.

Beste Grüße,

Holger

Sind wir nicht alle an dem Code interessiert ? :wink:

Ein mögliches Codebeispiel findest du schon im Link von Stundenblume in Reply #9.

Schon klar :wink:
Es bezog sich auf LC_Data's Post ... vielleicht hat er ja noch ne andere Lösung... Ich bin halt einfach von Natur aus neugierig :wink: