Fixing indentation

This commit is contained in:
Bartosz Borkowski
2015-05-28 22:40:39 +02:00
parent 69d3baa1b2
commit bd08ae9a98
3 changed files with 266 additions and 266 deletions

View File

@@ -1,10 +1,10 @@
/* Eggduino-Firmware by Joachim Cerny, 2014 /* Eggduino-Firmware by Joachim Cerny, 2014
Thanks for the nice libs ACCELSTEPPER and SERIALCOMMAND, which made this project much easier. Thanks for the nice libs ACCELSTEPPER and SERIALCOMMAND, which made this project much easier.
Thanks to the Eggbot-Team for such a funny and enjoable concept! Thanks to the Eggbot-Team for such a funny and enjoable concept!
Thanks to my wife and my daughter for their patience. :-) Thanks to my wife and my daughter for their patience. :-)
*/ */
// implemented Eggbot-Protocol-Version v13 // implemented Eggbot-Protocol-Version v13
// EBB-Command-Reference, I sourced from: http://www.schmalzhaus.com/EBB/EBBCommands.html // EBB-Command-Reference, I sourced from: http://www.schmalzhaus.com/EBB/EBBCommands.html
@@ -15,9 +15,9 @@ Thanks to my wife and my daughter for their patience. :-)
// EBB-Coordinates are coming in for 16th-Microstepmode. The Coordinate-Transforms are done in weired integer-math. Be careful, when you diecide to modify settings. // EBB-Coordinates are coming in for 16th-Microstepmode. The Coordinate-Transforms are done in weired integer-math. Be careful, when you diecide to modify settings.
/* TODOs: /* TODOs:
1 collision control via penMin/penMax 1 collision control via penMin/penMax
2 implement homing sequence via microswitch or optical device 2 implement homing sequence via microswitch or optical device
*/ */
#include "AccelStepper.h" // nice lib from http://www.airspayce.com/mikem/arduino/AccelStepper/ #include "AccelStepper.h" // nice lib from http://www.airspayce.com/mikem/arduino/AccelStepper/
#include <Servo.h> #include <Servo.h>
@@ -27,17 +27,17 @@ Thanks to my wife and my daughter for their patience. :-)
#define initSting "EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6" #define initSting "EBBv13_and_above Protocol emulated by Eggduino-Firmware V1.6"
//Rotational Stepper: //Rotational Stepper:
#define step1 11 #define step1 11
#define dir1 10 #define dir1 10
#define enableRotMotor 9 #define enableRotMotor 9
#define rotMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch #define rotMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch
//Pen Stepper: //Pen Stepper:
#define step2 8 #define step2 8
#define dir2 7 #define dir2 7
#define enablePenMotor 6 #define enablePenMotor 6
#define penMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch #define penMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch
#define servoPin 3 //Servo #define servoPin 3 //Servo
// EXTRAFEATURES - UNCOMMENT TO USE THEM ------------------------------------------------------------------- // EXTRAFEATURES - UNCOMMENT TO USE THEM -------------------------------------------------------------------
@@ -47,47 +47,47 @@ Thanks to my wife and my daughter for their patience. :-)
//----------------------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------------------
#define penUpPosEEAddress ((uint16_t *)0) #define penUpPosEEAddress ((uint16_t *)0)
#define penDownPosEEAddress ((uint16_t *)2) #define penDownPosEEAddress ((uint16_t *)2)
//make Objects //make Objects
AccelStepper rotMotor(1, step1, dir1); AccelStepper rotMotor(1, step1, dir1);
AccelStepper penMotor(1, step2, dir2); AccelStepper penMotor(1, step2, dir2);
Servo penServo; Servo penServo;
SerialCommand SCmd; SerialCommand SCmd;
//create Buttons //create Buttons
#ifdef prgButton #ifdef prgButton
Button prgButtonToggle(prgButton, setprgButtonState); Button prgButtonToggle(prgButton, setprgButtonState);
#endif #endif
#ifdef penToggleButton #ifdef penToggleButton
Button penToggle(penToggleButton, doTogglePen); Button penToggle(penToggleButton, doTogglePen);
#endif #endif
#ifdef motorsButton #ifdef motorsButton
Button motorsToggle(motorsButton, toggleMotors); Button motorsToggle(motorsButton, toggleMotors);
#endif #endif
// Variables... be careful, by messing around here, everything has a reason and crossrelations... // Variables... be careful, by messing around here, everything has a reason and crossrelations...
int penMin=0; int penMin=0;
int penMax=0; int penMax=0;
int penUpPos=5; //can be overwritten from EBB-Command SC int penUpPos=5; //can be overwritten from EBB-Command SC
int penDownPos=20; //can be overwritten from EBB-Command SC int penDownPos=20; //can be overwritten from EBB-Command SC
int servoRateUp=0; //from EBB-Protocol not implemented on machine-side int servoRateUp=0; //from EBB-Protocol not implemented on machine-side
int servoRateDown=0;//from EBB-Protocol not implemented on machine-side int servoRateDown=0; //from EBB-Protocol not implemented on machine-side
long rotStepError=0; long rotStepError=0;
long penStepError=0; long penStepError=0;
int penState=penUpPos; int penState=penUpPos;
uint32_t nodeCount=0; uint32_t nodeCount=0;
unsigned int layer=0; unsigned int layer=0;
boolean prgButtonState=0; boolean prgButtonState=0;
uint8_t rotStepCorrection = 16/rotMicrostep ; //devide EBB-Coordinates by this factor to get EGGduino-Steps uint8_t rotStepCorrection = 16/rotMicrostep ; //devide EBB-Coordinates by this factor to get EGGduino-Steps
uint8_t penStepCorrection = 16/penMicrostep ; //devide EBB-Coordinates by this factor to get EGGduino-Steps uint8_t penStepCorrection = 16/penMicrostep ; //devide EBB-Coordinates by this factor to get EGGduino-Steps
float rotSpeed=0; float rotSpeed=0;
float penSpeed=0; // these are local variables for Function SteppermotorMove-Command, but for performance-reasons it will be initialized here float penSpeed=0; // these are local variables for Function SteppermotorMove-Command, but for performance-reasons it will be initialized here
boolean motorsEnabled = 0; boolean motorsEnabled = 0;
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
makeComInterface(); makeComInterface();
initHardware(); initHardware();
} }
void loop() { void loop() {
@@ -95,15 +95,15 @@ void loop() {
SCmd.readSerial(); SCmd.readSerial();
#ifdef penToggleButton #ifdef penToggleButton
penToggle.check(); penToggle.check();
#endif #endif
#ifdef motorsButton #ifdef motorsButton
motorsToggle.check(); motorsToggle.check();
#endif #endif
#ifdef prgButton #ifdef prgButton
prgButtonToggle.check(); prgButtonToggle.check();
#endif #endif
} }

View File

@@ -1,22 +1,22 @@
void makeComInterface(){ void makeComInterface(){
SCmd.addCommand("v",sendVersion); SCmd.addCommand("v",sendVersion);
SCmd.addCommand("EM",enableMotors); SCmd.addCommand("EM",enableMotors);
SCmd.addCommand("SC",stepperModeConfigure); SCmd.addCommand("SC",stepperModeConfigure);
SCmd.addCommand("SP",setPen); SCmd.addCommand("SP",setPen);
SCmd.addCommand("SM",stepperMove); SCmd.addCommand("SM",stepperMove);
SCmd.addCommand("SE",ignore); SCmd.addCommand("SE",ignore);
SCmd.addCommand("TP",togglePen); SCmd.addCommand("TP",togglePen);
SCmd.addCommand("PO",ignore); //Engraver command, not implemented, gives fake answer SCmd.addCommand("PO",ignore); //Engraver command, not implemented, gives fake answer
SCmd.addCommand("NI",nodeCountIncrement); SCmd.addCommand("NI",nodeCountIncrement);
SCmd.addCommand("ND",nodeCountDecrement); SCmd.addCommand("ND",nodeCountDecrement);
SCmd.addCommand("SN",setNodeCount); SCmd.addCommand("SN",setNodeCount);
SCmd.addCommand("QN",queryNodeCount); SCmd.addCommand("QN",queryNodeCount);
SCmd.addCommand("SL",setLayer); SCmd.addCommand("SL",setLayer);
SCmd.addCommand("QL",queryLayer); SCmd.addCommand("QL",queryLayer);
SCmd.addCommand("QP",queryPen); SCmd.addCommand("QP",queryPen);
SCmd.addCommand("QB",queryButton); //"PRG" Button, SCmd.addCommand("QB",queryButton); //"PRG" Button,
SCmd.setDefaultHandler(unrecognized); // Handler for command that isn't matched (says "What?") SCmd.setDefaultHandler(unrecognized); // Handler for command that isn't matched (says "What?")
} }
void queryPen() { void queryPen() {
@@ -36,25 +36,25 @@ void queryButton() {
} }
void queryLayer() { void queryLayer() {
Serial.print(String(layer) +"\r\n"); Serial.print(String(layer) +"\r\n");
sendAck(); sendAck();
} }
void setLayer() { void setLayer() {
uint32_t value=0; uint32_t value=0;
char *arg1; char *arg1;
arg1 = SCmd.next(); arg1 = SCmd.next();
if (arg1 != NULL) { if (arg1 != NULL) {
value = atoi(arg1); value = atoi(arg1);
layer=value; layer=value;
sendAck(); sendAck();
} }
else else
sendError(); sendError();
} }
void queryNodeCount() { void queryNodeCount() {
Serial.print(String(nodeCount) +"\r\n"); Serial.print(String(nodeCount) +"\r\n");
sendAck(); sendAck();
} }
@@ -83,79 +83,79 @@ void nodeCountDecrement() {
} }
void stepperMove() { void stepperMove() {
uint16_t duration=0; //in ms uint16_t duration=0; //in ms
int penStepsEBB=0; //Pen int penStepsEBB=0; //Pen
int rotStepsEBB=0; //Rot int rotStepsEBB=0; //Rot
moveToDestination(); moveToDestination();
if (!parseSMArgs(&duration, &penStepsEBB, &rotStepsEBB)) { if (!parseSMArgs(&duration, &penStepsEBB, &rotStepsEBB)) {
sendError(); sendError();
return; return;
} }
sendAck(); sendAck();
if ( (penStepsEBB==0) && (rotStepsEBB==0) ) { if ( (penStepsEBB==0) && (rotStepsEBB==0) ) {
delay(duration); delay(duration);
return; return;
} }
prepareMove(duration, penStepsEBB, rotStepsEBB); prepareMove(duration, penStepsEBB, rotStepsEBB);
} }
void setPen(){ void setPen(){
int cmd; int cmd;
int value; int value;
char *arg; char *arg;
moveToDestination(); moveToDestination();
arg = SCmd.next(); arg = SCmd.next();
if (arg != NULL) { if (arg != NULL) {
cmd = atoi(arg); cmd = atoi(arg);
switch (cmd) { switch (cmd) {
case 0: case 0:
penServo.write(penUpPos); penServo.write(penUpPos);
penState=penUpPos; penState=penUpPos;
break; break;
case 1: case 1:
penServo.write(penDownPos); penServo.write(penDownPos);
penState=penDownPos; penState=penDownPos;
break; break;
default: default:
sendError(); sendError();
} }
} }
char *val; char *val;
val = SCmd.next(); val = SCmd.next();
if (val != NULL) { if (val != NULL) {
value = atoi(val); value = atoi(val);
sendAck(); sendAck();
delay(value); delay(value);
} }
if (val==NULL && arg !=NULL) { if (val==NULL && arg !=NULL) {
sendAck(); sendAck();
delay(500); delay(500);
} }
// Serial.println("delay"); // Serial.println("delay");
if (val==NULL && arg ==NULL) if (val==NULL && arg ==NULL)
sendError(); sendError();
} }
void togglePen(){ void togglePen(){
int value; int value;
char *arg; char *arg;
moveToDestination(); moveToDestination();
arg = SCmd.next(); arg = SCmd.next();
if (arg != NULL) if (arg != NULL)
value = atoi(arg); value = atoi(arg);
else else
value = 500; value = 500;
doTogglePen(); doTogglePen();
sendAck(); sendAck();
@@ -163,102 +163,102 @@ void togglePen(){
} }
void doTogglePen() { void doTogglePen() {
if (penState==penUpPos) { if (penState==penUpPos) {
penServo.write(penDownPos); penServo.write(penDownPos);
penState=penDownPos; penState=penDownPos;
} else { } else {
penServo.write(penUpPos); penServo.write(penUpPos);
penState=penUpPos; penState=penUpPos;
} }
} }
void enableMotors(){ void enableMotors(){
int cmd; int cmd;
int value; int value;
char *arg; char *arg;
char *val; char *val;
arg = SCmd.next(); arg = SCmd.next();
if (arg != NULL) if (arg != NULL)
cmd = atoi(arg); cmd = atoi(arg);
val = SCmd.next(); val = SCmd.next();
if (val != NULL) if (val != NULL)
value = atoi(val); value = atoi(val);
//values parsed //values parsed
if ((arg != NULL) && (val == NULL)){ if ((arg != NULL) && (val == NULL)){
switch (cmd) { switch (cmd) {
case 0: motorsOff(); case 0: motorsOff();
sendAck(); sendAck();
break; break;
case 1: motorsOn(); case 1: motorsOn();
sendAck(); sendAck();
break; break;
default: default:
sendError(); sendError();
} }
} }
//the following implementaion is a little bit cheated, because i did not know, how to implement different values for first and second argument. //the following implementaion is a little bit cheated, because i did not know, how to implement different values for first and second argument.
if ((arg != NULL) && (val != NULL)){ if ((arg != NULL) && (val != NULL)){
switch (value) { switch (value) {
case 0: motorsOff(); case 0: motorsOff();
sendAck(); sendAck();
break; break;
case 1: motorsOn(); case 1: motorsOn();
sendAck(); sendAck();
break; break;
default: default:
sendError(); sendError();
} }
} }
} }
void stepperModeConfigure(){ void stepperModeConfigure(){
int cmd; int cmd;
int value; int value;
char *arg; char *arg;
arg = SCmd.next(); arg = SCmd.next();
if (arg != NULL) if (arg != NULL)
cmd = atoi(arg); cmd = atoi(arg);
char *val; char *val;
val = SCmd.next(); val = SCmd.next();
if (val != NULL) if (val != NULL)
value = atoi(val); value = atoi(val);
if ((arg != NULL) && (val != NULL)){ if ((arg != NULL) && (val != NULL)){
switch (cmd) { switch (cmd) {
case 4: penDownPos= (int) ((float) (value-6000)/(float) 133.3); // transformation from EBB to PWM-Servo case 4: penDownPos= (int) ((float) (value-6000)/(float) 133.3); // transformation from EBB to PWM-Servo
storePenDownPosInEE(); storePenDownPosInEE();
sendAck(); sendAck();
break; break;
case 5: penUpPos= (int)((float) (value-6000)/(float) 133.3); // transformation from EBB to PWM-Servo case 5: penUpPos= (int)((float) (value-6000)/(float) 133.3); // transformation from EBB to PWM-Servo
storePenUpPosInEE(); storePenUpPosInEE();
sendAck(); sendAck();
break; break;
case 6: //rotMin=value; ignored case 6: //rotMin=value; ignored
sendAck(); sendAck();
break; break;
case 7: //rotMax=value; ignored case 7: //rotMax=value; ignored
sendAck(); sendAck();
break; break;
case 11: servoRateUp=value; case 11: servoRateUp=value;
sendAck(); sendAck();
break; break;
case 12: servoRateDown=value; case 12: servoRateDown=value;
sendAck(); sendAck();
break; break;
default: default:
sendError(); sendError();
} }
} }
} }
void sendVersion(){ void sendVersion(){
Serial.print(initSting); Serial.print(initSting);
Serial.print("\r\n"); Serial.print("\r\n");
} }
void unrecognized(const char *command){ void unrecognized(const char *command){
sendError(); sendError();
} }
void ignore(){ void ignore(){
sendAck(); sendAck();
} }

View File

@@ -1,33 +1,33 @@
void initHardware(){ void initHardware(){
// enable eeprom wait in avr/eeprom.h functions // enable eeprom wait in avr/eeprom.h functions
SPMCSR &= ~SELFPRGEN; SPMCSR &= ~SELFPRGEN;
loadPenPosFromEE(); loadPenPosFromEE();
pinMode(enableRotMotor, OUTPUT); pinMode(enableRotMotor, OUTPUT);
pinMode(enablePenMotor, OUTPUT); pinMode(enablePenMotor, OUTPUT);
rotMotor.setMaxSpeed(2000.0); rotMotor.setMaxSpeed(2000.0);
rotMotor.setAcceleration(10000.0); rotMotor.setAcceleration(10000.0);
penMotor.setMaxSpeed(2000.0); penMotor.setMaxSpeed(2000.0);
penMotor.setAcceleration(10000.0); penMotor.setAcceleration(10000.0);
motorsOff(); motorsOff();
penServo.attach(servoPin); penServo.attach(servoPin);
penServo.write(penState); penServo.write(penState);
} }
void inline loadPenPosFromEE() { void inline loadPenPosFromEE() {
penUpPos = eeprom_read_word(penUpPosEEAddress); penUpPos = eeprom_read_word(penUpPosEEAddress);
penDownPos = eeprom_read_word(penDownPosEEAddress); penDownPos = eeprom_read_word(penDownPosEEAddress);
penState = penUpPos; penState = penUpPos;
} }
void inline storePenUpPosInEE() { void inline storePenUpPosInEE() {
eeprom_update_word(penUpPosEEAddress, penUpPos); eeprom_update_word(penUpPosEEAddress, penUpPos);
} }
void inline storePenDownPosInEE() { void inline storePenDownPosInEE() {
eeprom_update_word(penDownPosEEAddress, penDownPos); eeprom_update_word(penDownPosEEAddress, penDownPos);
} }
void inline sendAck(){ void inline sendAck(){
@@ -53,7 +53,7 @@ void motorsOn() {
void toggleMotors() { void toggleMotors() {
if (motorsEnabled) { if (motorsEnabled) {
motorsOff(); motorsOff();
} else { } else {
motorsOn(); motorsOn();
} }
} }
@@ -90,7 +90,7 @@ void prepareMove(uint16_t duration, int penStepsEBB, int rotStepsEBB) {
rotMotor.setSpeed( abs( (float)rotStepsEBB * (float)1000 / (float)duration ) ); rotMotor.setSpeed( abs( (float)rotStepsEBB * (float)1000 / (float)duration ) );
penMotor.move(penStepsEBB); penMotor.move(penStepsEBB);
penMotor.setSpeed( abs( (float)penStepsEBB * (float)1000 / (float)duration ) ); penMotor.setSpeed( abs( (float)penStepsEBB * (float)1000 / (float)duration ) );
} else { } else {
//incoming EBB-Steps will be multiplied by 16, then Integer-maths is done, result will be divided by 16 //incoming EBB-Steps will be multiplied by 16, then Integer-maths is done, result will be divided by 16
// This make thinks here really complicated, but floating point-math kills performance and memory, believe me... I tried... // This make thinks here really complicated, but floating point-math kills performance and memory, believe me... I tried...
long rotSteps = ( (long)rotStepsEBB * 16 / rotStepCorrection) + (long)rotStepError; //correct incoming EBB-Steps to our microstep-Setting and multiply by 16 to avoid floatingpoint... long rotSteps = ( (long)rotStepsEBB * 16 / rotStepCorrection) + (long)rotStepError; //correct incoming EBB-Steps to our microstep-Setting and multiply by 16 to avoid floatingpoint...