In case anyone finds it useful, here's the program I wrote / amended to "exercise" the 3 axes. The pin connections match the single-arduino setup for the final program so you won't need to rearrange them later:
// remember to select com port & board - ladyada adafruit is atmega168
// Stepper X
#define  gndPinX 0
#define stepPinX 2
#define  dirPinX 3
#define  minPinX 4
#define  maxPinX 9
// Stepper Y
#define  gndPinY 0
#define stepPinY 10
#define  dirPinY 7
#define  minPinY 8
#define  maxPinY 13
// Stepper Z 
#define  gndPinZ 0
#define stepPinZ 19 // a5  (a0 = d14)
#define  dirPinZ 18 // a4
#define  minPinZ 17 // a3
#define  maxPinZ 16 // a2
void setup() {
  Serial.begin(9600);
  Serial.println("Starting stepper exerciser.");
  pinMode(stepPinX, OUTPUT);
  pinMode(stepPinY, OUTPUT);
  pinMode(stepPinZ, OUTPUT);
  
  pinMode(dirPinX, OUTPUT);
  pinMode(dirPinY, OUTPUT);
  pinMode(dirPinZ, OUTPUT);
  digitalWrite( dirPinX, HIGH );
  digitalWrite( dirPinY, HIGH );
  digitalWrite( dirPinZ, HIGH );
  digitalWrite(stepPinX, LOW );
  digitalWrite(stepPinY, LOW );
  digitalWrite(stepPinZ, LOW );
}
void loop() {
  int i, j;
//  for (i=1000; i>=200; i-=100) {
  while( true ) {
    i = 400;
    Serial.print("Speed: ");
    Serial.println(i);
 
    for (j=0; j<6000; j++) {
      digitalWrite(stepPinX, HIGH);
      digitalWrite(stepPinY, HIGH);
      digitalWrite(stepPinZ, HIGH);
      delayMicroseconds(i);
      digitalWrite(stepPinX, LOW);
      digitalWrite(stepPinY, LOW);
      digitalWrite(stepPinZ, LOW);
      delayMicroseconds(i);
    }
    delay(500);
    digitalWrite(dirPinX, !digitalRead(dirPinX));
    digitalWrite(dirPinY, !digitalRead(dirPinY));
    digitalWrite(dirPinZ, !digitalRead(dirPinZ));
    for (j=0; j<6000; j++) {
      digitalWrite(stepPinX, HIGH);
      digitalWrite(stepPinY, HIGH);
      digitalWrite(stepPinZ, HIGH);
      delayMicroseconds(i);
      digitalWrite(stepPinX, LOW);
      digitalWrite(stepPinY, LOW);
      digitalWrite(stepPinZ, LOW);
      delayMicroseconds(i);
    }
    delay(1000);
    Serial.println("Switching directions."); 
    digitalWrite(dirPinX, !digitalRead(dirPinX));
    digitalWrite(dirPinY, !digitalRead(dirPinY));
    digitalWrite(dirPinZ, !digitalRead(dirPinZ));
  }
}
No comments:
Post a Comment