Hallo Leute,
ein dankeschön für Eure Hilfe.
Hier mal einen ersten Vorschlag
Code:'################################################### 'Schrittmotorsteuerung mit Taster 'für 2 Schrittmotoren 'RoboterNetz Standard-Roboter Board RBNFRA 1.2 ' 'Autor: Tomcat '################################################### Declare Sub Nachfahren1 Declare Sub Nachfahren2 Declare Sub Nachfahren3 Declare Sub Nachfahren4 Declare Sub Motorrechtsl Declare Sub Motorrechtsr Declare Sub Motorlinksl Declare Sub Motorlinksr Declare Sub Aus Declare Sub Hochschneller Declare Sub Hochlangsam Declare Sub Linksschneller Declare Sub Linkslangsam Declare Sub Rechtsschneller Declare Sub Rechtslangsam Declare Sub Runterschneller Declare Sub Runterlangsam On Timer0 Ontimer0 Config Timer0 = Timer , Prescale = 256 On Timer2 Ontimer2 Config Timer2 = Timer , Prescale = 256 Const Writepowerport_adr = &H72 'I2C Adr PCF 2 Const Writeeingabeport_adr = &H7E 'I2C Adr PCF 2 Const Readeingabeport_adr = &H7F 'I2C Adr PCF 2 Const Energieport_adr = &H74 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim I As Byte Dim A As Word $baud = 9600 $crystal = 8000000 'Quarzfrequenz Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 Portd.6 = 0 'Schrittmotoren erst mal ausschalten I2cinit Gosub Energieein Config Pind.6 = Output 'Schrittmotoren Ein/Aus Config Pinc.5 = Output 'Schrittmotor Links Richtung Config Pinc.3 = Output 'Schrittmotor Links Step Config Pinc.4 = Output 'Schrittmotor Rechts Richtung Config Pinc.2 = Output 'Schrittmotor Rechts Step Dim X As Word X = 1 Dim Y As Word Y = 1 Dim Verteilung As Byte Verteilung = 100 'Anfangseinstellung beide Motoren mit 50% Portd.6 = 1 'Beide Schrittmotoren einschalten I = 0 I2cdaten = 1 I2cstart I2cwbyte Writepowerport_adr 'Schreibbefehl an PCF schicken I2cwbyte 0 'Datenbyte an PCF I2cstop Do I2cstart I2cwbyte Readeingabeport_adr 'Lesebefehl an PCF schicken I2crbyte I2cdaten , Nack 'Datenbyte von PCF lesen I2cstop Waitms 50 If I2cdaten = 127 Then Aus 'rot If I2cdaten = 190 Then Nachfahren1 'grün If I2cdaten = 187 Then Nachfahren2 'grün If I2cdaten = 183 Then Nachfahren3 'grün If I2cdaten = 189 Then Nachfahren4 'grün If I2cdaten = 254 Then Motorrechtsl 'blau If I2cdaten = 247 Then Motorrechtsr 'grau If I2cdaten = 251 Then Motorlinksl 'orange If I2cdaten = 253 Then Motorlinksr 'braun If I2cdaten = 219 Then Hochschneller 'grün-weis If I2cdaten = 235 Then Hochlangsam 'weis If I2cdaten = 222 Then Linksschneller If I2cdaten = 238 Then Linkslangsam If I2cdaten = 215 Then Rechtsschneller If I2cdaten = 231 Then Rechtslangsam If I2cdaten = 221 Then Runterschneller If I2cdaten = 237 Then Runterlangsam Incr I Loop Sub Motorrechtsl 'rechter Motor Portd.6 = 0 Waitms 300 Portd.6 = 1 Portc.4 = 1 Gosub Energieein 'Print "Motor rechts lauf links" Gosub Motortimer0 End Sub Sub Motorrechtsr 'rechter Motor Portd.6 = 0 Waitms 300 Portd.6 = 1 Portc.4 = 0 Gosub Energieein 'Print "Motor rechts lauf rechts" Gosub Motortimer0 End Sub Sub Motorlinksl 'rechter Motor Portd.6 = 0 Waitms 300 Portd.6 = 1 Portc.5 = 0 Gosub Energieein 'Print "Motor links lauf links" Gosub Motortimer2 End Sub Sub Motorlinksr 'rechter Motor Portd.6 = 0 Waitms 300 Portd.6 = 1 Portc.5 = 1 Gosub Energieein 'Print "Motor links lauf rechts" Gosub Motortimer2 End Sub Sub Aus() 'Print "aus" Portd.6 = 0 I2cstart I2cwbyte Energieport_adr 'Schreibbefehl an PCF3 schicken I2cwbyte &B11100101 'Datenbyte an PCF3 Disable Timer2 Disable Timer0 I2cstop X = 50 Y = 50 End Sub Sub Nachfahren1() X = 1000 Y = 1000 Gosub Motorgoto End Sub Sub Nachfahren2() X = 1500 Y = 1500 Gosub Motorgoto End Sub Sub Nachfahren3() X = 50 Y = 50 Gosub Motorgoto End Sub Sub Nachfahren4() X = 10 Y = 10 Gosub Motorgoto End Sub Sub Hochschneller Y = Y + 1 'Print "schneller" End Sub Sub Hochlangsam Y = Y - 1 'Print "langsam" End Sub Sub Linksschneller X = X + 1 'Print "schneller" End Sub Sub Linkslangsam X = X - 1 'Print "langsam" End Sub Sub Rechtsschneller X = X + 1 'Print "schneller" End Sub Sub Rechtslangsam X = X - 1 'Print "langsam" End Sub Sub Runterschneller Y = Y + 1 'Print "schneller" End Sub Sub Runterlangsam Y = Y - 1 'Print "langsam" End Sub End Ontimer0: Timer0 = X Toggle Portc.2 Return Ontimer2: Timer2 = Y Toggle Portc.3 Return Motorgoto: Print "goto" Portd.6 = 0 Waitms 300 Portd.6 = 1 Portc.4 = 0 Gosub Energieein Enable Timer0 Enable Timer2 Enable Interrupts Return Motortimer0: Enable Timer0 Enable Interrupts Return Motortimer2: Enable Timer2 Enable Interrupts Return Energieein: I2cstart I2cwbyte Energieport_adr 'Schreibbefehl an PCF3 schicken I2cwbyte &B00000010 'Datenbyte an PCF3 I2cstop Return
mfg
Tomcat







Zitieren
Lesezeichen