- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 7 von 7

Thema: Motor über Taste mit if funkt nicht

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.03.2006
    Beiträge
    138

    Motor über Taste mit if funkt nicht

    Hi,

    ich bin am verzweifeln mein kleines Prog geht einfach nich so wie ich will schaut mal drüber. wenn ich denn taster drück geht er nich in die schleife und wenn die taster dinger drausen sind wechsel die leds nicht. kann ich das vieleicht anders lösen und das is falsch oder bin ich nur zu "dumm".

    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 19200
    
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pind.6 = Input
    Config Pind.5 = Input
    Config Pinc.0 = Output
    Config Pinc.1 = Output
    Config Pinc.2 = Output
    
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1024
    
    
    Do
        Sound Portc.2 , 400 , 450       anfangs ein sound
    
        If Pind.6 = 1 Then              taster abfrage
        Goto Vor
    
        End If
    
        Sound Portc.2 , 400 , 250              eine sound
    
        If Pind.5 = 1 Then                  und anderer taster
        Goto Zuruck
    
        End If
    
    Loop                Und von vorne
    
    Vor:
    Compare1a = 100     motor leuft vor
    Portc.0 = 1
    Waitms 50
    Portc.1 = 0
    Waitms 50
    
    Zuruck:                        motor leuft zuruek
    Compare1a = 100
    Portc.0 = 0
    Waitms 50
    Portc.1 = 1
    Waitms 50
    
    
    
    
    
    
    
    
    End


    ich hoffe ihr könnt mir helfen oder es mir einfach besser zeigen.
    das ich nicht die schönsten progs der welt schreibe weiss ich.
    compliemirt habe ich ohne kommentare ins ja klar oder so .......

    mfg m.r.

  2. #2
    Hi

    Wegen dem problem das dein prog nicht der sprungmarke folgt könntest du dir den befehl debounce mal anschauen:

    Do
    debounce Taster1 ->marke1
    debounce Taster2 ->marke2
    loop

    marke1:
    ...
    marke2:
    ...

    end

    mfg hackspider

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.03.2006
    Beiträge
    138
    hi,

    ich werde mir das gleic mal durch arbeiten aber ich habe da jetzt noch was anderes gemacht ich habe micro basic for AVR von mikroelektronika genommen das da war ein bsp für butons und das ist auch mit if das habe ich comp... und mit AVR studio in den mega 8 gebrannt und das funkt richtig gut

    Code:
    program Led_Blinking1_avr_mega_8
    
    main:
      DDRC  = $FF   ' PORTC to be output
      PORTC = $00   ' Turn off the led on PORTC
      PortB = $00
    
    
      while TRUE
        if Button(PORTB, 0, 100, 0) = TRUE then ' if button on PORTB.0 is 5v for 100ms
            PORTC = $01                        ' then turn on LED on PORTC.0
        end if
        if Button(PORTB, 1, 100, 0) = TRUE then
            PORTC = $02
        end if
        if Button(PORTB, 2, 100, 0) = TRUE then
            PORTC = $04
        end if
        if Button(PORTB, 3, 100, 0) = TRUE then
            PORTC = $08
        end if
      wend
    end.
    end.
    also Bascom hat irgend wie ein problem mit mir.oder so

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    Hi

    was ich schnell imüberblick gesehen habe verwendest du "GOTOxxxx"

    nur sehe ich nicht das du in Die DO LOOP Scheife zurück kehrst!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.03.2006
    Beiträge
    138
    stimmt merke ich erst jetzt. (das mache ich doch dann mit goto do oder )

    upps naja mein fehler da habe ich wohl geschlafen das prog habe ich nachts um 3 geschrieben.



    mfg

    m.r.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    25.12.2005
    Beiträge
    97
    So müste es gehen
    Code:
    $regfile = "m8def.dat" 
    $crystal = 4000000 
    $baud = 19200 
    
    Config Pinb.1 = Output 
    Config Pinb.2 = Output 
    Config Pind.6 = Input 
    Config Pind.5 = Input 
    Config Pinc.0 = Output 
    Config Pinc.1 = Output 
    Config Pinc.2 = Output 
    
    declare sub vor
    declare sub zuruck
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1024 
    
    
    Do 
        Sound Portc.2 , 400 , 450       'anfangs ein sound 
    
        If Pind.6 = 1 Then Vor 
    
        End If 
    
        Sound Portc.2 , 400 , 250             ' eine sound 
    
        If Pind.5 = 1 Then Zuruck 
    
        End If 
    
    Loop               ' Und von vorne 
    sub vor 
    Compare1a = 100     'motor leuft vor 
    Portc.0 = 1 
    Waitms 50 
    Portc.1 = 0 
    Waitms 50 
    end sub
    
    sub Zuruck                       'motor leuft zuruek 
    Compare1a = 100 
    Portc.0 = 0 
    Waitms 50 
    Portc.1 = 1 
    Waitms 50 
    end sub
    
    
    
    
    
    
    
    End


    Das goto Do kenn ich nur von "C" aber in Bascom was ich weis funkt es nicht

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.08.2004
    Beiträge
    197
    Wenn du Prozessor wärest, so must du das sehen, warum sollte dein Programm nach der ersten Sprungmarke und den nachfolgenden Anweisungen zurück springen und bei welcher Anweisung, steht ja nicht's, also nimmt er den nächsten Befehl und so weiter.
    Mein Vorschreiber macht's richtig. Er benutzt gosub mit deklaration und end sub usw. Da wird es richt gut aufgezeigt.
    Allerdings sieht man nicht so erklärend (für einen Anfänger), dass Gosub benutzt wird. Aber so ist es super gemacht.

Berechtigungen

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

Solar Speicher und Akkus Tests