Arduino Uno und drei Stepper

Folgendes Problem: Ich will mit meinem Arduino Uno, zwei Schieberegistern (M74HC595 B1), einem Ethernetshield mit SD-Card und drei Steppermodulen worauf ein ULN2003 gebaut ist eine funktionierende CNC-Fräse bauen. Drei Steppermotoren nackt auf dem Uno zu betreiben ist im Grunde ja kein Problem, nur ist dann kein Platz mehr für weitere Anbauten wie Endschalter, betriebs-LEDs oder Relais um die Fräse ein/ausgeschaltet wird. Im anhängenden Bild habe ich eine Skizze, wie die Schaltung momentan aussieht. Probleme bekomme ich bei der Programmierung; Wie kombiniere ich Schrittmotoren mit einem Schieberegister, und wie kann ich das ganze dann über einen PC steuern lassen? Kann mir da jemand mit Sketch-Schnipsel (muss ja nichts fix & fertiges sein) weiterhelfen?

Du hast Clock und Daten verwechselt so wie das aussieht. Siehe hier:

Daten schreiben geht dann über die shiftOut Funktion:
http://arduino.cc/en/Reference/ShiftOut

Du musst halt dann die Bits entsprechend setzen und raus-schieben. Die Muster für die verschieden Motor-Phasen kann man einem Array speichern und dieses dann nacheinander ausgeben. Da ein Muster 4 Bits hat und das Schieberegister 8 Bit kann man diese durch Schieben und Oder zusammensetzen. z.B. so ähnlich:

byte motor1 = 1001b;
byte motor2 = 0101b;
byte output = (motor1 << 4) | motor2;  //output = 10010101b

Kommunikation mit dem PC läuft über USB und die Serial Lib. Da musst du dir dann selbst ein Protokoll basteln.

Der Mega wäre für dieses Projekt wahrscheinlich die bessere Wahl. Du könntest auch einen (bzw. drei) L297 Motor-Controller verwenden. Dann brauchst du nur Enable, Richtung und Clock für einen Motor und der Code wird etwas einfacher. Ein richtiger Schrittmotor-Treiber wie der L293 oder L298 wäre vielleicht auch besser. Oder der A4988. Der macht beide Funktionen in einem (Controller zur Umsetzung der Ansteuerungssignale + Treiber). Die sind zwar eigentlich für bipolare Motoren, aber man kann daran auch unipolare Motoren anschließen, wenn diese 6 oder 8 Anschlüssen haben (aber es geht nicht mit 5!).

Letztlich kommt das auf deine Motoren an. Wenn du mehr als 500mA pro Phase willst brauchst du sowieso eine andere Lösung. Ein 4-fach Array (ULN2065) macht mehr.