INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
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;
}

}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Vorstellung und Frage zur Motorsteuerung papla 1 1.235 19.01.2014 10:55
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste