Forum: Mikrocontroller und Digitale Elektronik Anfänger brächte etwas unterstützung


von Mario (Gast)


Lesenswert?

Hallo,
wie dem Betreff bereits zu entnehmen ist bin ich absoluter 
Mikrocontroller Anfänger und wollte mich anfangs daran machen mit dem 
Arduino Leonardo eine Tastatur zu simulieren.

Habe dazu auch schon Beispiele gefunden aber die waren immer nur mit 1 
Taster.

Die Art wie das ganze funktionieren soll ist folgende:

3 Taster.

Wenn Taster 1 und Taster 2 gedrückt = Tastendruck X
Wenn Taster 3 und Taster 2 gedrückt = Tastendruck Y


Wie müsste ich das aufbauen/anschließen und coden (wobei das
Coding noch das geringste Problem ist)?

Hoffe hier findet sich jemand der mir da helfen würde.

MfG

von Karl H. (kbuchegg)


Lesenswert?

Mario schrieb:

> Wie müsste ich das aufbauen/anschließen und coden (wobei das
> Coding noch das geringste Problem ist)?

Das glaub ich nicht. Denn 3 Taster werden genauso angeschlossen wie 1 
Taster. Nur eben 3 mal.

Tatsächlich ist das Coding dein Problem. Aber das hilft nicht. Da musst 
du durch. Wenn du 1 Taster abfragen kannst, dann kannst du auch 3 Taster 
abfragen. Das Prinzip ist ja für jeden Taster gleich. Mit den 
Ergebnissen der 3 Tasterabfragen machst du dann deine Logik. Zb. indem 
du Dinge tust, wenn genau 2 davon gedrückt sind.

von Stefanus (Gast)


Lesenswert?

> eine Tastatur zu simulieren

Was meinst du damit? Willst due den Arduiono an einen PC anschließen so 
das der PC "denkt" es sei eine Tastatur angeschlossen worden?

Falls ja: Schlag Dir das mal ganz schnell wieder aus dem Kopf. Die 
Programmierung von USB Protokollen ist sehr kompliziert. Für solche 
Anwendungsfälle gibt es fertig programmierte Mikrocontroller, die man 
mit einem Setup-Tool konfigurieren kann. Das Stichwort dazu ist HID.

Lesestoff dazu: http://www.lvr.com/hidpage.htm

Fertige Module: http://www.codemercs.de/index.php?id=37&L=0

von Basti H. (basti1508)


Lesenswert?

Mario schrieb:
> Wenn Taster 1 und Taster 2 gedrückt = Tastendruck X
> Wenn Taster 3 und Taster 2 gedrückt = Tastendruck Y

Diese Schaltung ist sehr einfach.

Welchen Controller hast du denn und in welcher Sprache möchtest du das 
machen.

: Bearbeitet durch User
von Mario (Gast)


Lesenswert?

Basti Himmi schrieb:
> Diese Schaltung ist sehr einfach.
>
> Welchen Controller hast du denn und in welcher Sprache möchtest du das
> machen.

Also, ich arbeite mit dem Arduino Leonardo und würde das ganze gerne in 
C umsetzen. Wenns sein müsste würde auch Assembler gehen aber C wäre mir 
lieber.

von Christian B. (chbalnuweit)


Lesenswert?

Du hast noch nicht beantwortet, was du genau vor hast.
Soll der PC die Tastendrücke erkennen oder soll der Text "Tastendruck 
X/Y" per UART an den PC gesendet werden oder auf einem LCD ausgegeben 
werden oder..... ?

von Basti H. (basti1508)


Lesenswert?

Zusätzlich zum Verwendungszweck wäre Entscheidend für den code den ich 
dir geben kann auch noch ob du den Arduino playground verwendest oder 
die arduino libraries ?

von Oliver R. (orb)


Lesenswert?

Stefanus schrieb:
> Falls ja: Schlag Dir das mal ganz schnell wieder aus dem Kopf. Die
> Programmierung von USB Protokollen ist sehr kompliziert. Für solche
> Anwendungsfälle gibt es fertig programmierte Mikrocontroller, die man
> mit einem Setup-Tool konfigurieren kann. Das Stichwort dazu ist HID.

Schau Dir mal VUSB an. Grad HID ist sogar für die kleinsten AVR machbar.

von Karl H. (kbuchegg)


Lesenswert?

Oliver R. schrieb:
> Stefanus schrieb:
>> Falls ja: Schlag Dir das mal ganz schnell wieder aus dem Kopf. Die
>> Programmierung von USB Protokollen ist sehr kompliziert. Für solche
>> Anwendungsfälle gibt es fertig programmierte Mikrocontroller, die man
>> mit einem Setup-Tool konfigurieren kann. Das Stichwort dazu ist HID.
>
> Schau Dir mal VUSB an. Grad HID ist sogar für die kleinsten AVR machbar.

Bitte, bitte, bitte.
Passe deine Antworten an den Kentnissstand des Fragestellers an!

Wer Hilfe braucht um 3 Taster an einen Arduino anzuschliessen, den 
kannst du doch nicht in VUSB reinschicken!

von DH1AKF W. (wolfgang_kiefer) Benutzerseite


Lesenswert?

Ich empfehle ein Buch zu kaufen, z.B. "Arduino für Einsteiger", dort die 
Beispiele durchzuspielen und dann nach eigenen Vorstellungen 
abzuwandeln. So habe ich es jedenfalls gemacht.
Wenn Du es aber schon geschafft hast, einen Taster abzufragen, dann ist 
es doch gar nicht mehr schwer:
Der Prozessor arbeitet alles nacheinander ab, Du musst also drei 
Abfragen machen, und sie miteinander logisch verknüpfen (if... then...) 
Falls Du bereits Grundkenntnisse in C hast, dann versuche sie 
anzuwenden...
Die drei Taster werden mit dem einen Pol parallelgeschaltet und an + 
gelegt, möglichst mit Vorwiderstand, der andere Pol geht jeweils an 
einen anderen Eingangsport. (Diese muss man festlegen, also 
"programmieren").

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

DH1AKF K. schrieb:

> Die drei Taster werden mit dem einen Pol parallelgeschaltet und an +
> gelegt,

genau anders rum.

die 3 Taster werden jeweils an einen Pin vom Arduino angeschlossen und 
der andere Pin führt jeweils an Masse.
Dann braucht man weder Vorwiderstand noch Pulldown-Widerstand sondern 
lediglich einen Pullup-Widerstand und der ist im AVR bereits eingebaut 
und muss lediglich freigeschaltet werden.

von Amateur (Gast)


Lesenswert?

Bei den Atmels und auch vielen anderen Prozessoren, ist es am 
Einfachsten, die eingebauten Pull-Up Widerstände zu aktivieren.
Diese bewirken, das der betreffende Eingang auf log. High (1) gebracht 
wird. Genau so als ob Du einen Widerstand von der positiven 
Betriebsspannung an den Anschluss legst. Schließt Du nun Deinen Taster 
an den Eingang und die Masseleitung an, so kannst Du durch Betätigung 
des Tasters den Eingang auf log. Low (0) bringen.
Zur Auswertung müsstest Du Dich mal mit bool’scher Algebra beschäftigen. 
Da geht es darum die Zustände log. Low (0) und log. High (1) mittels 
AND, OR oder XOR (und andere) miteinander zu verknüpfen. Diese 
Funktionen sind auch im normalen "C" enthalten.

von Hubert G. (hubertg)


Lesenswert?

Amateur schrieb:
> Zur Auswertung müsstest Du Dich mal mit bool’scher Algebra beschäftigen.
> Da geht es darum die Zustände log. Low (0) und log. High (1) mittels
> AND, OR oder XOR (und andere) miteinander zu verknüpfen. Diese
> Funktionen sind auch im normalen "C" enthalten.

Wobei man aufpassen muss wenn man Arduino-Code mit normalen C mischt.
Ein
1
 if (((buttonState1)&& (buttonState2)) == LOW)
funktioniert nicht, egal wie man Klammert.
Es muss so lauten
1
if (buttonState1 == LOW && buttonState2 == LOW)

von Peter D. (peda)


Lesenswert?

Hubert G. schrieb:
> if (((buttonState1)&& (buttonState2)) == LOW) funktioniert nicht, egal
> wie man Klammert.
> Es muss so lautenif (buttonState1 == LOW && buttonState2 == LOW)

Das hat mit Klammerung auch nichts am Hut, beide Ausdrücke machen was 
vollkommen anderes.
Man könnte aber schreiben:
1
if (((buttonState1) || (buttonState2)) == LOW)

von Karl H. (kbuchegg)


Lesenswert?

man könnte das LOW bzw. HIGH auch ganz einfach weglassen und die übliche 
C Variante benutzen, wonach eine 0 als logisch falsch gewertet wird und 
alles andere logisch true.

LOW und HIGH sind nichts anderes als #define auf jeweils 0 und 1.
1
   if( !buttonState1 && !buttonState2 )
oder
1
   if( !( buttonState1 || buttonState2 ) )


oder man könnte die Variablen auch gleich nach dem Einlesen umdrehen, 
oder ...
Eben das ganz normale Repertoire, das man als C Programmierer zur 
Verfügung hat.

ABer der springende Punkt ist: Tun muss man es! Und zwar selber!
Es bringt nichts, sich ein Beispiel für 1 Taste zu suchen und dann nach 
einem Beispiel für 3 Tasten zu fragen. 1 Taste ist ok, damit man mal die 
grundsätzliche Vorgehensweise sieht. Aber ein paar Einzelbedingungen 
miteinander verknüpfen zu können (mit allen Fallen die es dabei geben 
kann), das muss man lernen. Und zwar indem man es einfach tut.

: Bearbeitet durch User
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.