-         

Ergebnis 1 bis 6 von 6

Thema: probleme mit schleife

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099

    probleme mit schleife

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    hallo

    hab mal wieder ein Problem rein Theoretisch müsste ich doch mit Declare Subine Schleife auf bauen können die klappt. Jedoch habe ich das Gefühl das irgendwie im Programm das next bei der Motorsteuerung stört und nicht nach den Befehlen geht in der Do-Schleife, sondern nach dem next was ich allerdings nicht möchte habe schon viel Probiert aber vielleicht habt ihr eine Idee !!!

    hier der Code:
    Code:
    $regfile = "m8def.dat"
    $crystal = 7372800
    $baud = 9600
    $hwstack = 34
    $framesize = 34
    $swstack = 34
    
    Dim A As Word
    Dim B As Word
    
    Config Portc = &B11111111
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Config Pinb.1 = Output
    Motor1_pwm Alias Portb.1
    Config Pind.4 = Output
    Motor1_in1 Alias Portd.4
    Config Pind.5 = Output
    Motor1_in2 Alias Portd.5
    
    Declare Sub Fahr_v()
    Declare Sub Stop_v()
    Declare Sub Fahr_r()
    
    
    Start Adc
    
    Do
    
    B = Getadc(1)
    Print B
    
    
    If B > 200 Then
    Stop_v
    
    Else
    Fahr_v
    End If
    
    
    Loop
    End
    
    
    
    
    Fahr_v:
      Motor1_in1 = 1
      Motor1_in2 = 0
    
     For A = 255 To 511
      Pwm1a = A
      Waitms 10
     Next
    
    Stop_v:
      Motor1_in1 = 1
      Motor1_in2 = 1
    
     For A = 255 To 0
      Pwm1a = A
      Waitms 10
     Next
    
    
    
    
    Fahr_r:
      Motor1_in1 = 0
      Motor1_in2 = 1
    
     For A = 255 To 511
      Pwm1a = A
      Waitms 10
     Next
    könnte man vielleicht die Pwm Modulation noch anders ausdrücken wie??

    For A = 255 To 511
    Pwm1a = A
    Waitms 10
    Next

    gruß
    patrick

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    hast du die "end sub" vergessen ?

    Noch was
    For A= 256 to 511

    Du hast doch die PWM als 8 Bit deklariert.
    Sollte also auch nur bis 255 gehen.

    Warum zählst du die überhaupt hoch ?


    Gruß
    Christopher

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    eigentlich will ich das nicht aber da es nicht gerade anders geht habe ich das so.

    sonst macht mein motor komische geräusche läuft langsam an und dann steigt die Amperemeter auf ca. 1.2 Ampere hoch

    gruß
    patrick

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Was soll das Hoch bzw. Runterzählen denn bewirken ?
    Willst du damit einen Softanlauf machen ?

    Gruß
    Christopher

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    erstens das und zweitens erstmal so zum test das programm werde ich gleich noch weiter ausbauen.

    so es klappt zum mindestens mal so:

    Code:
    $regfile = "m8def.dat"
    $crystal = 7372800
    $baud = 9600
    $hwstack = 34
    $framesize = 34
    $swstack = 34
    
    
    Declare Sub Fahr_v()
    Declare Sub Stop_v()
    Declare Sub Fahr_r()
    
    
    Dim A As Word
    Dim B As Word
    
    Config Portc = &B11111111
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Config Pinb.1 = Output
    Motor1_pwm Alias Portb.1
    Config Pind.4 = Output
    Motor1_in1 Alias Portd.4
    Config Pind.5 = Output
    Motor1_in2 Alias Portd.5
    
    Start Adc
    
    Do
    
    B = Getadc(1)
    Print B
    
    If B >= 200 Then
    Stop_v
    Else
    Fahr_v
    
    End If
    Loop
    End
    
    
    
    
    Sub Fahr_v:
      Motor1_in1 = 1
      Motor1_in2 = 0
    
     For A = 255 To 255
      Pwm1a = A
      Waitms 10
     Next A
    End Sub
    
    Sub Stop_v:
      Motor1_in1 = 1
      Motor1_in2 = 1
    
     For A = 255 To 0
      Pwm1a = A
      Waitms 10
     Next
    
    End Sub

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    hallo


    danke für die Hilfe chr-mt das andere klappt jetzt auch.

    das es nur an dem sub ...... und an dem end sub hängt wenn man es vergisst naja passt schon.

    gruß
    patrick

Berechtigungen

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