- /*
- Author: F. Lionetto
- Created on: June 4th, 2014
-
- The sketch inizializes the position of the two stepper motors, move the laser 5 cm (10000 steps) away from the x micro switch, move the laser 2.5 cm (5000) away from the z micro switch, and then perform a scan for finding the focal length.
-
- Scan for finding the focal length:
- - at a given z position, move one step backward along x, wait, move one step backward along x, wait, and so on (enough times to go across two strips);
- - go back to the initial position along x;
- - move one step forward along z;
- - repeat from the beginning (enough times to be sure to find the focal length, but not that many to touch the silicon sensor);
- - again and again.
- In the current configuration, scan of 1 mm along x and 1 mm along z.
-
- Coordinate system:
- - x axis across the strips, forward direction is toward the window, backward direction is toward the door (stepper motor 1);
- - y axis along the strips;
- - z axis toward the strips, forward direction is down, backward direction is up (stepper motor 2).
-
- The x micro switch is connected to pin 22.
- The z micro switch is connected to pin 23.
-
- Distances in microns.
- */
-
- #include <Wire.h>
- #include <Adafruit_MotorShield.h>
- #include "utility/Adafruit_PWMServoDriver.h"
-
- // Stepper motor properties.
- const int stepsPerRevolution = 200;
- const int singleStep = 5;
-
- // Create the motor shield object with the default I2C address.
- Adafruit_MotorShield AFMS = Adafruit_MotorShield();
-
- // Connect a stepper motor with 200 steps per revolution (1.8 degree) to motor port #1 (M1 and M2).
- Adafruit_StepperMotor *myMotorX = AFMS.getStepper(stepsPerRevolution, 1);
- Adafruit_StepperMotor *myMotorZ = AFMS.getStepper(stepsPerRevolution, 2);
-
- // Micro switch properties.
- const int switchXPin = 22;
- const int switchZPin = 23;
- int switchXState = 0;
- int switchZState = 0;
-
- // Scan properties.
- // Total number of steps we need along x.
- const int totStepsX = 200;
- // Total number of steps we need along y.
- const int totStepsZ = 200;
- int stepsX = 0;
- int stepsZ = 0;
-
- void setup() {
- Serial.begin(9600);
- Serial.println("This is a test!");
-
- AFMS.begin();
-
- myMotorX->setSpeed(50);
- myMotorZ->setSpeed(50);
-
- pinMode(switchXPin,INPUT);
- pinMode(switchZPin,INPUT);
-
- Serial.println("Inizializing position along x...");
-
- while (switchXState == LOW) {
- switchXState = digitalRead(switchXPin);
- if (switchXState == LOW) {
- // The stepper motor is not at the origin of the coordinate system.
- myMotorX->step(1,FORWARD,DOUBLE);
- }
- }
-
- Serial.println("Position along x successfully initialized.");
-
- Serial.println("Inizializing position along z...");
-
- while (switchZState == LOW) {
- switchZState = digitalRead(switchZPin);
- if (switchZState == LOW) {
- // The stepper motor is not at the origin of the coordinate system.
- myMotorZ->step(1,BACKWARD,DOUBLE);
- }
- }
-
- Serial.println("Position along z successfully initialized.");
-
- Serial.println("Moving the laser 5 cm (10000 steps) away from the x micro switch...");
-
- myMotorX->step(10000,BACKWARD,DOUBLE);
-
- Serial.println("Laser moved 5 cm (10000 steps) away from the x micro switch.");
-
- Serial.println("Moving the laser 2.5 cm (5000 steps) away from the z micro switch...");
-
- myMotorZ->step(5000,FORWARD,DOUBLE);
-
- Serial.println("Laser moved 2.5 cm (5000 steps) away from the z micro switch.");
-
- myMotorX->setSpeed(5);
- myMotorZ->setSpeed(5);
-
- myMotorX->release();
- myMotorZ->release();
- }
-
- void loop() {
- // Scan for finding the focal length.
- if(stepsZ < totStepsZ) {
- Serial.print("Data acquisition at z = ");
- Serial.println(stepsZ);
- if (stepsX < totStepsX) {
- myMotorX->step(1,BACKWARD,DOUBLE);
- myMotorX->release();
- stepsX = stepsX + 1;
- }
- else if (stepsX == totStepsX) {
- myMotorX->step(totStepsX,FORWARD,DOUBLE);
- myMotorX->release();
- stepsX = 0;
- myMotorZ->step(1,FORWARD,DOUBLE);
- myMotorZ->release();
- stepsZ = stepsZ + 1;
- }
- }
- else {
- Serial.println("Scan for finding the focal length completed.");
- }
- }