Hallo! Ich habe mir einen Arduino Mega 2560 und ein SainSmart L293D Motor Drive Shield bestellt, um einen bipolaren Schrittmotor zu betreiben. Den Motor habe ich an den M3 und M4- Pins angeschlossen. Mit der AFMotor-Library habe ich den Motor schon zum Drehen gebracht, jedoch möchte ich die Spulen nun von Hand ansteuern, was bisher noch nicht so ganz funktioniert. Ich vermute, dass der Fehler darin liegt, dass ich nicht die richtigen Pins als Output wähle. Kann mir das jemand bestätigen und mir sagen, welche ich sattdessen wählen muss und wie man darauf kommt? Hier ist mein Code: int Pin0=8; int Pin1=9; int Pin2=10; int Pin3=11; void setup(){ pinMode(Pin0,OUTPUT); pinMode(Pin1,OUTPUT); pinMode(Pin2,OUTPUT); pinMode(Pin3,OUTPUT); } void loop(){ digitalWrite(Pin0,HIGH); digitalWrite(Pin0,LOW); digitalWrite(Pin0,LOW); digitalWrite(Pin0,LOW); delay(100); digitalWrite(Pin0,LOW); digitalWrite(Pin0,HIGH); digitalWrite(Pin0,LOW); digitalWrite(Pin0,LOW); delay(100); digitalWrite(Pin0,LOW); digitalWrite(Pin0,LOW); digitalWrite(Pin0,HIGH); digitalWrite(Pin0,LOW); delay(100); digitalWrite(Pin0,LOW); digitalWrite(Pin0,LOW); digitalWrite(Pin0,LOW); digitalWrite(Pin0,HIGH); delay(100); } Danke schonmal im Voraus für die Antwort! =) Gruß, Lars
Du änderst nur Pin0 in der loop, alle anderen werden überhaupt nicht verändert? War wohl nicht so gedacht oder?
Lars schrieb: > Ich vermute, dass der Fehler darin liegt, dass ich nicht > die richtigen Pins als Output wähle. Ja, das ist offensichtlich.
ohja klar, das habe ich etwas verplant beim Eintippen - war natürlich nicht richtig :-D aber jetzt: int Pin0=8; int Pin1=9; int Pin2=10; int Pin3=11; void setup(){ pinMode(Pin0,OUTPUT); pinMode(Pin1,OUTPUT); pinMode(Pin2,OUTPUT); pinMode(Pin3,OUTPUT); } void loop(){ digitalWrite(Pin0,HIGH); digitalWrite(Pin1,LOW); digitalWrite(Pin2,LOW); digitalWrite(Pin3,LOW); delay(100); digitalWrite(Pin0,LOW); digitalWrite(Pin1,HIGH); digitalWrite(Pin2,LOW); digitalWrite(Pin3,LOW); delay(100); digitalWrite(Pin0,LOW); digitalWrite(Pin1,LOW); digitalWrite(Pin2,HIGH); digitalWrite(Pin3,LOW); delay(100); digitalWrite(Pin0,LOW); digitalWrite(Pin1,LOW); digitalWrite(Pin2,LOW); digitalWrite(Pin3,HIGH); delay(100); } aber weiß jetzt jemand, welche pins ich als Output wählen muss bzw. wie ich das rausfinde?
Ähm. Was - genau - ist jetzt eigentlich an diesen Pins angeschlossen? Bzw. wie kommst du auf genau diese Pinnummern?
An das Arduino Mega 2560 habe ich das SainSmart L293D Motor Drive Shield (siehe http://www.sainsmart.com/wiki/index.php/SainSmart_L293D_Motor_Drive_Shield_For_Arduino_Duemilanove_Mega_UNO_R3_AVR_ATMEL) aufgesteckt und an das Drive shield habe ich an M3 und M4 den bipolaren Schrittmotor angeschlossen.
Die Pins sind geraten, weil ich nicht weiß, wie ich das herausfinde, welche ich da brauche- genau das ist ja meine Frage...
Das müsstest du herausfinden können, indem du dir die Schaltpläne der beiden Boards anguckst. Hast du dir die AFMotor.h und AFMotor.cpp mal angeschaut?
Ja das habe ich schon beides versucht, wurde aber nicht wirkilch schlau daraus. :/
Lars schrieb: > Ja das habe ich schon beides versucht, wurde aber nicht wirkilch schlau > daraus. :/ Dann musst du weiter 'schauen'. Aus dem Schaltplan geht ja hervor, welche Leitung vom L293 auf welchen Arduino Anschlusspin geht. Die musst du dir halt mal raussuchen. Und mit dem Code bzw. einer Codeanalyse kann man das dann sicher auch bestätigen. Im Code sieht man ja, wie die Klasse den Shield ansteuert.
Ok, vielen Dank für die schnelle Antwort! Ich bin jetzt nochmal die AFMotor.cpp Datei durchgegangen und habe aus z.b. "pinMode(5,OUTPUT) [...] //on arduino mega, pin 5 is now PE3" geschlossen, dass nun 9 als OUTPUT gesetzt werden muss. bei den anderen pins bin ich genauso vorgegangen und daher hab ich jetzt insgesamt 4,8,9 und 13 als OUTPUT gesetzt. Jedoch möchte der Motor immernoch nicht laufen. Weiß jemand, was ich jetz noch falsch gemacht haben könnte?
Hat keiner eine Idee, oder ist die Lösung so drivial, dass da keiner antworten möchte?^^
Wenn's analytisch nicht geht, dann vielleicht empirisch. Mit anderen Worten: Wenn du es dem Schaltplan und dem Code nicht entnehmen kannst, hilft vielleicht rumprobieren. Kurzes Testprogramm, welches an einem Port langsam blinkt. Mit einem Messgerät gucken, ob einer (und welcher) der Motorshield-Eingänge blinkt. Mit einem Oszilloskop geht das natürlich schneller.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.