/** * Formikoj (Ameisen) Roboter * -------------------------- * Besteht aus * - zwei Steppermotoren * - zwei Linetracking\Distanz IR Sensoren * - Einem Ultraschalsensoren * - 1 Statusled * * @author kf * @since 2017-01-16 **/ //Bibliothek für Ultraschalsensor #include //Bibliothek für Motorsteurung #include // Ultraschallsensor #define TRIGGER_PIN 3 #define ECHO_PIN 4 #define MAX_DISTANCE 200 // Infarosensoren #define INFAROT_LEFT 2 #define INFAROT_RIGHT 12 //LED's #define INTERNAL_LED 13 #define EXTERNAL_LED 10 // Motoren #define MOTOR_LEFT_DIRECTION 6 #define MOTOR_LEFT_PWM 5 #define MOTOR_RIGHT_DIRECTION 8 #define MOTOR_RIGHT_PWM 7 #define MOTOR_PWM_MIN 10 // arbitrary slow speed PWM duty cycle #define MOTOR_PWM_NORMAL 50 #define MOTOR_DIRECTION_DELAY 50 // brief delay for abrupt motor changes //Initialisierung des Ultraschalsonars NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); //Initialisierung der Motoren Motor motorLeft = Motor(MOTOR_LEFT_DIRECTION,MOTOR_LEFT_PWM,HIGH,MOTOR_PWM_NORMAL,MOTOR_DIRECTION_DELAY); Motor motorRight = Motor(MOTOR_RIGHT_DIRECTION,MOTOR_RIGHT_PWM,HIGH,MOTOR_PWM_NORMAL,MOTOR_DIRECTION_DELAY); //Stopt die Motoren void stopMotors(){ motorLeft.stop(); motorRight.stop(); } //Fährt den Roboter nach vorne void driveForward(){ motorLeft.forward(); motorRight.forward(); } //Fährt den Roboter zurück void driveBackward(){ motorLeft.backward(); motorRight.backward(); } //Dreht den Roboter nach rechts void turnRight(){ motorLeft.forward(); motorRight.backward(); } //Dreht den Roboter nach links void turnLeft(){ motorLeft.backward(); motorRight.forward(); } //Gibt die Sensordaten über die serielle Schnittstelle aus void serialStatus(){ Serial.print("Ultraschalsensor: "); Serial.println(sonar.ping_cm()); Serial.print("IR-Sensor-Links: "); Serial.println(digitalRead(INFAROT_LEFT)); Serial.print("IR-Sensor-Links: "); Serial.println(digitalRead(INFAROT_RIGHT)); } //Lässt eine LED blinken void blinkLED(int led,int count=1, int time=1000){ for(int i=0;i