#define CMD_OPEN 'o'
#define CMD_CLOSE 'c'
+#define CMD_TOGGLE 't'
#define CMD_STATUS 's'
#define CMD_RESET 'r'
stop_timer();
reset_stepper();
current_state = IDLE;
+ Serial.print("Status: ");
+ if(is_opened())
+ Serial.print("opened");
+ else if(is_closed())
+ Serial.print("closed");
+ Serial.println(", idle");
return;
}
else if(current_state == ERROR) {
char command = Serial.read();
if(current_state == ERROR && command != CMD_RESET) {
- Serial.println("Error: last open/close operation took to long!");
+ Serial.println("Error: last open/close operation took too long!");
}
else if (command == CMD_RESET) {
reset_after_error();
else
Serial.println("Error: Operation in progress");
}
+ else if (command == CMD_TOGGLE) {
+ if(current_state == IDLE) {
+ if(is_closed())
+ start_open();
+ else
+ start_close();
+ Serial.println("Ok");
+ }
+ else
+ Serial.println("Error: Operation in progress");
+ }
else if (command == CMD_STATUS)
print_status();
else
Serial.println("Error: unknown command");
}
- if(manual_open() && !is_opened() && current_state == IDLE) {
+ if(manual_open() && !is_opened() && (current_state == IDLE || current_state == ERROR)) {
Serial.println("open forced manually");
start_open();
}
- if(manual_close() && !is_closed() && current_state == IDLE) {
+ if(manual_close() && !is_closed() && (current_state == IDLE || current_state == ERROR)) {
Serial.println("close forced manually");
start_close();
}