Zeitmessung per Taste

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Zeitmessung per Taste

Beitrag von roemi » Mo 3. Okt 2016, 19:18

Hallo,

ich begebe mich auf ein, für mich, völlig neues Gebiet.

Für einen Fun Wettkampf suchen wir eine günstige Lösung der Zeitmessung.

Die Idee: Mit einem Taster (nicht Tastatur) wird die Zeitmessung für vier Teilnehmer gestartet und mit vier weiteren Tastern wird die Zeit einzeln gestoppt.

Ich glaube verstanden zu haben das dies mit einer https://www.luedeke-elektronic.de/de/El ... VM167.html funktionieren kann.

Richtig? Und wenn ja, kann man das Signal unter Gambas verarbeiten?

Ich hoffe unsere Frage verständlich rübergebracht zu haben.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Di 4. Okt 2016, 10:00

Hi,
roemi hat geschrieben:...Für einen Fun Wettkampf suchen wir eine günstige Lösung der Zeitmessung. Die Idee: Mit einem Taster (nicht Tastatur) wird die Zeitmessung für vier Teilnehmer gestartet und mit vier weiteren Tastern wird die Zeit einzeln gestoppt...
In dem Fall reicht eine RS232 bzw. ein USB nach RS232 Adapter den es für etwa 6,-- Euronen gibt aus, zuzüglich der benötigten Taster und Kabel.

Bei der Software-Farm gibt es ein RS232 Beispielprogramm, war auch die Vorlage für meinen Rundenzähler der mit einer Lichtschranke betrieben wird. In Deinem Fall ist der Programmieraufwand recht übersichtlich da die Signale direkt sind, also keine äußerlichen Einflüsse wie Licht, Schatten, Signalstärke...

Beispiel für ein Ausgangssignal (z.B. die Zeitmessung wird gestartet): gambas code
Public Sub btnDTR_Click()                                                 ' der Knopf "DTR" wurde gedrückt
  If SPort.Status = Net.Active Then                                       ' wenn der Port offen ist
    If SPort.DTR Then                                                     ' wenn DTR ein ist
      SPort.DTR = False                                                   ' DTR (4) ausschalten (auf low)
      imgDTR.Picture = Picture["img/LED-aus.png"]                         ' LED ausschalten
    Else                                                                  ' wenn DTR aus ist
      SPort.DTR = True                                                    ' DTR (4) einschalten (auf high)
      imgDTR.Picture = Picture["img/LED-ein.png"]                         ' LED einschalten
    Endif
  Else                                                                    ' wenn der Port nicht offen ist
    txaERXD.Text = "DTR: " & lblOPF.Text & Chr(10) & txaERXD.Text & Chr(10)
  Endif
End
Beispiel für ein Eingangssignal (z.B. einer der Taster wurde betätigt: gambas code
Public Sub SPort_DCDChange(bEin As Boolean)                               ' Zustand von DCD (1) hat gewechselt
  If bEin Then                                                            ' ein (high)?
    imgDCD.Picture = Picture["img/LED-ein.png"]                           ' LED einschalten
  Else                                                                    ' oder aus (low)?
    imgDCD.Picture = Picture["img/LED-aus.png"]                           ' LED ausschalten
  Endif
End
Grüßle
Gruß, Naubaddi

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Di 4. Okt 2016, 10:35

Hi noch mal,

hm, habe etwas übersehen, Du brauchst ja 5 Eingänge. Da die RS232 nur 4 Eingänge als high/low verarbeiten kann muß ein Eingang doppelt genutzt werden, spart dann sogar einen Taster ;-). Oder um sicher zu gehen das der doppelt genutzte Taster nicht versehentlich auch das Zielsignal gibt 5 Taster wovon 2 an der selben Leitung hängen, muss dann im Programm berücksichtigt werden.

Also 1 Taster wird zum Starten genutzt und danach zum Stoppen, bleibt also dieses übrig:

Beispiel für ein Eingangssignal (z.B. einer der Taster wurde betätigt: gambas code
Public Sub SPort_DCDChange(bEin As Boolean)                               ' Zustand von DCD (1) hat gewechselt
  If bEin Then                                                            ' ein (high)?
    imgDCD.Picture = Picture["img/LED-ein.png"]                           ' LED einschalten
  Else                                                                    ' oder aus (low)?
    imgDCD.Picture = Picture["img/LED-aus.png"]                           ' LED ausschalten
  Endif
End
An den Eingängen DCD, DSR,CTS und RNG wird ein Kontakt der Taster angeschlossen, dann noch DTR als Spannung für den anderen Kontakt der Taster und fertig ist die Laube.
INFO, an/mit einer RS232 kann man nix kaputt machen das Ding ist Kurzschlussfest!

Grüßle
Gruß, Naubaddi

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » Di 4. Okt 2016, 11:02

Cool. Danke!

Damit werde ich mich am WE beschäftigen! Und Euch auf dem laufenden halten bzw. noch weitere Fragen stellen.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » Mi 5. Okt 2016, 13:31

Eine kurze Frage ... mit RNG meinst Du RTS PIN 7?
Egal welche Beispiele ich für die Pinbelegung heranziehe, RNG ist nirgendwo zu finden.

Danke
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Do 6. Okt 2016, 21:09

Hi,

nein mit RNG oder auch RI ist der "Ring Indicator" pin 9 an der RS232 gemeint.

die RS232:

Code: Alles auswählen

1 - DCD, CD, RLSD - (Data) Carrier Detect - Eingang
2 - RxD, RX, RD --- Receive Data ---------- Eingang
3 - TxD, TX, TD --- Transmit Data --------- Ausgang
4 - DTR ----------- Data Terminal Ready --- Ausgang
5 - GND ----------- Ground ---------------- Minus
6 - DSR ----------- Data Set Ready -------- Eingang
7 - RTS ----------- Request to send ------- Ausgang
8 - CTS ----------- Clear to Send --------- Eingang
9 - RNG oder RI --- Ring Indicator -------- Eingang
Grüßle
Gruß, Naubaddi

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Fr 7. Okt 2016, 12:27

Hi,

ich habe da mal etwas vorbereitet, eine geänderte Version von "SerialPort" mit der man 4 Zeiten stoppen kann.
Die geänderte Version im Anhang ist nicht perfekt und es werden keine Fehler wie z.B. Taster mehrfach gedrückt abgefangen.

Anschluss der Taster an der RS232 zum Testen:

Taster 1 an CTS und DTR
Taster 2 an DCD und DTR
Taster 3 an DSR und DTR
Taster 4 an RNG und DTR

gestartet wird die Stoppuhr mit einem Klick auf "DTR", dabei wird auch "RTS" auf high gesetzt, so könnte man an "RTS" und "GND" z.B. ein Startlicht, Startton... anschließen.

ACHTUNG, gegen externe Spannung ist die RS232 nicht geschützt, also eine galvanische Trennung benutzen!

Ein Optokoppler ist z.B. eine galvanische Trennung.

Grüßle
Dateianhänge
Stoppuhr4x.tar.gz
(74.7 KiB) 146-mal heruntergeladen
Gruß, Naubaddi

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » Sa 8. Okt 2016, 08:39

Öhhh ... Klasse ... danke :oops:

Viel schneller als ich. Ich werde mich schnellstmöglich ans testen machen und Dich auf dem laufenden halten.

Aber sei niche böse wenn es ein wenig dauert ... habe z.Z. noch andere Kriegsschauplätze.

DANKE :!:
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » Sa 8. Okt 2016, 10:07

An meinen Fragen läßt sich feststellen, das ich schon ewig nichts mehr mit Seriellen Schnittstellen zu tun hatte und über Gambas hat es "damals" problemlos geklappt.
Aber jetzt ... ich kann schon keinen Port öffen .. shell code
michael@matearbeitstier ~ $  ps -ef | grep tty
root      1484     1  0 09:25 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
root      1532  1526  1 09:25 tty8     00:01:25 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
michael   4690  4633  0 10:49 pts/1    00:00:00 grep --color=auto tty
michael@matearbeitstier ~ $ dmesg | grep tty
[    0.000000] console [tty0] enabled
[    1.110981] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    1.132656] 0000:00:03.3: ttyS4 at I/O 0xecb8 (irq = 17, base_baud = 115200) is a 16550A
Vermutlich nur ein kleiner dummer Fehler ...
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Sa 8. Okt 2016, 20:18

Hi,
roemi hat geschrieben:...Aber jetzt ... ich kann schon keinen Port öffen...
wie sieht es mit der Berechtigung aus?

Code: Alles auswählen

* USB/RS232 Berechtigung für den Benutzer aktivieren (Terminal)
    sudo usermod -aG dialout USER
    abmelden/anmelden nicht vergessen
vergesse ich oft.

Grüßle
Gruß, Naubaddi

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » So 9. Okt 2016, 17:55

Code: Alles auswählen

chmod 666 /dev/ttyS0
Damit lässt sich zumindest schonmal der Port öffnen :D

Römi
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Mo 10. Okt 2016, 07:50

Hi,
roemi hat geschrieben:...Damit lässt sich zumindest schonmal der Port öffnen :D
sogar für Jeden :wink: , wäre

Code: Alles auswählen

chmod 660 /dev/ttyS0
nicht besser gewesen?

Und was macht man bei einem USB-RS232 Adapter der erst sichtbar ist wenn er angeschlossen ist?

Grüßle
Gruß, Naubaddi

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » Mo 10. Okt 2016, 20:04

Hi,

ein Zwischenstand ... es klappt.
Hab es erst mal provisorisch getestet ... jetzt löte ich Taster an und fange an zu programmieren.

Danke Dir.

Keine Sorge, mir fallen schon noch ein paar Fragen ein.

Römi
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

roemi
Site Admin
Beiträge: 423
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von roemi » Mi 12. Okt 2016, 19:33

Sodele, Taster sind gelötet. Vier an der Zahl.
Funzen auch.
Jetzt geht es ans schreiben.

Danke

Römi (der für jeden weiteren Tipp dankbar ist) :mrgreen:
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Naubaddi
Foriker
Beiträge: 90
Registriert: Di 10. Jan 2012, 21:30
Kontaktdaten:

Re: Zeitmessung per Taste

Beitrag von Naubaddi » Do 13. Okt 2016, 13:16

Hi,

das hört sich doch schon gut an, nimm doch einfach das weiter oben angehängte Programm "Stoppuhr4x" und passe es Deinen Anforderungen an. Es sollte kein großer Aufwand sein, (fast) jede Zeile hat eine kurze Bemerkung was sie macht. Die eingefügten Zeilen für das Stoppen sind mit ">-- Stoppuhr ---" und "--- Stoppuhr --<" eingefasst, ist nicht wirklich viel.

Grüßle
Gruß, Naubaddi

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste