Ampelsteuerung an einer Kreuzung



  • Nehm ich Abel oder Kain? 😕
    Da gab's doch noch den Seth? 😃 😃 😃



  • Hallo Erhard,

    was möchtest Du mir damit sagen?



  • lol



  • Das er, genauso wie ich, noch nie was von Abel gehört hat.
    Wenn du Windows 98SE und drunter benutzt, kannst du den Parallelport per Asm, Pascal C++ etc ansteuern. Ansonsten brauchst irgendne Windows Api funktion.
    Such mal nach RAWWRITE oder ähnlichen Funktionen.
    Zum thema parralelport gabs mal ein großes thema. Ich schau mal ob ich es noch finde!

    Nr1: http://www.programmersheaven.com/zone7/cat402/index.htm
    Nr2:

    [ Dieser Beitrag wurde am 16.06.2003 um 13:20 Uhr von stealth00 editiert. ]



  • nachtrag:
    such mal mit der suchfunktion threads mit dem Thema Parallelport.
    Findest massig sachen.
    Du kannst die Daten über parallelport schicken. Das geht mit C++/ASM/Pascal/WinApi...
    dann kaufst du dir bei conrad schalterteile (frag am besten nen E-techniker was man dafür braucht) lötest die zusamen. Per Dioden und IC (glaub ich) müsstest du dann bestimmen das wenn Pin1 0 ist die Ampel 1 licht grün an ist. Wenn pin2 0 ist, ist a1 licht gelb an etc..
    Genaueres kann ich dazu auch nicht sagen...
    Wird aber nicht das leichteste!



  • Danke für Deine Tipps.

    Den Aufbau habe ich schon fertig. Also die ganzen Ampeln und Dioden usw...

    Sind eigentlich insgesamt "4" Ampeln die ich zu berücksichtigen habe, weil ich es einfach gleichgeschaltet habe.

    Um es einfach kurz zu erkären: Wenn die einen Autos grün haben, also von der Gegenseite und "ich", dann haben halt die Fußgänger rot.
    Und die anderen Autos von links und rechts an der Kreuzung haben rot und die Fußgänger dort grün.

    Programmieren werde ich es definitiv mit Ride (also in Assembler).

    Brauche insgesamt 2 Ports, weil ich 10 Bit brauche.
    2*Autoampel (6 Bit) + 2*Fußgängerampel (4 Bit) --> 10 Bit

    Meine Funktionstabelle sieht so aus...

    rot gelb grün rot grün // Die zweiten rot,grün sind für die Fußgängerampel
    1 0 0 0 1
    1 1 0 1 0
    0 0 1 1 0
    0 1 0 1 0
    ...Sprung zum Anfang...

    Und die anderen Ampeln müssen halt "negiert" sein, die von der anderen "Kreuzungsseite"

    Ich hoffe, das ist bis dahin ok.

    So habe ich den code bisher, der aber noch lange nicht fertig ist...

    include REG_51.PDF
    
    Loop: mov DPTR,#tab
          mov A,P1
          movc a,@A+DPTR
    
          SJMP Loop
    
          tab: db 1000100b,1101000b,0011000b,0101000b
    

    Wie kann ich am geschicktesten die Zeitverzögerungen beim Schalten einbauen?

    Vielen Dank nochmal!



  • Du kannst auch einfach immer 2 Datenpackete schicken, die dann in einem dings zwischenspeichern..
    Keine ahnung wie das teil genau hieß aber es gibt ne möglichkeit beliebig viele IC oder sowas hintereinander zuschalten. Dann kannst du 64 Bits schicken und dann die Speicherbänke überprüfen...



  • Sieht bei mir jetzt so aus und wie es aussieht läuft es auch zumindest in der Simulation bei Ride.

    include Reg_51.PDF
    
    Loop:      MOV DPTR,#tab
            mov a,0
            push 0E0h
            MOVC a,@A+DPTR
            MOV P1,a
            pop 0E0h
            inc a
    w1:     djnz r0,w1
            mov r1,#80
    w2:     djnz r1,w2
            push 0E0h
            movc a,@a+dptr
            mov P1,a
            pop 0E0h
    w3:     djnz r0,w3
            mov r1,#20
    w4:     djnz r1,w4
            inc a
            push 0E0h
            movc a,@a+dptr
            mov P1,a
            pop 0E0h
    w5:     djnz r0,w5
            mov r1,#80
    w6:     djnz r1,w6
            inc a
            push 0E0h
            movc a,@a+dptr
            mov P1,a
            pop 0E0h
    w7:     djnz r1,w7 
            mov r0,#20
    w8:     djnz r0,w8
    
            SJMP Loop
    
          tab: db 00010001b, 00011010b, 00000110b, 00001010b
    

    Jetzt habe ich nur zwei Probleme.

    Kann mir jemand sagen wie ich die einzelnen Bitstellen (von der Zustandstabelle) PINs zuweise? Also die Platine durch die ich es steuern will hat PINs 20 bis 40.
    Kann mir jemand sagen wie ich das machen kann?



  • 2*Autoampel (6 Bit) + 2*Fußgängerampel (4 Bit) --> 10 Bit

    Also mindestens für die Fussgänger Ampel kannst du 2 bits sparen.
    Man nehme einfach die 2 grünen und die 2 roten zusammen, es ist ja nicht möglich dass auf der einen seite grün ist und auf der anderen Rot.

    Verwendest du eigentlich einen mikrocontroller oder machst du das jetzt über den parallel port ?



  • Also die Schaltung mit den LEDs usw...ist ganz fertig.
    Mache es über den Parallelport.

    Nur habe ich immer noch das Problem, dass ich nicht weiß, wie ich die einzelnen Bitstellen den PINs zuweise...

    Weiß das jemand?



  • ?

    du weist, welche pins du am paralellport per software auf HI / LO stellst. du weist, an welche pins du deine leds angestöpselt hast (hoffentlich mit vorwiderstand). wo ist jetzt das problem?



  • Die Belegung des Parallel-Ports entnimmst du z.B.
    Parallelport(PC) im Hardwarebook.
    Mit dem timing etc. ist es wahrscheinlich am einfachsten unter DOS zu realisieren, da kannst du dann einfach den Timer Interupt nutzen, und die Daten auch relativ einfach nach draußen befördern.
    Ist es euch freigestellt, womit ihr das realisiert?

    mfg
    -bg-



  • War uns freigestellt.

    Ich bin zwar mit dem Projekt nicht fertig geworden, aber mit dem Quelltext schon. Habe es zeitlich nicht mehr hinbekommen das am Modell zu realisieren.
    Die Note (punkte) die dabei rausgekommen sind, waren trotzdem für mich sehr zufriedenstellend, auch wenn ich das nicht bis zum Ende fertig bekommen habe mit 2 anderen...


Anmelden zum Antworten