Erster Versuch zur Eingabe per Originalschalter

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Nachricht
Autor
Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#41 Beitrag von Daniel Rüscher aka Merlin »

Nur erschließt sich mir dann der Sinn von r1 nicht mehr...
Wäre es nicht sinnvoller s1 -> r1 -> P2 und GND weglassen?

Was liegt eigentlich an P2 an?
How to waste bits in a My SQL Database?

Like this.....

Benutzeravatar
Thomas U.
Beiträge: 3283
Registriert: 15.03.2004 16:39:15
Wohnort: Gelsenkirchen

Re: Erster Versuch zur Eingabe per Originalschalter

#42 Beitrag von Thomas U. »

Daniel Rüscher aka Merlin hat geschrieben:Nur erschließt sich mir dann der Sinn von r1 nicht mehr...
Wäre es nicht sinnvoller s1 -> r1 -> P2 und GND weglassen?
R1 zieht Pin2 bei geöffnetem Schalter auf Masse. Für Dauermasse an Pin2 könnte man ihn natürlich weglassen.
Wenn man den Schalter nun schließt, bekommt Pin2 +5V ab. Ohne den Widerstand wären Plus und Masse aber dann direkt verbunden -> *qualmstink*. Daher also der Widerstand ;)

S1-> R2 -> Pin2 ohne Masse ergibt nichts gescheites. Ist der Schalter offen, hängt Pin2 wieder in der Luft (so, wie es unbeschaltet der Fall wäre). Ist der Schalter geschlossen, bringt der Widerstand wieder nichts, da er erstens nichts sinnvolles bewirken würde und durch den geringen Strom, der in Pin2 fließt, nichtmal als Heizung benutzt werden könnte.

Benutzeravatar
nonesense
Beiträge: 504
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#43 Beitrag von nonesense »

Ich vermute mal, du meinst den R1 wie bei einer LED als "Vorwiderstand" einzubauen.

Darum geht es hier nicht.

Dieser Wiederstand ist ein sog. Pull-Down:
Dann wenn an einem Eingang nichts angeschlossen ist, weiß der Eingang nicht genau, was er machen soll. Allso hängt man einen Wiederstand nach Masse. Wenn nicht anderes angeschlossen ist, haben wir also Masse am Eingang.

Beim Arduino braucht man das aber eigentlich nicht, weil er interne Pull-Downs oder Pull-Ups hat.

pinMode(2, INPUT); // Pin 2 ist jetzt ein Eingang
digitalWrite(2, LOW); // An Pin 2 haben wir jetzt einen Pull-Down (Im Chip)

Jetzt brauchst du nur noch den Taster von +5V nach Pin2

Gruß
Jens
Zuletzt geändert von nonesense am 22.03.2014 19:33:06, insgesamt 2-mal geändert.

RHD2
Beiträge: 62
Registriert: 27.01.2011 13:20:54

Re: Erster Versuch zur Eingabe per Originalschalter

#44 Beitrag von RHD2 »

:sonne Hurra, es funktioniert. Hätte nicht gedacht, dass ich das noch hinbekomme. Aber Eure Hilfe war ja auch Super. Nochmals vielen Dank an Alle für die ausdauernde Unterstützung.
Bin nach der Schaltzeichnung von Thomas U. vorgegangen. Toll, dass er aufgrund meiner laienhaften Erklärung eine Zeichnung anfertigen konnte :respekt . Das im Original zu ändern war einfach. Danach der erste Versuch...... negativ. Dann fiel mir auf, dass die Tastatur bbbbbb sendet der Leo aber BBBBB. Also in der Programmierung von groß B auf klein b geändert. Neuer Versuch............ und es geht :] :] :] :] :]
Wenn man weiß wie es geht, wirklich eine Sache von zwei Minuten.....wenn man weiß wie !!!

Hoffe das ich jetzt das Grundprinzip begriffen habe. Denn es sollen nun natürlich weitere Anschlüsse folgen (erstmal nur die "einfachen" Eingaben).
Da taucht gleich die nächste Frage auf: "Taster entprellen". Ist das jetzt schon zwingend erforderlich oder muß das erst bei mehreren Anschlüssen gemacht werden ?

Dank nochmal an Alle. Wenn mal einer von Euch in Berlin ist, kann er sich bei mir melden. Gebe dann ein bis drei Getränke seiner Wahl aus.

Gruß Frank

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#45 Beitrag von Daniel Rüscher aka Merlin »

Das vor S1 -> +5 kommt war mir schon klar, hab's nur nicht dazugeschrieben.

Ich versteh nur die Verbindung P2 -> GND ned.

Ich würde mal
P2 -> S1 -> R1 -> GND
oder
+5 -> S1 -> R1 -> P2
versuchen.

Alles andere macht irgendwie wenig Sinn.
How to waste bits in a My SQL Database?

Like this.....

Benutzeravatar
F. Schn.
Beiträge: 6631
Registriert: 24.10.2011 18:58:26

Re: Erster Versuch zur Eingabe per Originalschalter

#46 Beitrag von F. Schn. »

Hä? :)

Also:
Elektrische Schaltkreise basieren darauf, darauf, dass an Atomen zu viele oder zu wenige Elektronen sind, bzw. darauf, dass diese Elektronen durch Leitungen "fließen". Die "Menge" an Elektronen, die an einer bestimmten Stelle zu viel sind nennt man elektrisches Potential.
Ist das Potential an einer Stelle höher als an einer anderen Stelle, liegt zwischen diesen beiden Punkten eine Spannung an. Werden diese beiden Punkte verbunden, fließt ein Strom. Wie groß dieser Strom ist, hängt davon ab, wie groß der (Leitungs-)Widerstand ist. Bei elektrischen Spannungen wird im allgemeinen gegen einen festen Bezugspunkt gemessen, die sogenannte Masse (GND).

In der Digitaltechnik arbeitet man mit zwei Spannungen: Low und High. Hight entspricht fast immer der Versorgungsspannung (hier: 5 V) und Low entspricht fast immer der Masse.
In der Digitaltechnik werden die Bausteine meist so gebaut, dass sie wenig Strom wie möglich "verbrauchen", also so wenig wie möglich leitend sind. Dies kann zum Beispiel durch Feldefekte erzeugt werden. In diesen Fällen leitet die Schaltung dann beispielsweise überhaupt nicht.

Wenn du nun deinen Pin 2 über einen Schalter mit 5 V verbindest, passiert folgendes:
Wenn du den Schalter schließt, Fließen Elektronen auf Pin 2. Pin 2 geht damit auf High. Der Baustein "sendet an die Programmierung", dass er auf High ist.
Wenn du nun den Schalter loslässt, werden die Elektronen von 5 V abgeschnitten. Sie sind jedoch immer noch auf Pin 2; das Potential auf Pin 2 bleibt also erhalten. Da der Baustein keinen Strom "verbraucht", bleibt das auch so. Der Baustein sendet also dauerhaft High.

Um dies zu verhindern schaltest du einen Widerstand zwischen Pin 2 und GND. Wenn der Schalter geschlossen ist, fließt nun ein kleiner Strom über den Widerstand von 5 V nach GND (damit dieser Strom - und damit auch die Verlustleistung - möglchst klein ist darf der Widerstand auch ruhig einen großen Widerstand haben). Da jedoch der Schalter keinen Widerstand hat, ist das vernachlässigbar und Pin 2 liegt weiterhin auf High.
Wenn der Schalter nun geöffnet ist, können die Elektronen von Pin 2 über den Widerstand "abfließen", das Potential von Pin 2 gleicht sich schnell an das Potential von GND an was bedeutet, dass Pin 2 auf Low geht und das Programm mit Low arbeiten kann. :)

Alles klar? :rolleyes:
Disc: Dieser Text erhebt keinen Anspruch auf Vollständigkeit und Basisphysikalischer korrektheit. ;)
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Erster Versuch zur Eingabe per Originalschalter

#47 Beitrag von Arne aus dem Norden »

RHD2 hat geschrieben:Da taucht gleich die nächste Frage auf: "Taster entprellen". Ist das jetzt schon zwingend erforderlich oder muß das erst bei mehreren Anschlüssen gemacht werden ?
Das muß eigentlich erst dann gemacht werden, wenn du ein Schaltzustand absolut eindeutig erkennen mußt. Also das Bedienen eines Schalter nur exakt einen Schaltimpuls liefern darf, Z.B. bei Referenzschaltern oder Zählern.
Für diese Anwendung hier kannst du das vernachlässigen.

Es gibt auch bereits fertig programmierte ICs für sowas. Ich hab mir so eine Art "Breakout-Board" für den Leonardo gemacht, also eine Platine an der ich Schraubklemmen habe zum rausführen an die Schalter/Taster, Pull-Down-Widerstände für die Ports, Entprell-ICs und LED für die Statusanzeige der Eingänge. Aber das ist wirklich spielkram ;-)

Bild
Zuletzt geändert von Arne aus dem Norden am 23.03.2014 08:00:49, insgesamt 1-mal geändert.
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#48 Beitrag von Daniel Rüscher aka Merlin »

Meintest du mich F.Schn?

Wie Digitaltechnik funktioniert weiß ich.

Ich versteh nur die Verbindung vom Taster nach P2 und GND gleichzeitig nicht.
Entweder P2 liegt auf Masse, dann kann man sich die "Abzweigung" nach GND sparen.
Oder er liegt auf +5V dann braucht man die Verbindung zu +5 nicht.
How to waste bits in a My SQL Database?

Like this.....

Benutzeravatar
nonesense
Beiträge: 504
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#49 Beitrag von nonesense »

Weißt du, wie ein Spannungsteiler funktioniert?

Mal angenommen, der PullDown ist R2. Der Taster ins R1

Dann hat der Spannungsteiler zwei Zustände:

Taster offen:
R1 = Unendlich
R2 = 10kOhm

Taster geschlossen
R1 = 0 Ohm
R2 = 10kOhm

Im ersten Fall erhalten wir 0V am Ausgang.
Im zweiten Fall erhalten wir 5V am Ausgang.

1)
UP2 = (5V * 10kOhm)/(10kOhm + Unendlich Ohm) = 0V

2)
UP2 = (5V * 10kOhm)/(10kOhm + 0 Ohm) = 5V

Gruß
Jens

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#50 Beitrag von Daniel Rüscher aka Merlin »

Ah, jetz wird's klar.
P2 greift dann quasi die Spannung zwischen T1 und R1 ab, oder?
How to waste bits in a My SQL Database?

Like this.....

RHD2
Beiträge: 62
Registriert: 27.01.2011 13:20:54

Re: Erster Versuch zur Eingabe per Originalschalter

#51 Beitrag von RHD2 »

Guten Morgen oder besser Mahlzeit,

eine Frage, die mir gestern abend beim Einschlafen eingefallen ist.
Wenn nun weitere Taster an den Leo angeschlossen werden sollen, dann muß für jeden einzelnen ein Programm erstellt werden. Kann ich dafür das bereits benutzte nehmen und einfach nur die Tasten ändern, reicht das ? Es werden doch bestimmt neue Anschlüsse nötig oder laufen die alle über diese jetzt erstellte Grundschaltung des Leo ?

Schönen Sonntag !

Gruß Frank

Benutzeravatar
nonesense
Beiträge: 504
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#52 Beitrag von nonesense »

Daniel Rüscher aka Merlin hat geschrieben:P2 greift dann quasi die Spannung zwischen T1 und R1 ab, oder?
Ja.

Aber wie schon geschrieben: Das braucht man beim Arduino eigentlich nicht. Ist unnötiger Verdrahtungs- und Materialaufwand.

@RHD2

Wie meinst du das, mit dem eigenen Programm?
Du musst zu jeder Taste etwas im Code schreiben.

Und natürlich muss du jede Taste verdrahten. Das versteht sich doch von selbst.

Gruß
Jens
Zuletzt geändert von nonesense am 23.03.2014 12:08:30, insgesamt 1-mal geändert.

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Erster Versuch zur Eingabe per Originalschalter

#53 Beitrag von Arne aus dem Norden »

RHD2 hat geschrieben:Wenn nun weitere Taster an den Leo angeschlossen werden sollen, dann muß für jeden einzelnen ein Programm erstellt werden. Kann ich dafür das bereits benutzte nehmen und einfach nur die Tasten ändern, reicht das ?
Ein Beispiel für drei Taster. Damit sollte das Grundprinzip eigentlich klar werden. Das heißt nicht, das du dieses so nehmen, sondern das vorhandene nach diesem Schema erweitern kannst.

Code: Alles auswählen

int buttonState1 = 0; // Variable zum einlesen des Schalterzustandes 1
int buttonState2 = 0; // Variable zum einlesen des Schalterzustandes 2
int buttonState3 = 0; // Variable zum einlesen des Schalterzustandes 3

void setup()
{
pinMode(2, INPUT); // Eingangspin 2 am Leonardo für Taste A
pinMode(3, INPUT); // Eingangspin 3 am Leonardo für Taste B
pinMode(4, INPUT); // Eingangspin 4 am Leonardo für Taste C

Keyboard.begin();
}

void loop()
{

buttonState1 = digitalRead(2); // einlesen von PIN 2 in die Variable 1
if (buttonState1 == HIGH)
  {
  Keyboard.press('A'); // senden der 'A'-Taste
  delay(20);
  Keyboard.releaseAll();
  }

buttonState2 = digitalRead(3); // einlesen von PIN 3 in die Variable 2
if (buttonState2 == HIGH)
  {
  Keyboard.press('B'); // senden der 'B'-Taste
  delay(20);
  Keyboard.releaseAll();
  }

buttonState3 = digitalRead(4); // einlesen von PIN 4 in die Variable 3
if (buttonState3 == HIGH)
  {
  Keyboard.press('C'); // senden der 'C'-Taste
  delay(20);
  Keyboard.releaseAll();
  }

}
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

Benutzeravatar
Daniel Rüscher aka Merlin
Beiträge: 2294
Registriert: 23.01.2003 02:25:50
Aktuelle Projekte: Aktuell keine
Wohnort: Traunreut
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#54 Beitrag von Daniel Rüscher aka Merlin »

nonesense hat geschrieben:
Daniel Rüscher aka Merlin hat geschrieben:P2 greift dann quasi die Spannung zwischen T1 und R1 ab, oder?
Ja.

Aber wie schon geschrieben: Das braucht man beim Arduino eigentlich nicht. Ist unnötiger Verdrahtungs- und Materialaufwand.
Genau das meinte ich ja. Wenn ich eh auf +5V reagier müsste doch als Schaltung 5V -> T1 -> R1 -> P2 reichen, oder hab ich da nen Denkfehler.
How to waste bits in a My SQL Database?

Like this.....

Benutzeravatar
nonesense
Beiträge: 504
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#55 Beitrag von nonesense »

In dem Fall brauchst du den R1 nicht. Nur den Taster.

Aber dennoch brauchst du den PullDown-Widerstand. Nur dass man den auch im Arduino, also im Chip, aktivieren kann.
Wie man den internen PullDown aktiviert, habe ich oben geschrieben.

Gruß
Jens

RHD2
Beiträge: 62
Registriert: 27.01.2011 13:20:54

Re: Erster Versuch zur Eingabe per Originalschalter

#56 Beitrag von RHD2 »

Hi Arne,
alles klar. So hatte ich es mir schon fast gedacht. Es ging mir jetzt nur nochmal um den Code . Es müssen also alle Tasten in EINEM Code zusammengefasst werden und dann natürlich separat verdrahtet.
Daher ist es wohl angeraten mit Leiterplatinen zu arbeiten. Auch das ist für mich neu. Habe sonst nur mit Verkabelung gearbeitet, aber das wird bei diesem Umfang ja viel zu unübersichtlich.

Okay. Dies war ja eine Übung zum Einstieg. Wenn nächste Woche zu Hause mein neuer PC aufgebaut ist und alles neu auf der schnellen SSD Platte ist, werde ich dann neu starten.
Erstes Ziel ist es dann die Tasten PZB Wachsam, Frei und Befehl des TS 2014 mit dem Leo zu verbinden.
Bis dahin übe ich noch ein wenig.
Hoffe ich komme dann erstmal allein über die Runden.

Vielen Dank an Alle für die geleistete Hilfe.
Erholsamen Sonntag noch.

Gruß Frank

Benutzeravatar
Arne aus dem Norden
Beiträge: 721
Registriert: 25.12.2011 14:28:21
Aktuelle Projekte: Fahrpult VT628/VS928 - Versuch eines Nachbaus
Wohnort: Str.Km "6,8" der Kiel-Schönberger Eisenbahn (DB-Str. 9107)

Re: Erster Versuch zur Eingabe per Originalschalter

#57 Beitrag von Arne aus dem Norden »

RHD2 hat geschrieben:Es müssen also alle Tasten in EINEM Code zusammengefasst werden und dann natürlich separat verdrahtet.
Hi,

was anderes bleibt nicht übrig, da man ja nur ein Programm auf den Arduino laden kann ;-) Jeder weitere Upload überschreibt den vorherigen...
Wie sich so ein Arduino Programm grundsätzlich aufbaut ist ja auch an zahlreichen Stellen im Netz beschrieben. Immer gleich ist die grobe Grundstruktur:
1. Einbindung von Bibliotheken, Deklaration von Variablen etc. am Anfang
2. void setup{}, wo einmalige Initialisierungen stattfinden
3. void loop{}, wo das eigentliche Programm in einer Schleife immer wieder durchlaufen wird
Mein Baubericht von der echten Bahn zum Schönberger Strand:
https://www.facebook.com/Hein-Sch%C3%B6 ... 601976323/

RHD2
Beiträge: 62
Registriert: 27.01.2011 13:20:54

Re: Erster Versuch zur Eingabe per Originalschalter

#58 Beitrag von RHD2 »

Guten Abend an Alle,

nochmal eine kurze abendliche Erfolgsmeldung.
Alle drei Taster sind angeschlossen und funktionieren genau nach Plan. :) Freu mich doll.

Abendgruß
Frank

Benutzeravatar
nonesense
Beiträge: 504
Registriert: 15.07.2006 12:50:10
Aktuelle Projekte: QDmi
Fahrpult Einheitsführerstand
Ludmilla
Wohnort: Köln
Kontaktdaten:

Re: Erster Versuch zur Eingabe per Originalschalter

#59 Beitrag von nonesense »

Moin Frank,

magst du uns mal einen Code präsentieren?

Gruß
Jens

RHD2
Beiträge: 62
Registriert: 27.01.2011 13:20:54

Re: Erster Versuch zur Eingabe per Originalschalter

#60 Beitrag von RHD2 »

Hi Jens,

da kann ich Euch leider nichts besonderes präsentieren.
Ich habe den Code für drei Taster wie oben von Arne übernommen. Habe lediglich die Tasten anders bezeichnet. Angeschlossen sind nun die Tasten Y, B und P .
Dadurch kann ich jetzt beim MSTS den Panto heben, Sifa betätigen und einen Türschließ-Sound über drei Schaltbau Taster abspielen.
Das ist natürlich nur ein kleiner Anfang, aber der war ja auch schwierig genug. Obwohl... so im nachhinein, so schwer war es gar nicht.

Gruß Frank

Antworten