Motorsteuerung für Rover ?
|
08.03.2016, 19:26
Beitrag #1
|
|||
|
|||
Motorsteuerung für Rover ?
Hallo[/code]
Der Rover wird seriell angesteuert über Bluetooth. Wie kann ich denn Code anpassen dass die Motoren Stoppen wenn ich keine Daten mehr schreibe. Jetzt muss ich immer ein Stop senden Eine Bessere Lösung als denn Switch Befehl. Controller Mega 2560 mit Bluetooth Adapter und Motorshild Rev3 Gruss Carlo [code] // Steuerung Rover // Erstellt 08.03.2016 // HC-SR04 Ping distance sensor: // VCC to arduino 5v // GND to arduino GND // Echo to Arduino pin 7 // Trig to Arduino pin 8 #define echoPin 24 // Echo Pin #define trigPin 22 // Trigger Pin int maximumRange = 200; // Max Distanz int minimumRange = 0; // Min Distanz int AlarmRange = 22; // Stop Motor long duration, distance; // Distanz Berechnen // Steuerung 2 DC- Motoren // Arduino Shild int Motor_A_AI = 3; // Geschwindikeit 0-255 int Motor_A_DIR = 12; // Drehrichtung int Motor_A_STOP = 9; // Bremse int Motor_B_AI = 11; // Geschwindikeit 0-255 int Motor_B_DIR = 13; // Drehrichtung int Motor_B_STOP = 8; // Bremse void setup() { pinMode(trigPin, OUTPUT); // Sensor pinMode(echoPin, INPUT); // Sensor pinMode(Motor_A_DIR,OUTPUT); // Motor pinMode(Motor_B_DIR,OUTPUT); // Motor pinMode(Motor_A_STOP,OUTPUT);// Motor pinMode(Motor_B_STOP,OUTPUT);// Motor pinMode(Motor_A_AI,OUTPUT);// Geschwindikeit 0-255 pinMode(Motor_B_AI,OUTPUT);// Geschwindikeit 0-255 Serial.begin(19200); while (! Serial); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration/58.2; if (distance >= maximumRange || distance <= minimumRange) { Serial.println("Frei"); } else { Serial.println(distance); } if(distance <= AlarmRange) { Serial.println("<Stop>"); digitalWrite(Motor_A_DIR, HIGH); digitalWrite(Motor_B_DIR, HIGH); digitalWrite(Motor_A_STOP, HIGH); digitalWrite(Motor_B_STOP, HIGH); analogWrite(Motor_A_AI,0); analogWrite(Motor_B_AI,0); } else { Serial.println(distance); } delay(200); if(Serial.available()) { char input; input = Serial.read(); switch(input) { case 'B': // Rückwärts digitalWrite(Motor_A_DIR, HIGH); digitalWrite(Motor_B_DIR, HIGH); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,80); analogWrite(Motor_B_AI,80); Serial.println("Rueckwaerts"); break; case 'S': // Stop digitalWrite(Motor_A_DIR, HIGH); digitalWrite(Motor_B_DIR, HIGH); digitalWrite(Motor_A_STOP, HIGH); digitalWrite(Motor_B_STOP, HIGH); analogWrite(Motor_A_AI,0); analogWrite(Motor_B_AI,0); Serial.println("Stop"); break; case 'Z': // Vorwärts digitalWrite(Motor_A_DIR, LOW); digitalWrite(Motor_B_DIR, LOW); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,255); analogWrite(Motor_B_AI,255); Serial.println("Vorwaerts 100%"); break; case 'Y': // Vorwärts digitalWrite(Motor_A_DIR, LOW); digitalWrite(Motor_B_DIR, LOW); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,180); analogWrite(Motor_B_AI,180); Serial.println("Vorwaerts 60%"); break; case 'X': // Vorwärts digitalWrite(Motor_A_DIR, LOW); digitalWrite(Motor_B_DIR, LOW); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,130); analogWrite(Motor_B_AI,130); Serial.println("Vorwaerts 50"); break; case 'F': // Vorwärts digitalWrite(Motor_A_DIR, LOW); digitalWrite(Motor_B_DIR, LOW); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,80); analogWrite(Motor_B_AI,80); Serial.println("Vorwaerts 30"); break; case 'R': // Rechts digitalWrite(Motor_A_DIR, LOW); digitalWrite(Motor_B_DIR, HIGH); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,180); analogWrite(Motor_B_AI,180); Serial.println("Rechts"); break; case 'L': // Links digitalWrite(Motor_A_DIR, HIGH); digitalWrite(Motor_B_DIR, LOW); digitalWrite(Motor_A_STOP, LOW); digitalWrite(Motor_B_STOP, LOW); analogWrite(Motor_A_AI,180); analogWrite(Motor_B_AI,180); Serial.println("Links"); break; } } } |
|||
|
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
![]() |
Motorsteuerung mit Taster | Eggi123 | 11 | 1.442 |
26.02.2017 15:48 Letzter Beitrag: MicroBahner |
Vorstellung und Frage zur Motorsteuerung | papla | 1 | 1.590 |
19.01.2014 10:55 Letzter Beitrag: rkuehle |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste