Programm zum Ansteuern meines RadErgometers

Hallo Profis!
Also ich hab da so eine Idee die ich verwirklichen möchte…und zwar hab ich einen RadErgometer zuhause…da Dieser kein Display besitzt das mir Geschwindigkeit,Trittfrequenz usw anzeigt will ich mir da was programmieren…leider bin ein ziemlicher programmiernewbie!..Ich hab mir einen getriebemotor zwecks Stärkeneinstellung(Am Stellrad) montiert den ich schon über die Serielle Schnittstelle ansteuern kann…Hardwaretechnisch funktioniert auch alles einwandfrei…

Nun soll mir visual basic ein Diagram Zeichnen…X-Achse(Trettstärke von 1-10)und auf der Y-Achse die Zeit in Minuten…(Gesamte Trainingsdauer z.B 2h)

Trettstärke

10 .
9 .
8 .
7 .
6 .
5 . **********(Leistungskurve)
4 . ***********
3 . *
2 . *
1 .********
…min

Und ich möchte nun wie bei einem Paintbrush einfach meine Leistungskurfe einzeichnen(…Nach dieser Kurve sollte sich dann der Stellmotor richten…
Alles aander hab ich schon hinbekommen…Stoppuhr,Trittfrequenz in Minuten,Km/h…
Wäre echt dankbar für eure tips!
Die Ansteuerung der Hardware(Getriebemotor,Reed Kontakt usw)funktioniert… ich bekomm nur nicht das Diagramm und die Zeichenfunktion hin)

Grüsse aus Österreich und Danke für eure Antworten!

Hallo,

das Schwere ist fertig, nur das Leichte fehlt noch? Das ist mal lustig. :smile: Was ich verstanden habe, suchst Du so etwas …

'Auf der Form muß eine Picturebox und ein Timer liegen

Option Explicit
Dim t As Long
Dim TrSt As Integer 'Deine Tretstärke

Private Sub Form\_Load()
 Timer1.Interval = 100 'alle Hundertstel Sekunde zeichnen
 Timer1.Enabled = True
 t = Timer
End Sub

Private Sub Timer1\_Timer()
 Dim mn As Integer 'Minuten
 Dim cx As Integer
 Dim cy As Integer
 mn = 2 'mal nur 2 Minuten
 TrSt = 5 'nur mal eine Wert setzen, damit der Zest klappt
 'cx aus der Breite der PicBox und der Zeit ermitteln
 cx = (Picture1.ScaleWidth / (mn \* 60)) \* (Timer - t)
 'cy aus der Höher der Picbox und Tretstärke ermitteln
 cy = (Picture1.ScaleHeight / 10) \* TrSt
 Picture1.PSet (cx, cy)
End Sub

Gruß, Rainer

Nachtrag Tippfehler …
Hi,

komisch, nur beim Quellcode vertippe ich mich nicht. Beim Lesen der Kommentare ist etwas Phantasie erforderlich, ich hoffe es geht. :smile:

Gruß, Rainer

!

Hallo Rainer!
Erstmalls danke für deine rasche Antwort!
Das Programm funktioniert auch,nur möchte ich selbst die Belastung im Diagramm einzeichnen und dann über einen Start Button das Programm starten und der Stellmotor arbeitet dann laut meiner Belastungskurve…
Das Diagramm soll so eine Gitterfunktion aufwiesen…ähnlich wie bei Vier Gewinnt…habe dir die Graphik und ein paar photos per email geschickt…
lg und Danke wünscht Thomas!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Aenderung
Hallo,

Erstmalls danke für deine rasche Antwort!

nichts zu danken, das war ja nichts Großes.

Das Programm funktioniert auch,nur möchte ich selbst die
Belastung im Diagramm einzeichnen und dann über einen Start
Button das Programm starten und der Stellmotor arbeitet dann
laut meiner Belastungskurve…

Moment. Ich habe Dich scheinbar falsch verstanden. Mal wieder typisch für mich, das passiert mir hier ständig. :smile: Also lass mich erst noch mal nachfragen.

Die Kurve im Diagramm soll nicht Daten anzeigen, die von außen geliefert werden, sondern die willst Du manuell eintragen, dann das Programm starten und der Wert in der Kurve wird dann als Steuersignal nach außen weitergegeben.

Habe ich das jetzt so weit richtig verstanden?

Wenn ja, mußt Du mir erzählen, wie Du die Kurve gern eintragen würdest.
Freihand mit der Maus malen, einzelne Punkte frei Hand mit der Maus klicken und der Computer verbindet die Punkte mit Linien, eine Wertetabelle garfisch darstellen, Schieberegler und ein Button, zum Eintragen des Wertes … mir fallen viele Möglichkeiten ein … :smile:

Das Diagramm soll so eine Gitterfunktion aufwiesen…

Ein Gitter zu malen ist kein Problem.

ähnlich
wie bei Vier Gewinnt…habe dir die Graphik und ein paar
photos per email geschickt…

hmmm, an die Adresse, die da oben steht? Die habe ich (noch) nicht bekommen. Na erst mal sehen, wie der ‚wichtige‘ Teil wird, ein Gitter ist ja nur eine kleine Schleife …

Gruß, Rainer

Bilder sind angekommen
Hallo Thomas,

die Mail ist angekommen. Der Motor sieht ja richtig gut aus … :smile:

Ja, die Graphik so zu gestalten ist kein Problem. Zehn Kästchen hoch ist mir klar. Und dann die Karos Quadratisch? Die Eingabe mit Klick in ein Karo und der Balken springt zu der Position … ? Kein Problem. Ich muß nur wissen, was Du brauchst. Noch ist es eine leichte Aufgabe. :smile: (Viel Leichter, als das was Du schon gemacht hast.)

Gruß, Rainer

Hallo,

Erstmalls danke für deine rasche Antwort!

nichts zu danken, das war ja nichts Großes.

Das Programm funktioniert auch,nur möchte ich selbst die
Belastung im Diagramm einzeichnen und dann über einen Start
Button das Programm starten und der Stellmotor arbeitet dann
laut meiner Belastungskurve…

Moment. Ich habe Dich scheinbar falsch verstanden. Mal wieder
typisch für mich, das passiert mir hier ständig. :smile: Also lass
mich erst noch mal nachfragen.

Die Kurve im Diagramm soll nicht Daten anzeigen, die von außen
geliefert werden, sondern die willst Du manuell eintragen,
dann das Programm starten und der Wert in der Kurve wird dann
als Steuersignal nach außen weitergegeben.

Habe ich das jetzt so weit richtig verstanden?

Wenn ja, mußt Du mir erzählen, wie Du die Kurve gern eintragen
würdest.
Freihand mit der Maus malen, einzelne Punkte frei Hand mit der
Maus klicken und der Computer verbindet die Punkte mit Linien,
eine Wertetabelle garfisch darstellen, Schieberegler und ein
Button, zum Eintragen des Wertes … mir fallen viele
Möglichkeiten ein … :smile:

Das Diagramm soll so eine Gitterfunktion aufwiesen…

Ein Gitter zu malen ist kein Problem.

ähnlich
wie bei Vier Gewinnt…habe dir die Graphik und ein paar
photos per email geschickt…

hmmm, an die Adresse, die da oben steht? Die habe ich (noch)
nicht bekommen. Na erst mal sehen, wie der ‚wichtige‘ Teil
wird, ein Gitter ist ja nur eine kleine Schleife …

Gruß, Rainer

Genau das hast du richtig verstanden…Das Programm bekommt von mir di e Daten und schickt das Steuersignal nach Aussen…

Ja ich hätte gerne ein Diagramm mit einer fertigen Gitterstruktur…
Dann fülle ich die einzelnen Gitter einfach aus indem ich mit der Maus auf das Gitter cklicke und es so einfach markiere…
Das ist mein Problem…Brauche auch noch die Werte Zeitpunkt und Stärke(1-10) damit sich der Motor danach richten kann…
So kann ich dann festlegen eine Minute Belastung 1…in Minute zwei auf Belastung 5 fahren usw…

Ja der Motor ist ein Fischertechnik Motor…von meinem kleinen Neffen ausgeborgt…:smile:
Hab auch im Internet mal nachgeschaut ob da sich schon jemand an einem Ergometer vergangen hat…habe aber nichts derartiges gefunden…:smile:
Wenn es funktioniert schick ich dir ein video wenn du lust hast!
grüsse!

Hallo,

Wenn es funktioniert schick ich dir ein video wenn du lust
hast!

Klar! Das sehe ich mir doch gern mal an.

Hier Dein Code. Du mußt die benötigten Steuerelemente nur irgendwie auf die Form werfen, die richtige Anordnung erledigt das Programm.

Gruß, Rainer

'Auf der Form werden folgende Steuerlemente erwartet:
'Picture1
'Picture2
'Command1
'Command2
'Command3
'Text1
'Slider1
'Timer1

Option Explicit
Dim Mn As Integer 'Minuten Laufzeit
Dim t As Double 'Startwert des Timers
Dim Wert(13) As Integer 'in dieses Feld kommen die Werte

Dim xb As Integer 'linker Rand des Gitters
Dim yb As Integer 'obere Kante des Gitters

Private Sub Command1\_Click()
 Timer1.Interval = 100
 Timer1.Enabled = True
 t = Timer
End Sub

Private Sub Command2\_Click()
 Mn = Val(Text1.Text)
 Grid
End Sub

Private Sub Command3\_Click()
 Timer1.Enabled = False
 Slider1.Value = 1
End Sub

Private Sub Form\_Load()
 '\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
 Mn = 2 'zwei Minuten ... bitte die Zeit hier eintragen
 'Das ist nur eine Vorgabe, kann im laufenden 
 'Programm geändert werden 
 '\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*

 'hier wedren nur die Steuerelemente positioniert

 Form1.ScaleMode = 3
 Form1.Top = 15 \* 20
 Form1.Left = 15 \* 20
 Form1.Width = 15 \* 650
 Form1.Height = 15 \* 500

 Picture1.ScaleMode = 3
 Picture1.Appearance = 0
 Picture1.BackColor = QBColor(15)
 Picture1.Left = 10
 Picture1.Top = 10
 Picture1.Width = 500
 Picture1.Height = 400
 Picture1.AutoRedraw = True
 Picture1.ForeColor = vbRed

 Picture2.ScaleMode = 3
 Picture2.Appearance = 0
 Picture2.BackColor = QBColor(15)
 Picture2.Left = 530
 Picture2.Top = 40
 Picture2.Width = 20
 Picture2.Height = 300
 Picture2.AutoRedraw = True
 Picture2.ForeColor = vbRed

 Slider1.TickStyle = sldTopLeft
 Slider1.Orientation = ccOrientationHorizontal
 Slider1.Left = 35
 Slider1.Top = 420
 Slider1.Height = 30
 Slider1.Width = 450
 Slider1.Max = 600 \* Mn

 Text1.Top = 360
 Text1.Left = 530
 Text1.Height = 10
 Text1.Width = 100
 Text1.Text = 2

 Command2.Left = 530
 Command2.Top = 390
 Command2.Height = 20
 Command2.Width = 100
 Command2.Caption = "Minuten einstellen"

 Command1.Left = 530
 Command1.Top = 420
 Command1.Height = 20
 Command1.Width = 100
 Command1.Caption = "Start"

 Command3.Left = 530
 Command3.Top = 450
 Command3.Height = 20
 Command3.Width = 100
 Command3.Caption = "Stopp"

 Grid

End Sub

Private Sub Grid()
 Dim xt As Integer
 Dim yt As Integer
 xb = 40
 yb = 30

 Picture1.Cls
 Slider1.Max = 600 \* Mn

 For xt = 0 To 14
 Picture1.Line (xb + (xt \* 30), yb)-(xb + (xt \* 30), yb + 10 \* 30), vbRed
 If xt = 0 And cx = 0 And cy = Mn \* 600 Then
 Timer1.Enabled = False
 Slider1.Value = 1
 Exit Sub
 End If
 Slider1.Value = tm
 TrSt = Wert(Int((tm / (Mn \* 600)) \* 14))
 '\*\*\*\*\*\* Hier kannst Du Deinen Wert an die Hardware übergeben \*\*\*\*
 Ausgabe TrSt
End Sub

Private Sub Ausgabe(TrSt As Integer)
 Picture2.Line (0, 0)-(20, (300 - (30 \* TrSt))), vbWhite, BF
 Picture2.Line (0, (300 - 30 \* TrSt))-(30, 300), vbRed, BF
End Sub

Wow…Danke!
Das werd ich gleich mal Sonntags ausprobieren…freu mich schon…wo hast du eigentlich so programmieren gelernt…Hast dirs selbt beigebracht oder in Kursen?
Ich hab mir vor einem Monat zwei Bücher gekauft…Elektronik am Pc und Visual Basic 6.0 in 21 Tagen…Obwohl das mit den 21 Tagen glaub ich nicht ganz…:smile:
grüsse!
Werd dich am laufenden halten!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

wo hast du eigentlich programmieren gelernt…Hast
dirs selbt beigebracht oder in Kursen?

Nur mit VB selbst. Kein Kurs, keine Bücher, nur in der Hilfe suchen, ausprobieren … und in Foren fragen. :smile: Mit einem guten Lehrgang geht das aber sehr viel schneller und man spart sich einige Fehler. Ich habe 1993 mit VB4 angefangen und Kann es noch nicht richtig. Bei Datenbanken blicke ich immer noch nicht voll durch.

Gruß, Rainer