Forum: Mikrocontroller und Digitale Elektronik Welche Pins als Outputs wählen?


von Lars (Gast)


Lesenswert?

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

von Helfer1 (Gast)


Lesenswert?

Du änderst nur Pin0 in der loop, alle anderen werden überhaupt nicht 
verändert? War wohl nicht so gedacht oder?

von Peter D. (peda)


Lesenswert?

Lars schrieb:
> Ich vermute, dass der Fehler darin liegt, dass ich nicht
> die richtigen Pins als Output wähle.

Ja, das ist offensichtlich.

von mrc (Gast)


Lesenswert?

epic fail...

von Patrick E. (f4550tim)


Lesenswert?

Copi Pasten Fehler ;D

von Lars (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

Ähm.

Was - genau - ist jetzt eigentlich an diesen Pins angeschlossen?
Bzw. wie kommst du auf genau diese  Pinnummern?

von Lars (Gast)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

Die Pins sind geraten, weil ich nicht weiß, wie ich das herausfinde, 
welche ich da brauche- genau das ist ja meine Frage...

von Christian (Gast)


Lesenswert?

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?

von Lars (Gast)


Lesenswert?

Ja das habe ich schon beides versucht, wurde aber nicht wirkilch schlau 
daraus. :/

von Karl H. (kbuchegg)


Lesenswert?

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.

von Lars (Gast)


Lesenswert?

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?

von Lars (Gast)


Lesenswert?

Hat keiner eine Idee, oder ist die Lösung so drivial, dass da keiner 
antworten möchte?^^

von Lars (Gast)


Lesenswert?

oh ich meinte natürlich trivial

von Pink S. (pinkshell)


Lesenswert?

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
Noch kein Account? Hier anmelden.