Arduino micro und Gessmann-Fahr-/Bremsschalter

Da immer mehr Zusi User von einem 1:1 Führerstand mit träumen, soll es zumindest an Datenaustausch nicht hapern.
Antworten
Nachricht
Autor
Benutzeravatar
Holger Maaß
Beiträge: 1037
Registriert: 18.07.2016 16:56:45
Aktuelle Projekte: TriFan/ZusiOSBridge
ZusiMeter 2021
ZusiStart
ZusiObjektAlbum
nette Tools für nette Zusianer
Wohnort: Berlin

Arduino micro und Gessmann-Fahr-/Bremsschalter

#1 Beitrag von Holger Maaß »

Hallo allerseits,

für den neulich von Carsten zum Erwerb vorgestellten Fahr-/Bremsschalter von Gessmann habe ich hier ein Sketch samt kleiner Bibliothek für einen Arduino micro. Benötigt wird die Arduino-IDE (guckssst du hier), ein Arduino micro und, ach ja, ein Gessmann Fahr-/Bremsschalter. Das Bibliotheksarchiv wird in der Arduino-IDE über Sketch --> Bibliothek einbinden --> .ZIP-Bibliothek hinzufügen... eingebunden. Das Sketch-Archiv kann irgendwo entpackt und von dort geladen werden. Den Gessmann-Schalter habe ich wie folgt an den den Arduino micro angeschlossen:

Code: Alles auswählen

Poti blau --> GND
Poti rot  --> +5V
Poti gelb --> A0/D18

oberer (inverser) Taster
o --> unteren Taster
o --> D0/RX

unterer Taster
o --> GND
o --> D2/SDA
Selbstverständlich können für die Taster auch alle anderen digitalen Pins verwendet werden. Das gilt auch entsprechend für den analogen Poti-Anschluß. Dann muss im Sketch natürlich die PIN-Belegung angepasst werden:

Code: Alles auswählen

const int pinPoti = A0;
const int pinInvButton = 0;
const int pinButton = 2;
Nach Hochladen des Sketches meldet sich der Arduino micro so bei Windows:

Bild

Etwas Technik
Der Analog-Digital-Wandler des Arduino liefert für die Schnellbremsstellung ~986 und für max. Fahrstellung ~64. Auf diese Werte ist die Bibliothek abgestimmt. Sollte dein Schalter aufgrund von Fertigungstoleranzen, anderer Potityp oder weiß der FuchsGeier ;) andere Werte liefern, müssen die Einstellungen in der Bibliothek angepasst werden:

Code: Alles auswählen

// Das Poti liefert 
//   ~64 in max. Fahrstellung
//  ~986 in Schnellbremsstellung
// Diese Werte werden auf den USB-Bereich 0..255 (Schnellbremsung..Max.Fahrstellung) gemappt
// 255 / (986 - 64) = 255 / 922 ~ 0.2766
void GessmannSchalter::setThrottle(int value)
{
	int t = (986 - value) * 0.2766;
	// Einhaltung des USB-Bereiches sicherstellen
	if (t < 0) {
		t = 0;
	}
	else if (t > 255) {
		t = 255;
	}
	throttle = t;
	if (autoSendState) sendState();
}
Ich denke, das ist auch ohne besondere Programmierkenntnisse verständlich, oder?

Download
Bibliothek
Sketch

Viel Spaß beim Nachbau,
Holger
If you can't fix it with a hammer, it might be an electrical problem ...
Wenn es auch das nicht ist, schreibe an service ät zusi-tools punkt org.

Benutzeravatar
Thomas F.
Beiträge: 449
Registriert: 12.02.2005 10:36:29

Re: Arduino micro und Gessmann-Fahr-/Bremsschalter

#2 Beitrag von Thomas F. »

Holger Maaß hat geschrieben: 18.05.2021 17:21:04 Hallo allerseits,

für den neulich von Carsten zum Erwerb vorgestellten Fahr-/Bremsschalter von Gessmann habe ich hier ein Sketch samt kleiner Bibliothek für einen Arduino micro. Benötigt wird die Arduino-IDE (guckssst du hier), ein Arduino micro und, ach ja, ein Gessmann Fahr-/Bremsschalter. Das Bibliotheksarchiv wird in der Arduino-IDE über Sketch --> Bibliothek einbinden --> .ZIP-Bibliothek hinzufügen... eingebunden. Das Sketch-Archiv kann irgendwo entpackt und von dort geladen werden. Den Gessmann-Schalter habe ich wie folgt an den den Arduino micro angeschlossen:

Code: Alles auswählen

Poti blau --> GND
Poti rot  --> +5V
Poti gelb --> A0/D18

oberer (inverser) Taster
o --> unteren Taster
o --> D0/RX

unterer Taster
o --> GND
o --> D2/SDA
Selbstverständlich können für die Taster auch alle anderen digitalen Pins verwendet werden. Das gilt auch entsprechend für den analogen Poti-Anschluß. Dann muss im Sketch natürlich die PIN-Belegung angepasst werden:

Code: Alles auswählen

const int pinPoti = A0;
const int pinInvButton = 0;
const int pinButton = 2;
Nach Hochladen des Sketches meldet sich der Arduino micro so bei Windows:

Bild

Etwas Technik
Der Analog-Digital-Wandler des Arduino liefert für die Schnellbremsstellung ~986 und für max. Fahrstellung ~64. Auf diese Werte ist die Bibliothek abgestimmt. Sollte dein Schalter aufgrund von Fertigungstoleranzen, anderer Potityp oder weiß der FuchsGeier ;) andere Werte liefern, müssen die Einstellungen in der Bibliothek angepasst werden:

Code: Alles auswählen

// Das Poti liefert 
//   ~64 in max. Fahrstellung
//  ~986 in Schnellbremsstellung
// Diese Werte werden auf den USB-Bereich 0..255 (Schnellbremsung..Max.Fahrstellung) gemappt
// 255 / (986 - 64) = 255 / 922 ~ 0.2766
void GessmannSchalter::setThrottle(int value)
{
	int t = (986 - value) * 0.2766;
	// Einhaltung des USB-Bereiches sicherstellen
	if (t < 0) {
		t = 0;
	}
	else if (t > 255) {
		t = 255;
	}
	throttle = t;
	if (autoSendState) sendState();
}
Ich denke, das ist auch ohne besondere Programmierkenntnisse verständlich, oder?

Download
Bibliothek
Sketch

Viel Spaß beim Nachbau,
Holger
Moinsen,
der weiß natürlich wieder nix :hat2

Thomas F.

Benutzeravatar
Holger Maaß
Beiträge: 1037
Registriert: 18.07.2016 16:56:45
Aktuelle Projekte: TriFan/ZusiOSBridge
ZusiMeter 2021
ZusiStart
ZusiObjektAlbum
nette Tools für nette Zusianer
Wohnort: Berlin

Re: Arduino micro und Gessmann-Fahr-/Bremsschalter

#3 Beitrag von Holger Maaß »

Moin,

nee, nee Mann, nech. Bin ja gespannt, wann sich z.B. Norbert G. meldet :schaffner.

Gruß
Holger
If you can't fix it with a hammer, it might be an electrical problem ...
Wenn es auch das nicht ist, schreibe an service ät zusi-tools punkt org.

Antworten