Zum Inhalt

Rowalyzer … die Geburt

DSC_0035Als Ausgangspunkt für eine kleine Nachmittagsbastelei stellt sich  mir seit 14 Tagen ein gebrauchter Rudertrainer von Hammer zur Verfügung. Dieser kommt mit einem Batteriegetriebenen Computer zur Anzeige von Schlagzahl, Kalorien, Entfernung usw.

Leider lies die Funktionalität selbst mit vollen Batterien zu wünschen übrig. Sobald die Stopuhr gestartet wurde, versagte die Schlaganzeige usw.. Lange Rede kurzer Sinn. Es musste ein Ersatz geschaffen werden. Der Computer bezog seine Daten ausschließlich von einem Reedkontakt unter dem Sitz sowie einem (nicht funktionierenden) Herzfrequenzmesser.

Im Ersten Schritt tauschten der Reedkontakt sowie der Magnet die Positionen, so das der Magnet nun unterm Sitz klebt und der Kontakt anstelle des Magneten unterhalb der Schiene montiert ist.

Mutti hat früher immer gesagt ich soll den alten Elektroschrott wegschmeißen … zum Glück höre ich nicht auf Mutti *g*. Nur aus diesem Grund war noch ein USB-Gameport vorhanden.
Zusätzlich wurde die 3,5mm Monobuchse aus dem Computergehäuse genutzt um den Reedkontakt mit Pin 2 und 4 des Gameport zu verbinden. Somit liegt dieser nun auf Knopf 1 des „Joysticks“

DSC_0034DSC_0035DSC_0037

Galt es nun nur noch ein kleines Programm zu schrieben, welches die Betätigungen des Reedkontaktes in Schläge pro Minute umrechnet.
Dazu schnell ein C# Programmchen geschrieben, welches über Direct Input den Joystick/Gameport abfragt.

private void DoPoll(Joystick stick)
        {
            IsPressed = false;
            while (true)
            {
                stick.Poll();
                JoystickState state = stick.GetCurrentState();
                DateTime currentClick = _lastClick;
                if (state.Buttons[0])
                {
                    if (!IsPressed)
                    {
                        IsPressed = true;
                        if (!_skip)
                        {
                            currentClick = DateTime.Now;
                            TimeSpan diff = currentClick.Subtract(_lastClick);
                            if (Math.Abs(diff.TotalSeconds - 0) > 0)
                            {
                                _clicksPerMinute = CalcClickPerMinute(diff);
                                _lastClick = currentClick;
                                _skip = true;
                            }

                        }
                        else
                        {
                            _skip = false;
                        }
                    }
                }
                else
                {
                    IsPressed = false;
                }
            }
        }

        public int CalcClickPerMinute(TimeSpan diff)
        {
            return (int)(60d / (diff.TotalSeconds));
        }

Somit lässt sich nun schonmal eine einfache Anzeige der Schlagzahl realisieren.

In Zukunft wird die daraus entstehende Software noch eine Stoppuhr, Schlagzähler und wenn möglich eine Anbindung an einen Garmin Ant+ Herzschlagsensor bekommen.
Wenn es halbwegs gescheite Werte zur Schätzung des Raumgewinnes pro Schlag gibt, kommt auch noch eine „Entfernungsmessung“ dazu.

Für einen ersten Test soll dies jedoch reichen.

 

DSC_0023

Zutaten:

  • Hammer Cobra Rudertrainer mit Reedkontakt zur Schlagzahlermittlung
  • USB Gameport
  • .net C# Anwendung mit SharpDX und WPF
  • Lötkolben
  • Kneifzange
  • 2,5h Zeit für Hard und Software
Published inRowalyzer

Kommentare sind geschlossen.