Es funktioniert ! Der Motor dreht sich. Habe dazu ein kleines Demoprogramm gemacht. Dieses lässt den Motor am Ausgang M1 langsam in eine Richtung drehen, dann wird er wieder gebremst. 2 Sekunden Pause, dann wird er langsam wieder hochgefahren. Jedoch in die andere Richtung. 2 Sekunden Pause und das Ganze beginnt von vorne. Falls jemand ähnliche Probleme hat, stelle ich das Programm hier zur Verfügung:
Alles anzeigen
Quellcode
- '***************************************************************************
- '* Arduino steuert Motor an M1 an *
- '* Motorshield von AdafruitHW-130 *
- '***************************************************************************
- $regfile = "m328pdef.dat"
- $framesize = 32
- $swstack = 32
- $hwstack = 64
- $crystal = 16000000 'Resonatorfrequenz
- $baud = 9800 'Baudrate (Übertragungsgeschwindigkeit)
- Baud = 9800
- Dim A as Byte
- dim Steuerbyte as Byte
- ' Ein/Ausgänge festlegen:
- Config Portb.3 = Output
- Config PortD.4 = Output
- Config PortD.7 = Output
- Config PortB.0 = Output
- Config PortB.4 = Output
- ' Alias Zuweisung
- DIR_CLK Alias PortD.4
- DIR_EN Alias PortD.7
- DIR_SER Alias PortB.0
- DIR_LATCH Alias PortB.4
- ' Timer Programmieren:
- Config Timer2 = PWM, Prescale = 1 , Compare A Pwm = Clear Up
- Do
- Gosub Linkslauf
- For A = 0 to 255 Step 1 ' Motor lanngsam hochfahren
- PWM2A = A
- Waitms 10
- next A
- For A = 255 to 0 Step -1 ' Motor langsam runterfahren
- PWM2A = A
- Waitms 10
- next A
- wait 2
- Gosub rechtslauf
- For A = 0 to 255 Step 1 ' Motor langsam hochfahren
- PWM2A = A
- Waitms 10
- next A
- For A = 255 to 0 Step -1 ' Motor langsam runterfahren
- PWM2A = A
- Waitms 10
- next A
- Wait 2
- Loop
- Linkslauf:
- ' M1 Ausgang dreht links:
- ' Shirftregister festlegen:
- Steuerbyte.5=0
- Steuerbyte.4=1
- DIR_EN=0
- Shiftout DIR_SER, DIR_CLK, Steuerbyte, 3
- DIR_LATCH=1
- DIR_LATCH=0
- return
- Rechtslauf:
- ' M1 Ausgang dreht rechts:
- ' Shirftregister festlegen:
- Steuerbyte.5=1
- Steuerbyte.4=0
- DIR_EN=0
- Shiftout DIR_SER, DIR_CLK, Steuerbyte, 3
- DIR_LATCH=1
- DIR_LATCH=0
- return