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







Zitieren
Lesezeichen