-         

Ergebnis 1 bis 7 von 7

Thema: Bascom Verzweigung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    28.04.2009
    Beiträge
    11

    Bascom Verzweigung

    Anzeige

    Hallo!

    Für meine momentanes Projekt soll ein LED beim Schließen eines Reed Kontaktes blinken.
    Nachdem ich das mit den Pullupwiederstand und mit den LED Vorwiderstand auf die Reihe bekommen habe funktioniert es jetzt an und für sicht gut, nur ein kleines Problem wäre da noch.

    Wenn ich wärend des Blinkens den Kontakt wieder öffne blinkt es trotzdem noch weiter bis quasi eine neue Schleife wieder anfängt, dass ist bei meinem Programmiergeschick auch nicht verwunderlich, aber wie kann ich das machen, dass das LED in dem Moment wo der Kontakt unterbrochen wird aufhört zu blinken??


    Config Portb.0 = Output
    Config Pina.1 = Input
    Porta.1 = 1


    Do

    If Pina.1 = 0 Then

    Waitms 5000

    Portb.0 = 1 '
    Waitms 30
    Portb.0 = 1 '
    Waitms 30
    Portb.0 = 1 '
    Waitms 30

    Else

    Portb.0 = 1

    Loop

    End If

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Frage 1: wieso blinkt da überhaupt was ? Du setzt doch Portb.0 immer nur auf 1 und nie auf 0 ?

    Frage 2: Wieso Waitms 5000 ? d.h. es dauer 5 Sekunden, bis irgendwas geschehen kann ?

    Frage 3: Wieso Waitms 30 ? der Bursche ist ja dann in 90 millisekunden mit dem Blinken fertig, das sieht man doch fast nicht ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    28.04.2009
    Beiträge
    11
    Zitat Zitat von PicNick
    Frage 1: wieso blinkt da überhaupt was ? Du setzt doch Portb.0 immer nur auf 1 und nie auf 0 ?
    Sorry hab beim kürzen einen Fehler gemacht im Originalprogramm wird auch auf 0 gesetzt.

    Zitat Zitat von PicNick
    Frage 2: Wieso Waitms 5000 ? d.h. es dauer 5 Sekunden, bis irgendwas geschehen kann ?
    Das soll auch so sein....

    Zitat Zitat von PicNick

    Frage 3: Wieso Waitms 30 ? der Bursche ist ja dann in 90 millisekunden mit dem Blinken fertig, das sieht man doch fast nicht ?
    Das war nur die gekürzte Version des Programms... geht noch lange weiter mit dem ein und ausschalten..

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.418
    frag vor jedem schritt den pin ab oder seh dir die sache mit dem interrupt durch

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Hilft nix, du musst während des Blinkens immer wieder den Input abfragen, ob der Kontakt noch immer geschlossen ist.
    Für das Blinken machst du am besten eine Schleife, da ist das Ganze auch kompakt

    z.B:
    Code:
    DIM  Flashcount as Byte
    
    Do 
    Portb.0 = 1                          ' LED aus 
    If Pina.1 = 0 Then               ' gedrückt ?
                 Waitms 5000              ' jupp
                 gosub blinkenlights     ' lichtspiele
    End If
    Loop 
    END
    '-------------------------------------------------------
    blinkenlights:
           for  Flashcount = 0 to  64               ' 64 mal blinken (?)
                     If Pina.1 = 1 Then    ' nicht mehr gedrückt ? ---> tschüss
                            return
                     end if
                     Portb.0 = 0 '     LED an
                     Waitms 30 
                     Portb.0 = 1 '     LED aus
                     Waitms 30 
            next 
            return
    Gedrückt---> warten 5 sek --> subroutine


    subroutine: 64 mal
    Taste losgelassen ? stop blink
    LED an wait LED aus wait
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.418
    ich hätte an die flanken änderung gedacht, damit sollte es doch auch gehen bei steigenderflanke starten der blink routine und beim fallenenderflanke eine andere routine welche die blinkroutine unterbricht.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    28.04.2009
    Beiträge
    11
    Danke PicNick deine Lösung funktioniert genau so wie ich mir das vorgestellt habe!! Schön das einem hier so schnell geholfen wird!!

    mfg

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •