ich wollte euch nicht gleich zu anfang strapazieren.
über funk teile ich dem roboter dann den wert von 0-255 mit , so wie die pwm-einstellung unter bascom konfiguriert ist, der wert nennt sich unten "Ps":
If Left(text , 2) = "ps" Then
Right_len = Len(text) - 2
Text1 = Right(text , Right_len)
Ps = Val(text1)
End If
der pwm-wert geht hier nur bis 255(8-bit), es geht auch noch anders mit der pwm-frequenz :
PWM-Modus vom Atmega:
8-Bit PWM
9-Bit PWM
10-Bit PWM
darum frage ich mich, wie du darauf kommst :
...Das ganze Timer-Gedöns fällt beim Arduino bei PWM-Sachen flach...
hmm..., woher weiss der arduino, das ich die pwm-requenz für 255(8-bit) gewählt habe, oder die frequenz für 9-bit oder die frequenz für 10-bit ?
..Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256...
schau dir mal die einstellung für "Prescale" an.
gruss
$regfile = "M644pdef.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 64
$baud = 19200
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Portc.5 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "COM1:" For Binary As #1
Declare Sub Li_vor()
Declare Sub Re_vor()
Declare Sub Li_zurueck()
Declare Sub Re_zurueck()
Declare Sub Robby_vor()
Declare Sub Robby_zurueck()
Declare Sub Robby_links()
Declare Sub Robby_rechts()
Declare Sub Robby_aus()
Dim Ps As Word
Dim Right_len As Byte
Dim Text As String * 10
Dim Text1 As String * 4
Ps = 0
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256
Enable Interrupts
Start Timer1
Wait 1
Do
Input #1 , Text
If Left(text , 3) = "vor" Then
Right_len = Len(text) - 3
Text1 = Right(text , Right_len)
Call Robby_aus()
Waitms 20
Call Robby_vor()
End If
If Left(text , 3) = "zur" Then
Right_len = Len(text) - 3
Text1 = Right(text , Right_len)
Call Robby_aus()
Waitms 20
Call Robby_zurueck()
End If
If Left(text , 3) = "lin" Then
Right_len = Len(text) - 3
Text1 = Right(text , Right_len)
Call Robby_aus()
Waitms 20
Call Robby_links()
End If
If Left(text , 3) = "rec" Then
Right_len = Len(text) - 3
Text1 = Right(text , Right_len)
Call Robby_aus()
Waitms 20
Call Robby_rechts()
End If
If Left(text , 4) = "stop" Then
Call Robby_aus()
End If
If Left(text , 2) = "ps" Then
Right_len = Len(text) - 2
Text1 = Right(text , Right_len)
Ps = Val(text1)
End If
Text = ""
Text1 = ""
Loop
End
Sub Robby_vor()
Call Re_vor()
Call Li_vor()
End Sub
Sub Robby_zurueck()
Call Re_zurueck()
Call Li_zurueck()
End Sub
Sub Robby_links()
Call Re_vor()
Call Li_zurueck()
End Sub
Sub Robby_rechts()
Call Re_zurueck()
Call Li_vor()
End Sub
Sub Re_vor()
Portc.4 = 0
Portc.5 = 1
Pwm1a = Ps
End Sub
Sub Re_zurueck()
Portc.4 = 1
Portc.5 = 0
Pwm1a = Ps
End Sub
Sub Li_zurueck()
Portc.2 = 1
Portc.3 = 0
Pwm1b = Ps
End Sub
Sub Li_vor()
Portc.2 = 0
Portc.3 = 1
Pwm1b = Ps
End Sub
Sub Robby_aus()
Pwm1a = 0
Pwm1b = 0
End Sub