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
Lesezeichen