diff --git a/project/motor.c b/project/motor.c index e90bd61..fcdf181 100755 --- a/project/motor.c +++ b/project/motor.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "gpio.h" #define PIN_MOTOR_RECHTS_FORWARD "20" @@ -13,22 +14,29 @@ #define MOTOR_ON 1 #define MOTOR_OFF 0 - +bool motor_rechts_forward_on = false; +bool motor_rechts_reverse_on = false; +bool motor_links_forward_on = false; +bool motor_links_reverse_on = false; void forward(int motorNumber) { if(motorNumber == 1) { writeOutput(PIN_MOTOR_RECHTS_FORWARD, MOTOR_ON); + motor_rechts_forward_on = true; } else if(motorNumber == 2) { writeOutput(PIN_MOTOR_LINKS_FORWARD, MOTOR_ON); + motor_links_forward_on = true; } else if(motorNumber == 3) { writeOutput(PIN_MOTOR_RECHTS_FORWARD, MOTOR_ON); writeOutput(PIN_MOTOR_LINKS_FORWARD, MOTOR_ON); + motor_rechts_forward_on = true; + motor_links_forward_on = true; } } @@ -37,42 +45,103 @@ void reverse(int motorNumber) if(motorNumber == 1) { writeOutput(PIN_MOTOR_RECHTS_REVERSE, MOTOR_ON); + motor_rechts_reverse_on = true; } else if(motorNumber == 2) { writeOutput(PIN_MOTOR_LINKS_REVERSE, MOTOR_ON); + motor_links_reverse_on = true; } else if(motorNumber == 3) { writeOutput(PIN_MOTOR_RECHTS_REVERSE, MOTOR_ON); writeOutput(PIN_MOTOR_LINKS_REVERSE, MOTOR_ON); + motor_rechts_reverse_on = true; + motor_links_reverse_on = true; + } } +void stopMotor(int motorNumber) +{ + if(motorNumber == 1 && motor_rechts_forward_on) + { + writeOutput(PIN_MOTOR_RECHTS_FORWARD, MOTOR_OFF); + motor_rechts_forward_on = false; + } + else if(motorNumber == 2 && motor_links_forward_on) + { + writeOutput(PIN_MOTOR_LINKS_FORWARD, MOTOR_OFF); + motor_links_forward_on = false; + } + else if(motorNumber == 3 && motor_rechts_reverse_on) + { + writeOutput(PIN_MOTOR_RECHTS_REVERSE, MOTOR_OFF); + motor_rechts_reverse_on = false; + } + else if(motorNumber == 4 && motor_links_reverse_on) + { + writeOutput(PIN_MOTOR_LINKS_REVERSE, MOTOR_OFF); + motor_links_reverse_on = false; + } + +} + int main(int argc, char* argv[]) { registerOutput(PIN_MOTOR_RECHTS_FORWARD); registerOutput(PIN_MOTOR_RECHTS_REVERSE); registerOutput(PIN_MOTOR_LINKS_FORWARD); registerOutput(PIN_MOTOR_LINKS_REVERSE); + + if(argc > 0) { if(strcmp(argv[1],"1")==0) { + //motor_rechts_forward forward(1); } else if(strcmp(argv[1],"2")==0) { + //motor_links_forward forward(2); } else if(strcmp(argv[1],"3")==0) { + //motor_rechts_reverse reverse(1); } else if(strcmp(argv[1],"4")==0) { + //motor_links_reverse reverse(2); } + else if(strcmp(argv[1],"5")==0) + { + + forward(3); + } + else if(strcmp(argv[1],"6")==0) + { + //motor_rechts_forward stop + stopMotor(1); + } + else if(strcmp(argv[1],"7")==0) + { + //motor_links_forward stop + stopMotor(2); + } + else if(strcmp(argv[1],"8")==0) + { + //motor_rechts_reverse stop + stopMotor(3); + } + else if(strcmp(argv[1],"9")==0) + { + //motor_links_reverse stop + stopMotor(4); + } else if(strcmp(argv[1],"0")==0) { freePin(PIN_MOTOR_RECHTS_FORWARD);