Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Kicker-Torzähler

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 04.01.2005, 23:22    Titel: Kicker-Torzähler Antworten mit Zitat

Hallo!

Ich habe folgendes "Problem":

Für einen Freund wollte ich jetzt eine Anlage für seinen Kicker bauen, der die gefallenen Tore zählt, und zwar mithilfe von 2 Lichtschranken.

Das Programm habe ich nun fertig geschrieben, kann es aber nicht ausprobieren, weil mir, außer vielleicht Draht, alles für die Schaltung fehlt. traurig

Allerdings habe ich keine Lust, da während der Schulzeit noch dranzuhängen, deshalb wollte ich fragen, ob jemand die Lust verspührt, sich den Code mal durchzugucken und mich auf grobe Fehler aufmerksam zu machen. mit den Augen rollen

Noch nicht Eingebautes: Hilfe; Datei editieren und berücksichtigen; Üngültigkeit eines Treffers

Here it comes:
Code:
' ##########################################################################
'               K  I  C  K  E  R  -  T  O  R  Z  Ž  H  L  E  R             
' ##########################################################################
'
' Roman Matzutt, Januar 2005
' Gremlin02@web.de
'
' Dieses Programm ist daf?r bestimmt, die Torz„hler eines Kickers
' abzuschaffen, und der Streit, der manchmal damit verbunden ist!
'
' Eine Schaltung, die dazu ben”tigt wird:
' * IR-Diode an Pin 2 (4)
' * Fotodiode/-transistor Kollektor an Pin 3  (5)
' *                       Ermitter  an Pin 15 (13)
' * Ein Taster zwischen Pin 6 und Pin 12 (ung?ltig)
' * Ein Taster zwischen Pin 7 und Pin 10 (Ende*)
'   * Ende separat, denn so kann man alles "runterfahren".
'
' Diese Schaltung ist nat?rlich im Kicker zu integrieren...

' Adressen definieren:
Offset0% = &H378 + 0
Offset1% = &H378 + 1

' Individuelle Angaben (max. Tore, Wartezeit) aus Datei lesen:
OPEN "kicker.dat" FOR INPUT AS #1
  IF NOT EOF(1) THEN INPUT #1, max.Tore% ELSE max.Tore% = 9
  IF NOT EOF(1) THEN INPUT #1, Wartezeit% ELSE Wartezeit% = 3
CLOSE #1

' Grundlegender Bildschirmaufbau:
COLOR 0, 7
CLS
COLOR 15, 1
PRINT "                                                                                "
PRINT "                      K I C K E R  -  T O R Z Ž H L E R                         "
PRINT "                                                                                "
COLOR 0, 3
PRINT "  <F1> Hilfe     <F2> Tore zum Sieg     <F3> Wartezeit nach Tor     <ESC> Ende  "
COLOR 0, 7
LOCATE 24, 66
PRINT "¸ Roman Matzutt";

' Ausg„nge aktivieren:
OUT Offset0%, 63

' Hauptschleife:
DO
  StatusBlau% = (INP(Offset1%) AND 8) / 8
  IF StatusBlau% = 0 THEN GOSUB TorBlau
  StatusRot% = (INP(Offset1%) AND 16) / 16
  IF StatusRot% = 0 THEN GOSUB TorRot
  StatusUng% = (INP(Offset1%) AND 32) / 32
  IF StatusUng% = 1 THEN GOSUB Ungueltig
  StatusEnde% = (INP(Offset1%) AND 64) / 64
  IF StatusEnde% = 1 THEN
    DO WHILE StatusEnde% = 1
    start! = TIMER
    IF TIMER > start! + 3 THEN GOSUB Ende
    LOOP
  END IF
LOOP

TorRot:
  ToreRot% = ToreRot% + 1
  FOR a = 1 TO LEN(LTRIM$(RTRIM$(STR$(ToreRot%))))
    Ziffer% = VAL(MID$(LTRIM$(RTRIM$(STR$(ToreRot%))), a, 1))
    SELECT CASE Ziffer%
    CASE 1
      RESTORE D1
    CASE 2
      RESTORE D2
    CASE 3
      RESTORE D3
    CASE 4
      RESTORE D4
    CASE 5
      RESTORE D5
    CASE 6
      RESTORE D6
    CASE 7
      RESTORE D7
    CASE 8
      RESTORE D8
    CASE 9
      RESTORE D9
    CASE 0
      RESTORE D0
    END SELECT
    FOR b = 1 TO 5
      READ line$(b)
      LOCATE 9 + b, (20 - (LEN(STR$(Ziffer%))) / 2) + 7 * (a - 2)
      COLOR 4, 7
      PRINT line$(b)
    NEXT b
    NEXT a
RETURN

TorBlau:
  ToreBlau% = ToreBlau% + 1
  FOR a = 1 TO LEN(LTRIM$(RTRIM$(STR$(ToreBlau%))))
    Ziffer% = VAL(MID$(LTRIM$(RTRIM$(STR$(ToreBlau%))), a, 1))
    SELECT CASE Ziffer%
    CASE 1
      RESTORE D1
    CASE 2
      RESTORE D2
    CASE 3
      RESTORE D3
    CASE 4
      RESTORE D4
    CASE 5
      RESTORE D5
    CASE 6
      RESTORE D6
    CASE 7
      RESTORE D7
    CASE 8
      RESTORE D8
    CASE 9
      RESTORE D9
    CASE 0
      RESTORE D0
    END SELECT
    FOR b = 1 TO 5
      READ line$(b)
      LOCATE 9 + b, (20 - (LEN(STR$(Ziffer%))) / 2) + 7 * (a - 2)
      COLOR 1, 7
      PRINT line$(b)
    NEXT b
    NEXT a

RETURN

Ende:
END

D1:
DATA " ÜÛÛ  "
DATA "ßßÛÛ  "
DATA "  ÛÛ  "
DATA "  ÛÛ  "
DATA "ßßßßßß"

D2:
DATA "ÜÛßßÛÜ"
DATA "   ÜÛß"
DATA " ÜÛß  "
DATA "ÛÛ  ÜÜ"
DATA "ßßßßßß"

D3:
DATA "ÜÛßßÛÜ"
DATA "    ÛÛ"
DATA "  ßßÛÜ"
DATA "ÜÜ  ÛÛ"
DATA " ßßßß "

D4:
DATA "  ÜÛÛ "
DATA "ÜÛßÛÛ "
DATA "ÛÜÜÛÛÜ"
DATA "   ÛÛ "
DATA "  ßßßß"

D5:
DATA "ÛÛßßßß"
DATA "ÛÛÜÜÜ "
DATA "    ÛÛ"
DATA "ÜÜ  ÛÛ"
DATA " ßßßß "

D6:
DATA " ÜÛßß "
DATA "ÛÛ    "
DATA "ÛÛßßÛÜ"
DATA "ÛÛ  ÛÛ"
DATA " ßßßß "

D7:
DATA "ÛÛßßÛÛ"
DATA "   ÜÛß"
DATA "  ÛÛ  "
DATA "  ÛÛ  "
DATA "  ßß  "

D8:
DATA "ÜÛßßÛÜ"
DATA "ÛÛ  ÛÛ"
DATA "ÜÛßßÛÜ"
DATA "ÛÛ  ÛÛ"
DATA " ßßßß "

D9:
DATA "ÜÛßßÛÜ"
DATA "ÛÛ  ÛÛ"
DATA " ßßßÛÛ"
DATA "  ÜÛß "
DATA " ßß   "

D0:
DATA "ÜÛßßÛÜ"
DATA "ÛÛ  ÛÛ"
DATA "ÛÛ  ÛÛ"
DATA "ÛÛ  ÛÛ"
DATA " ßßßß "


Ü == CHR$(220)
Û == CHR$(219)
ß == CHR$(223)


Dummer Thread, ich weiß ;o)
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.01.2005, 03:31    Titel: Antworten mit Zitat

Hallo

Zum einen solltest du das mit der Datei, in der die pers. Einstellungen gespeicht werden noch anders machen. Z.B. eine Fehlerbehandlung, die eine Art Defaultdatei mit Standardwerten anlegt, wenn sie nicht gefunden wird. Dann ist das Ganze auch etwas umständlich geschrieben. Ich habe mal versucht, den Teil mit der Anzeige etwas kompakter zu machen. Ausserdem kannst du die Grösse, Farbe usw. der Grafik relativ einfach ändern.

Code:
'Taste 1 = Tor fue?r Blau
'Taste 2 = Tor f?uer Rot
'Taste 3 = Zuruecksetzen
'Ende mit ESC

SCREEN 12
CLS
DIM pixel(9, 6, 9)
GOSUB zahlen
GOSUB punkte
GOSUB null

DO
DO
DO
t$ = INKEY$
LOOP WHILE t$ = ""
IF t$ = CHR$(27) THEN END
t = ASC(t$) - 48
IF t = 3 THEN GOSUB null
LOOP WHILE t < 1 OR t > 2
tor(t) = tor(t) + 1
IF tor(t) = 10 THEN GOSUB null ELSE GOSUB anzeige
LOOP

null:
FOR t = 1 TO 2
tor(t) = 0
GOSUB anzeige
NEXT
RETURN

anzeige:
FOR x = 0 TO 6
xb = x * 20 + (t - 1) * 220 + 140
FOR y = 0 TO 9
yb = y * 20 + 120
LINE (xb, yb)-(xb + 18, yb + 18), pixel(tor(t), x, y), BF
NEXT
NEXT
RETURN

zahlen:
FOR a = 0 TO 9
LOCATE 1, 1
PRINT USING "#"; a
FOR x = 0 TO 6
FOR y = 0 TO 9
pixel(a, x, y) = POINT(x, y + 2)
PSET (x, y + 2), 0
NEXT
NEXT
NEXT
RETURN

punkte:
FOR x = 300 TO 320 STEP 20
FOR y = 160 TO 180 STEP 20
LINE (x, y)-(x + 18, y + 18), 15, BF
LINE (x, y + 80)-(x + 18, y + 98), 15, BF
NEXT
NEXT
RETURN


Wie hast du dir denn das mit der Lichtschranke vorgestellt ? Du müsstest ja die gesamte Fläche des Tores abdecken - da wird eine am Boden nicht ausreichen. Bei mehreren hast du dann das Problem, das sie sich überlagern. Und du musst Störungen durch Tageslicht etc. ausschalten. Eine einfache Schaltung aus IR Sende- und Empfängerdiode wird nicht ausreichen, um ein ordentliches Ergebnis zu bekommen. Da musst du wahrscheinlich etwas mehr Hardwareaufwand treiben. Ich hätte auch schon ein paar Ideen dazu.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 05.01.2005, 09:52    Titel: Antworten mit Zitat

Hi, deinen Code geh ich erst nach dem Posten richtig durch.

Also, aus dem Kicker soll der Boden im Tor genommen werden (Bis jetzt muss man den hochdrücken, damit der Ball wieder rauskommt.), um einen "Kasten" dranzuhängen, durch den der Ball dannn anh unten fällt und aufgefangen wird. Im Kasten sollte dann auch die Schranke untergebracht werden.

Wenn das Licht verschwinden muss, dann könnte man doch so 3/4 des Tores wieder mit einem abschüssigen Boden versehen und dann das Loch mit Papier bedecken, das nur an einer Seite fest ist, wenns auch nciht stabil ist.
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.01.2005, 13:52    Titel: Antworten mit Zitat

Hallo

Ich kann mir nicht so richtig vorstellen, wie dein Kickertisch aussieht, da weisst du wohl am besten, wie die Lichtschranke plaziert werden muss. Vielleicht könnte man ja auch einen Mikroschalter unter den Boden im Tor einbauen, der durch das Gewicht des Balles hinunter gedrückt wird. Bei einer Lichtschranke müsste man nämlich fast noch eine Triggerschaltung einbauen, um saubere Digitalwerte zu bekommen. Ich würde übrigens den COM-Port statt der Druckerschnittstell benutzen. Der ist Kurzschlussfest und praktisch unzerstörbar, währen der LPT da relativ empfindlich ist.

Das Ganze liesse sich auch mit relativ geringem Aufwand ganz ohne PC realisieren. Ein IC mit zwei 4-Bit Zählern für die Tore, zwei BCD-Decoder und zwei 7-Segment Aneigen. Alles zusammen (mit Schaltern oder Lichtschranken) dürfte maximal 10 Euro kosten.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 05.01.2005, 14:09    Titel: Antworten mit Zitat

Hallo.

Von ICs und Konsorten habe ich leider keine Ahnung, sonst würde ich das auch gerne machen.

Mit der Idee eines Tasters habe ich auch schon gespielt, aber mechanisch wäre das bestimmt aufwendig, da man einen Schalter braucht, der von der Gewichtskraft + Schwerkraft des Balles, nicht aber alleine von der Gewichtskraft dessen betätigt wird, diese Spanne ist leider nur sehr klein, da muss man schon viel ausprobieren.

Oder meisnt du gar irgendwas spezielles?
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.01.2005, 14:28    Titel: Antworten mit Zitat

Hallo

Der Unterschied zwischen Gewichts- und Schwerkraft will sich mir nicht so ganz erschliessen. Du sprachst von einer Bodenplatte im Tor, auf der der Ball zu liegen kommt. Wenn du unter die einen Schalter so montierst, das er vom Gewicht des Balle ausgelöst wird, reicht das ja schon. Um eine doppelte Zählung durch Herumspringen des Balles zu vermeiden müsste Hard- oder Sotwaremässig noch ein Monoflop eingebaut werden, der z.B. nur eine Zählung pro Sekunde zulässt oder so. Wenn die den Boden nach oben klappst um den Ball auszuwerfen, wird die Schaltung wieder "scharf" gemacht.

Die Lösung mit ICs wäre mit nicht viel mehr Aufwand verbunden, als es an den Rechner anzuschliessen. Einen Schaltplan dazu könnte ich dir evtl. erstellen. Das wäre dann aber ein sehr QB-fernes Thema und in meinem eigenen Forum vielleicht besser aufgehoben lächeln

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 05.01.2005, 14:52    Titel: Antworten mit Zitat

Anregung: Skill, mit solchen Schaltplänen und Erklärungen könntest du deiner Seite eine ganze Menge mehr Inhalt einhauchen! lächeln
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 05.01.2005, 15:00    Titel: Antworten mit Zitat

Hallo.

Stimmt ja!
So eine Pause müsste ich ja auch bei einer Lichtschranke einbauen, denn sonst könnte er ja öfters als nur 2x zählen können.

Dieser Unterschied:
Ich bezweifele selber, dass es wirklich Gewichtskraft ist, aberm ich meine folgenen Unterschied: Die Kraft, die auf den Schalter wirkt, wenn der Ball aus einer Höhe druaf fällt (ich schätze, daswerden so 10cm), und die, die wirkt, wenn der Ball einfach drauf liegt, aber ich könnte dann ja eine Schräge bauen, sodass der Ball nur einmal drauffällt und dann runterrollt.

Schaltplan: Wenn du dir diese Mühe wirklich machen willst, dann kannst du mir den ja als eMail schicken, wahrscheinlich haben wir die ICs auch da (kleiner Betrieb meines Vaters, er ist nur nicht mit Verbindung zum PC uä. vertraut.)
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 05.01.2005, 15:15    Titel: Antworten mit Zitat

Hallo

Um einen Schaltplan erstellen zu können, bräuchte ich schon noch ein paar Spezifikationen. Mit oder ohne PC, mit Lichtschranke oder Schalter, max. Toranzahl einstellbar oder immer Sieg beim 10. Tor usw.

Zitat:
Anregung: Skill, mit solchen Schaltplänen und Erklärungen könntest du deiner Seite eine ganze Menge mehr Inhalt einhauchen! lächeln


Ich weiss...

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 05.01.2005, 15:19    Titel: Antworten mit Zitat

Alle möglichen Kombinationen zwinkern

Quatsch, also: Ohne PC, Taster, Bis 9 Tore (fest).

Und ich bedanke mich schon imVorraus!
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz