Ich schreib es dir gerne dazu ich sitz schon lange da ich hab das vom RN umgeschrieben und wie folgt sieht es aus ich hoffe mittlerweile das es jemals funktioniert der Signal Ton zum schluss ist hörbar aber es überträgt sich nicht zum Motor Steuerboard leider gab es genau für den Port kein Test Programm das man hätte umschreiben können.
zieh es am besten in den Compiler wegen den Bemerkungen die dabi stehen
Declare Function am Anfang mach ich weck!
Code:
Declare Function Tastenabfrage() As Byte
$regfile = "m128def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portd.0 'Ports fuer IIC-Bus
Config Sda = Portd.1
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
Dim Ton As Integer
I2cinit
Start Adc
Sound Portg.2 , 400 , 450 'BEEP
Sound Portg.2 , 400 , 250 'BEEP
Sound Portg.2 , 400 , 450 'BEEP
Print
Print "**** RN-Control V1.4 *****"
Print "Demoprogramm um Zusatzboard RN-Schrittmotor zu testen/demonstrieren"
Print
' -------------- Ende 128 Funk übliche _____________________
'Befehle im Schrittmotorbetrieb
'Ein RN-Schrittmotor Befehl besteht immer aus 7 Bytes, auch wenn einige Befehle
'weniger Parameter benötigen. Wenn weniger Bytes erforderlich sind, werden die unnötigen
'Bytes mit beliebigen Wert gefüllt und ignoriert. .Die konstante Zahl erleichtert und
'beschleunigt die Interpretation und Verarbeitung!
Const Befehl_ausschalten = 51
Const Befehl_drehrichtung = 52
Const Befehl_geschwindigkeit = 53
Const Befehl_endlosdrehung = 54
Const Befehl_schrittzahlabrufen = 102
Const Befehl_versionstatus = 255
Const Motor_1 = 1
Const Motor_2 = 2
Const I2crnmotorslaveadr = &H58
Const I2crnmotorsreadlaveadr = &H59
Dim I2cdaten(7) As Byte
Dim Lowbyte As Byte
Dim Highbyte As Byte
Dim Richtung As Bit
Dim Schritte As Long
Dim Temp As Byte
Dim Ltemp As Long
Dim Umdrehungen As Single
Dim Fahrstrecke As Word
Dim Geschwindigkeit As Byte
Richtung = 0
Geschwindigkeit = 100
Do
Wait 2
I2cdaten(1) = Befehl_endlosdrehung
I2cdaten(2) = Motor_1
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
Wait 2
Toggle Richtung
I2cdaten(1) = Befehl_drehrichtung
I2cdaten(2) = Motor_1
I2cdaten(3) = Richtung
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
Wait 2
If Geschwindigkeit > 40 Then
Geschwindigkeit = Geschwindigkeit - 20
Else
Geschwindigkeit = Geschwindigkeit - 1
End If
Print "Geschwindigkeitsstufe: " ; Geschwindigkeit
I2cdaten(1) = Befehl_geschwindigkeit
I2cdaten(2) = Motor_1
I2cdaten(3) = Geschwindigkeit
I2cdaten(4) = 0
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
Wait 2
I2cdaten(1) = Befehl_schrittzahlabrufen
I2cdaten(2) = Motor_1
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
I2cstart
I2cwbyte I2crnmotorsreadlaveadr
I2crbyte Temp , Ack
Schritte = Temp
I2crbyte Temp , Ack
Ltemp = Temp * 256
Schritte = Schritte + Ltemp
I2crbyte Temp , Ack
Ltemp = Temp * 65536
Schritte = Schritte + Ltemp
I2crbyte Temp , Nack
Ltemp = Temp * 16777216
Schritte = Schritte + Ltemp
I2cstop
Print "Schrittanzahl:" ; Schritte
Umdrehungen = Schritte / 200
Print "Umdrehungen: " ; Umdrehungen
Fahrstrecke = Umdrehungen * 31.4
Print "Der Roboter ist " ; Fahrstrecke ; " cm gefahren "
Wait 2
I2cdaten(1) = Befehl_ausschalten
I2cdaten(2) = Motor_1
I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
Wait 2
Sound Portg.2 , 1000 , 1000 'BEEP
Waitms 100
Loop
End
Lesezeichen