- 12V Akku mit 280 Ah bauen         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Anfänger Code problem

  1. #1

    Anfänger Code problem

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hi,
    ich wollte ein Script schreiben, das die LED#s blinken lässt, wenn ein Schalter gedrückt ist. Ich habe folgenden Code geschrieben:

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    
    Config Portd.7 = Output
    Config Portc.1 = Output
    Config Portc.0 = Output
    Config Pina.7 = Input
    
    Taster Alias Pina.7
    Rot Alias Portd.7
    Gelb Alias Portc.1
    Gruen Alias Portc.0
    
    Porta.7 = 1
    Rot = 0
    Gelb = 0
    Gruen = 0
    
    
    Do
    
      If Taster = 1 Then
    
      Rot = 0
      Waitms 50
      Rot = 1
      Waitms 50
    
      Gelb = 0
      Waitms 50
      Gelb = 1
      Waitms 50
    
      Gruen = 0
      Waitms 50
      Gruen = 1
      Waitms 50
    
      Gelb = 0
      Waitms 50
      Gelb = 1
      Waitms 50
    
    Else
    
    Rot = 0
    Gelb = 0
    Gruen = 0
    
    End If
    
    
    Loop
    
    End
    Nur läuchten nun beim Drücken des tasters alle 3 Led's und beim Loslassen blinken sie,...was mach ich falsch?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Deine "Taster=1" Befehle unterbrechen das Leuchten einer Farbe immer nur für 50 mS. das ist nicht wirklich lange, da siehst du nix blinken.
    Schreib mal Waitms 500 ( halbe Sekunde), dann wirst du mehr erkennen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    daran liegts nicht...wenn ich das IF zeugs weg lasse blinken sie ja auch...

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich vermute mal, daß du den Input-Pin mit dem Pullup auf +5 V ziehst und mit dem Taster bei Betätigung auf GND. Das wär zumindest üblich.
    Dann ist deine Abfrage aber genau verkehrt
    If Taste = 0 Then ' TASTE GEDRÜCKT
    ELSE
    ' nicht gedrückt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Bei den meisten Boards muss man sowohl bei den Tastern als auch bei den LED´s "umdenken": Die Taster sind i.d.R. nach Masse geschaltet, d.h. wenn Du ihn drückst, geht der Eingang auf Low. Deshalb ist ja auch der PullUp-Widerstand so wichtig, den Du mit "Porta.7=1" gesetzt hast. Der zieht den Eingang auf ein sauberes high, wenn der Taster offen ist.
    In Kurzform: Taster gedrückt = Eingang low, Taster offen = Eingang high.
    Das erklärt schonmal, weshalb die LEDs blinken, wenn der Taster nicht gedrückt ist.

    Dass sie alle angehen wenn der Taster nicht gedrückt ist wird wohl daran liegen, dass sie von den Ausgängen nicht nach "Minus", sondern nach "Plus" geschaltet sind. Damit leuchten die LEDs, wenn der Ausgang low ist.

    Ändere Deinen Code doch mal dahin ab, dass Du Rot, Gelb und Gruen als 1 setzt, die Blink-Schleife laufen lässt, wenn Pina.7 0 ist, und unter "Else" Rot, Gelb und Gruen auf 0 setzt.


    Oops - @ PickNick: Da haben wir wohl ziemlich gleichzeitig geschrieben...

  6. #6
    immer noch das gleiche

  7. #7
    @Sauerbruch:

    so???
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    
    Config Portd.7 = Output
    Config Portc.1 = Output
    Config Portc.0 = Output
    Config Pina.7 = Input
    
    Taster Alias Pina.7
    Rot Alias Portd.7
    Gelb Alias Portc.1
    Gruen Alias Portc.0
    
    Porta.7 = 1
    Rot = 1
    Gelb = 1
    Gruen = 1
    
    
    Do
    
      If Taster = 0 Then
    
      Rot = 0
      Waitms 50
      Rot = 1
      Waitms 50
    
      Gelb = 0
      Waitms 50
      Gelb = 1
      Waitms 50
    
      Gruen = 0
      Waitms 50
      Gruen = 1
      Waitms 50
    
      Gelb = 0
      Waitms 50
      Gelb = 1
      Waitms 50
    
    Else
    
    Rot = 0
    Gelb = 0
    Gruen = 0
    
    End If
    
    
    Loop
    
    End

    da passiert immer noch das gleiche...


    ich habe im Grunde die Schaltung mit 3 Led's:


    https://www.roboternetz.de/wissen/im...g_mitquarz.gif

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Einzelne Pins konfigurieren sollte man übrigens mit config pin.x
    Siehe Bascom Hilfe.

    Du läßt immer noch alle Leds leuchten, wenn der Schalter offen ist:
    Rot = 0
    Gelb = 0
    Gruen = 0

    Gruß
    Christopher

  9. #9
    Wenn ich es so abändere immer noch das gleiche:




    Code:
    Else
    
    Rot = 0
    Gelb = 0
    Gruen = 0
    
    End If
    
    
    Loop
    
    End

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    @tuxianer:

    im Schaltplan isses genau so: Taster nach masse, LED´s nach +5V. Wenn Du jetzt noch im "Else"-Teil Rot, Gelb und Gruen auf 1 setzt (wie chr-mt schrieb), müsste es klappen...

    Rot = 0: LED an
    Rot = 1: LED aus!!

    Ist komisch aber wahr...

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress