-         
Ergebnis 1 bis 3 von 3

Thema: anfänger frage

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    21.04.2007
    Beiträge
    43

    anfänger frage

    Anzeige

    Hallo, ich möchte folgendes erreichen. WEnn ich einen taster drücke, soll eine led angehen. WEnn ich ihn wieder drücke soll sie wieder ausgehen. Ich habe es so probiert, es geht aber nicht. Hoffe ihr könnt mir helfen.

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1000000
    
    Config Portd.7 = Output
    Config Pinc.2 = Input
    Portc.2 = 1
    Led Alias Portd.7
    Taster Alias Pinc.2
    Double Hallo = 0
    
    
    
    Do
    
       If Taster = 0 Then
        Double Hallo + 1
        End If
    
        If Double Hallo = 1 Then
        Led = 1
        End If
    
    
    
    
    Loop
    
    End
    emde

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.837
    Da ist erstmal ein Problem mit der Syntax.
    Das, was du geschrieben hast, müßte rein formal erstmal so aussehen:
    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 1000000
    
    Config Portd.7 = Output
    Config Pinc.2 = Input
    Portc.2 = 1
    Led Alias Portd.7
    Taster Alias Pinc.2
    Dim Hallo As Double
    
       Hallo = 0
    
    Do
        If Taster = 0 Then
                     Hallo = Hallo + 1
        End If
        If Hallo = 1 Then
                   Led = 1
        End If
    Loop
    End
    Deswegen funktioniert es aber auch nicht

    1 Wieso meinst du, ein DOUBLE für "Hallo" verwenden zu müssen ? Hast du eine Ahnung, was das ist ?
    2 Wenn du eine LED auf- und abdrehen willst, müßte wohl irgendwo auch
    "LED = 0" vorkommen. Tut es aber nicht ?


    3 Computer wollen es immer ganz genau wissen.

    Du willst LED = 1, wenn :
    LED = 0 UND Taste gedrückt.

    Du willst LED = 0, wenn :
    LED = 1 UND Taste gedrückt.

    Taste gedrückt ist aber auch komplizierter:
    du fragst in einer Schleife ab, ob der Tasten-Pin = 0. Wenn du die Taste nun eine 1/2 Sekunde lang drückst, kommt dir bei der Abfrage ein paar hundert mal eine Null raus. So geht's wohl nicht.

    Du mußt also den Moment erwischen, wo die Taste vorher =1 war und jetzt = 0. Dadurch stellst du sicher, daß dir dein "IF" nur einmal je Tastendruck aufgeht

    Es gibt verschiedene Lösungen, je nachdem, was das Progamm sonst noch zu tun hat

    Eine Möglichkeit, wenn sonst nix zu tun ist:
    Code:
        LED = 0
    DO
    '  abfragen, bis die Taste ausgelassen wurde 
         while taster <> 1   
         wend  
    ' jetzt ist taster = 1
    
    ' warten, bis die Taste gedrückt wird
         while taster <> 0  
         wend  
    ' jetzt ist taster = 0   
         if Led = 0  THEN
             led = 1                ' is LED = aus, dann aufdrehen
        else 
             led = 0                ' is LED = ein, dann abdrehen
        end if
    LOOP      
    END
    Bei LED 0/1 kommst drauf an, wie die angeschlossen wurde
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    44
    Beiträge
    2.240
    config portd.7 = output
    config portc.2 = input

    taster alias pinc.2
    led alias portd.7

    do
    if taster=1 then
    toggle led
    waitms 50
    endif

    loop
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

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