Anbei der Code der bei mir nicht funktioniert. Drücke ich Taste "3" auf dem Board, dann funktioniert der Richtungswechsel nur ein paar mal (siehe Quellcode). Erst durch einen Reset am Board und erneutes drücken von Taste "3" funktioniert es wieder, bis wieder zu viele Richtungswechsel kommen -> drehung wird langsamer bis gar nix mehr geht.
IST MEIN BOARD DEFEKT? Bei wem funktioniert der Code?
DANKE!!
Code:Declare Sub Motortesta() Declare Sub Motortestb() Declare Function Tastenabfrage() As Byte $regfile = "m32def.dat" Dim I As Integer Dim N As Integer Dim Ton As Integer $crystal = 16000000 'Quarzfrequenz $baud = 9600 Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung Config Pina.7 = Input 'Für Tastenabfrage Porta.7 = 1 'Pullup Widerstand ein Dim Taste As Byte ' Für Motorentest 'Ports für linken Motor Config Pinc.6 = Output 'Linker Motor Kanal 1 Config Pinc.7 = Output 'Linker Motor Kanal 2 Config Pind.4 = Output 'Linker Motor PWM 'Ports für rechten Motor Config Pinb.0 = Output 'Rechter Motor Kanal 1 Config Pinb.1 = Output 'Rechter Motor Kanal 2 Config Pind.5 = Output 'Rechter Motor PWM Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Pwm1a = 0 Pwm1b = 0 Tccr1b = Tccr1b Or &H02 'Prescaler = 8 I = 0 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP Print Print "**** RN-Control 1.4 *****" Print "Das neue Experimentier- und Roboterboard" Print "Weitere passende Zusatzboards bei www.robotikhardware.de" Print Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 Call Motortestb Case 2 Call Motortesta Case 3 Call Motortesta ' Hier dreht sich Motor noch normal Call Motortestb ' Hier auch normal Call Motortesta ' jetzt wird er langsamer Call Motortestb ' und noch langsamer Call Motortesta ' immer langsamer Call Motortestb ' hier zuckt er nur noch Call Motortesta ' er dreht sich gar nicht mehr Call Motortestb ' er dreht sich gar nicht mehr End Select Sound Portd.7 , 400 , 500 'BEEP End If Waitms 100 Loop End 'Diese Unterfunktion fragt die Tastatur am analogen Port ab Function Tastenabfrage() As Byte Local Ws As Word Tastenabfrage = 0 Ton = 600 Start Adc Ws = Getadc(7) ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws If Ws < 500 Then Select Case Ws Case 400 To 450 Tastenabfrage = 1 Ton = 550 Case 330 To 380 Tastenabfrage = 2 Ton = 500 Case 260 To 305 Tastenabfrage = 3 Ton = 450 Case 180 To 220 Tastenabfrage = 4 Ton = 400 Case 90 To 130 Tastenabfrage = 5 Ton = 350 ' Case Else ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws End Select Sound Portd.7 , 400 , Ton 'BEEP End If End Function 'Testet Motoren und Geschwindigkeitsreglung Sub Motortesta() 'Linker Motor ein Pwm1b = 0 Portd.4 = 0 Portc.6 = 0 'bestimmt Richtung Portc.7 = 1 'bestimmt Richtung Portd.4 = 1 'Linker Motor EIN I = 300 Do Pwm1b = I Waitms 40 I = I + 50 Loop Until I > 500 Wait 1 Do Pwm1b = I Waitms 40 I = I - 50 Loop Until I < 1 Pwm1b = 0 'Linker Motor aus End Sub Sub Motortestb() 'Linker Motor ein Pwm1b = 0 Portd.4 = 0 Portc.6 = 1 'bestimmt Richtung Portc.7 = 0 'bestimmt Richtung Portd.4 = 1 'Linker Motor EIN I = 300 Do Pwm1b = I Waitms 40 I = I + 50 Loop Until I > 500 Wait 1 Do Pwm1b = I Waitms 40 I = I - 50 Loop Until I < 1 Pwm1b = 0 'Linker Motor aus End Sub






Zitieren
Lesezeichen