Skip to content

Instantly share code, notes, and snippets.

@nikibobi
Last active December 4, 2015 11:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikibobi/ebd7db5c66c54aacfb9b to your computer and use it in GitHub Desktop.
Save nikibobi/ebd7db5c66c54aacfb9b to your computer and use it in GitHub Desktop.
#define STEPS 800 //motor steps for one cut
#define DIRECTION 1 //motor direction 1 or 0
#define CUT_TIME 500 //time to cut in ms
#define CUT_COUNT 20 //number of cuts
#define SPEED_TIME 1 //speed between impulses in ms
#define PAUSE_TIME 100 //time after pause button is pressed
#define GRAB_TIME 200 //time for grabbing/releasing the paperj
#define STEP_PIN 5 //motor driver STEP pin
#define DIR_PIN 11 //motor driver DIR pin
#define NOT_READY_PIN 12 //LED pin when not ready
#define FINISH_PIN 13 //LED pin when all pieses are ready
#define CUT_PIN 9 //cuts the paper
#define GRAB_PIN 8 //grabs the paper
#define GO_PIN 7 //button for starting
#define PAUSE_PIN 6 //button for pausing the job for a PAUSE_TIME
void setup() {
//set all outputs
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(NOT_READY_PIN, OUTPUT);
pinMode(FINISH_PIN, OUTPUT);
pinMode(CUT_PIN, OUTPUT);
pinMode(GRAB_PIN, OUTPUT);
//set all inputs
pinMode(GO_PIN, INPUT);
pinMode(PAUSE_PIN, INPUT);
digitalWrite(DIR_PIN, DIRECTION);//set the direction pin
digitalWrite(CUT_PIN, LOW);
digitalWrite(GRAB_PIN, LOW);
Serial.begin(9600);//start serial port communication
}
void loop() {
waitForGo();
start();
doNPieces(CUT_COUNT);
finish();
}
void waitForGo() {
//while go button is not pressed wait
boolean go;
do {
go = digitalRead(GO_PIN);
delay(200);
} while(go == HIGH);
}
void doNPieces(int n) {
while(n > 0) {
boolean pause = digitalRead(PAUSE_PIN);
if(pause == HIGH) { //when pause isnt pressed make one piece
delay(500);
grabPaper();
doNSteps(STEPS);
cutPaper();
n--;
} else { //when pause is pressed wait pause time
releasePaper();
delay(PAUSE_TIME);
}
Serial.println(n);
}
}
void grabPaper() {
digitalWrite(GRAB_PIN, LOW);
delay(GRAB_TIME);
}
void releasePaper() {
digitalWrite(GRAB_PIN, HIGH);
delay(GRAB_TIME);
}
void doNSteps(int n) {
while(n > 0) {
doOneStep(SPEED_TIME);
n--;
}
}
void doOneStep(int speedTime) {
digitalWrite(STEP_PIN, LOW);
delay(speedTime);
digitalWrite(STEP_PIN, HIGH);
delay(speedTime);
}
void cutPaper() {
digitalWrite(CUT_PIN, HIGH);
delay(CUT_TIME);
digitalWrite(CUT_PIN, LOW);
delay(CUT_TIME);
}
void start() {
digitalWrite(NOT_READY_PIN, HIGH);
digitalWrite(FINISH_PIN, LOW);
}
void finish() {
digitalWrite(NOT_READY_PIN, LOW);
digitalWrite(FINISH_PIN, HIGH);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment