Hi, mir ist ein Problem für ein kleines Projekt aufgefallen. Ich würde gern nen 16-Step Sequenzer mit nem Arduino bauen und für die Tonhöhe innerhalb einer Oktave gerne nen 12 stufigen Drehschalter verwenden. Dabei ist mir aufgefallen, dass es spaßig wird, die 12 stufen auszulesen. Jetzt hätte ich nen Ansatz und wollte mal jemanden rüber gucken lassen, damit ihr mir sagen könnt, ob das hin haut. Die Drehschalter wollte ich ursprünglich eh an einen Multiplexer hängen. Wenn ein neuer Step aktiv wird, wird die Adresse geändert und ausgelesen. Durch einen Multiplexer bekommt auch immer nur ein Set von Potis und Schaltern überhaupt eine Spannung (5V), die anderen gehen leer aus. Mein neuer Ansatz wäre nun, einen weitern 16-Kanal Multiplexer zu nehmen, der mit allen Stufen aller Drehschalter verbunden ist. Auf Eingang 1 ist also Stufe 1 aller Drehschalter, auf Eingang 2 ist Stufe 2 und so weiter. Hinter diesem Multiplexer befindet sich Ground hinter nem Widerstand und der Input am Arduino. Auslesen kann man di Position dann indem man einen der Drehschalter mit einem Multiplexer mit einer Spannung versorgt und dann durch die Eingänge des zweiten Multiplexers läuft und somit herausfindet, auf welcher Position sich der Schalter befindet. Anbei ist die Schaltung vereinfacht vier mit 4-stufigen Schaltern. Funktioniert das wie geplant oder habe ich was übersehen? Beste Grüße und vielen Dank im Voraus.
Das geht so schon, obwohl ich mir den unteren Multiplexer sparen würde und 12 Eingänge (mit aktiviertem internen pull up) nutzen würde und den oberen Multiplexer demnach mit Masse verbinden lasse.
Wozu der Aufwand mit dem Multiplexern? Wenn du IOs sparen willst, kannst du mit Charlieplexing alle 4 Schalter (und auch noch einen 5.) über 5 IOs auslesen, als zusätzliche Hardware wären nur ein paar Dioden nötig.
Wie gesagt, es sind in der Praxis dann 16 Schalter. ;) Habe noch nei was von Charlieplexing gehört, müsste mich da einlesen und ich habe halt noch nen 16 Channel Mux rum zu liegen, ... 12 Eingänge hat der Arduino dann meines Wissen nicht mehr. Ich brauche 4 für die Adressierung, ist ein Uno.
W. R. schrieb: > Funktioniert das wie geplant > oder habe ich was übersehen? Ja, das funktioniert genau so. 2 * 74HC4051 an die Schleifer und 2 * 74HC4051 an die Segmente. Zum MC brauchst Du 9 Leitungen (1 Eingang + 8 Adressen). Die 8 Adressen kannst Du auch mit einem 74HC393 erzeugen, dann sinds 2 Ausgänge und ein Eingang.
Najut, hab jetzt 16 Kanal Multiplexer (4067) rum zu leigen, sollte ja keine unterschied machen, richtig? :) Danke für die Hilfe!
Du könntest auch analog arbeiten. Mit 11 Widerständen in Serie einen Spannungsteiler aufbauen und die 12 Spannungen dann jewels auf die 12 Außenkontakte der 4 Drehschalter. Die 4 Mittelkontakte dann auf je einen Analogeingang.
4067 Mit dem 4067 brauchst du 8 pins, oder minimal 5. Bei 8 pins wir pin 1 des 4067 mit Masse verbunden, und die Eingaenge verwenden den internen pull-up. Man kann auch einen Angstwiderstand zwischen masse und pin1 des 4067 mit >=1k einplanen, damit Softwarefehler keine Beschaedigung der Ausgangstreiber verursachen. Minimal 5 pins,ist 4 pins fuer den Mux, und pin1 des 4067 wird Analog mit einem ADC pin eingelesen. Die Schalter wird mit dem gemeinsamen Kontakt am mux angeschlossen und an den anderen Pins wird ein Spannungsteiler gemacht, bei 4 Kontakten sind es 3 Widerstaende. Diese 3 Widerstande, bzw 2 Widerstaende und eine Led braucht es nur einmal fuer alle Schalter. Angenommen du macht es mit Led, einer led welche Power on anzeigt. Dann sind es 5V + 330 ohm + 330 ohm + led + gnd Abzweigungen bei + , wenn anstelle von led ein Widerstand genommen wird, sollte dieser hoeher sein, 4.7k als Beispiel, kann aber auch nur 3x 1k Widerstaende sein. Fuer Bastelprojekt einfach die ADC Werte im EEprom ablegen, sowie ein Wert fuer den diff. Beispiel diff=10. Wenn GND Wert 0xff ist, dann wird kalibriert. Kalibriert, warten bis Wert kleiner diff ist, dann 200ms Warten, Wert neu einlesen und abspeichern, sofern er immer noch kleiner diff ist. Dies wiederholt sich solange als abgespeicherter Wert groesser als 255-diff ist. Neuer ADC Wert muss groesser als alter Wert + diff sein.
asdfasd schrieb: > Du könntest auch analog arbeiten. Mit 11 Widerständen in Serie einen > Spannungsteiler aufbauen und die 12 Spannungen dann jewels auf die 12 > Außenkontakte der 4 Drehschalter. Jep. Das ist die Pin-sparendste Methode, um einen Drehschalter abzufragen. Bei dem man ja im Gegensatz zu Einzelkontakten nicht frei ist, den nach Belieben in eine Matrix einzubetten. > Die 4 Mittelkontakte dann auf je einen Analogeingang. Oder - wenn man nicht soviele Analogeingänge hat oder verwenden will - über einen Analogmultiplexer an einen Analogeingang.
Habe gerade gesehen, 4 stufen war die Vereinfachung, dann braucht es halt 11 Widerstaende anstelle von 3.
[OT] Gibt es Gebiete, in denen man Teile "rum zu liegen" hat oder heißt es einfach nur "ich habe Teile rumliegen"? Meinem Sprachgefühl nach (aus NRW) ist "rum zu liegen" komisch[/OT]
OT schrieb: > [OT] Gibt es Gebiete, in denen man Teile "rum zu liegen" hat oder heißt > es einfach nur "ich habe Teile rumliegen"? Meinem Sprachgefühl nach (aus > NRW) ist "rum zu liegen" komisch[/OT] "rum" ist eine Flüssigkeit. Hochdeutsch heißt es "herum" "rumliegen" SAGT man, "herumliegen" SCHREIBT man. Im Forum kann man die Sachen auch rumliegen lassen. Da tippt man ja nur.
OT schrieb: > [OT] Gibt es Gebiete, in denen man Teile "rum zu liegen" hat oder heißt > es einfach nur "ich habe Teile rumliegen"? Meinem Sprachgefühl nach (aus > NRW) ist "rum zu liegen" komisch[/OT] Ich denk, daß das Ruhrpott-Slang ist. Oder sein soll. Da haben ja manche "ein Ei am wandern" ;) und ähnliches
Das Thema blieb anscheinend auch irgendwo liegen... ;) Ich denke mal ich bleibe der Einfachheit halber bei zwei mal vier digitalen Out Pins, vier für die Addresse des aktuellen Steps und 4 für die Adressierung der Drehschalter. Man merkt vielleicht das ich mit Elektrik noch nicht viel zutun hatte und entsprechend recht schnell an meine Grenzen komme...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.