Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
projekte:kameraslider [2016/03/12 17:32]
markus
projekte:kameraslider [2018/05/24 17:29] (aktuell)
Zeile 251: Zeile 251:
  
  
 +
 +</​file>​
 +
 +<file C SLIDER_NO_UI.ino>​
 +/*
 +SLIDER_NO_UI.ino
 +created by Markus Buecher
 +markus@lug-saar.de
 +
 +Feel free to contact me if you have any questions, ideas, critics or improvements.
 +
 +RELEASE NOTES
 +Please note that this Version doesn'​t contain an user interface (UI). You have to enter all values manually in the Parameter / Varaible section
 +in the head of this program. Feel free to copy this and build your own camslider. ​
 +**Version 1.0**
 +    First release of the Arduino Program for Camslider.
 +    ***WORKING:​***
 +    -Initialisation
 +    -Move from point to point
 +    -Auto Reset after reaching the other end of line
 +
 +    ***NOT WORKING / NOT IMPLEMENTED***
 +    -RUNTIME (means to set a time which gives the duration of the real time duration of a timelapse for example)
 +     ​-->​ does not automatically calculate the amount of Move Step and Exposure Time
 +    -Cameracontrol
 +    -lots of more ideas
 +*/
 +
 +//Pinout
 +const int END_STOP_LEFT = 5;      //Left Endstop
 +const int END_STOP_RIGHT = 6;     //​Right Endstop
 +const int STEP_SIGNAL = 3;        //Step Signal for Pololu --> STEP
 +const int DIRECTION_SIGNAL = 4;   //​Direction Signal for Pololu --> DIR
 +const int LED_INDICATOR = 2;      //LED-Pin for Status Signal
 +
 +//Global Variables
 +
 +int STATE = 0;​  ​       //0 = Slider somewhere -> Initialisation;​ 1 = Initialisation completed, jump from point to point; 2 = Go home again; 3 = Waiting for reset
 +int RUNTIME = 1000;​  ​   //RUNTIME in seconds 60s = 1m; 120s = 2m; 600s = 10m; 3600s = 1h; 7200 = 2h. Entered values will be calculated into MoveTime and ExposureTime
 +int long STEP_COUNTER = 0;        //Counts the amounts of Step-Signals from the Arduino to the Driver
 +int MOVE_STEP_FROM_SWITCH = 200;  //defines the amount of steps, the cartridge moves back from a collision with the endswitch
 +int MOVE_STEP = 1200;             //​number of Steps made  between each photo
 +int EXPOSURE_TIME = 1;            //​Exposuretime
 +int FREQUENCY = 3000;             //Set frequency for Step Signal (Steps per Second)
 +
 +void setup() {                    //set pinModes to In- or Output
 + pinMode(END_STOP_LEFT,​ INPUT);
 + pinMode(END_STOP_RIGHT,​ INPUT);
 + pinMode(LED_INDICATOR,​ OUTPUT);
 + pinMode(STEP_SIGNAL,​ OUTPUT);
 + pinMode(DIRECTION_SIGNAL,​ OUTPUT);
 +}
 +
 +void step() { ​                    //​this function is generating the Logic HIGH to LOW Signal for Stepper Driver
 + digitalWrite(STEP_SIGNAL,​ HIGH);
 + delayMicroseconds(1000000/​(FREQUENCY));​
 + digitalWrite(STEP_SIGNAL,​ LOW);
 + delayMicroseconds(1000000/​(FREQUENCY));​
 + ++STEP_COUNTER;​
 +}
 +
 +void loop() {                     //​Main Loop
 +
 +switch (STATE) {                  //​Switch/​Case Statement in the loop function. The State to the number can be found above in the description of STATE Variable
 +     case 0:                     //​Initialisation
 +       while (digitalRead(END_STOP_RIGHT) == LOW) {
 +       digitalWrite(DIRECTION_SIGNAL,​ LOW);
 +       step();
 +          if (digitalRead(END_STOP_RIGHT) == HIGH) {
 +            digitalWrite(DIRECTION_SIGNAL,​ HIGH);
 +            STEP_COUNTER = 0;
 +            while (STEP_COUNTER <= MOVE_STEP_FROM_SWITCH) {
 +              step();
 +            }
 +          STATE = 1;
 +          }
 +          break;
 +        }
 +        break;
 +
 +     case 1:                     //​Take Photos with specified delay, stepwidth and exposuretime ​  
 +        delay(1000*(EXPOSURE_TIME)); ​         ​
 +        while (1) {
 +          digitalWrite(DIRECTION_SIGNAL,​ HIGH);
 +          STEP_COUNTER = 0;
 +          while (STEP_COUNTER <= MOVE_STEP) {              ​
 +            if (digitalRead(END_STOP_LEFT) == HIGH) {
 +              STATE = 2;
 +              break;
 +            }
 +            else
 +              step();
 +          }
 +          break;
 +        }
 +
 +      case 2:                     //​Move back to home (2nd Initialisation)
 +        while (digitalRead(END_STOP_RIGHT) == LOW) {
 +          digitalWrite(DIRECTION_SIGNAL,​ LOW);
 +          step();
 +          if (digitalRead(END_STOP_RIGHT) == HIGH) {
 +            digitalWrite(DIRECTION_SIGNAL,​ HIGH);
 +            STEP_COUNTER = 0;
 +            while (STEP_COUNTER <= MOVE_STEP_FROM_SWITCH) {
 +              step();
 +            }
 +          STATE = 3;
 +          }
 +          break;
 +        }
 +        break;
 +       
 +       case 3:                    //Indicates with a LED that the Slider is ready with taking photos
 +        while(1) {
 +          digitalWrite(LED_INDICATOR = HIGH);
 +          delay(200);
 +          digitalWrite(LED_INDICATOR = LOW);
 +          delay(200);
 +        ​
 +        }
 +
 +       ​break;​
 + }
 +}
  
 </​file>​ </​file>​
projekte/kameraslider.txt · Zuletzt geändert: 2018/05/24 17:29 (Externe Bearbeitung)
Nach oben
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0