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
Roboter
10.06.2013, 22:54
Beitrag #1
Roboter
Hallo ich hoffe mir kann hier jemand weiterhelfen, also in diesem Code muss irgenwo ein Fehler drinn sein. Denn ich hab ein Fahrgestell mit 4 Rädern die jeweils von einem einzelnen Bürstenmotor angetrieben werden und ein Servo auf dem ein Ultraschallsensor befestigt ist der hin und her schwenken soll. Wenn ich das Programm dann starte laggt das rum wie sau, also manchmal gehts dann hab ich das Gefühl das sich die Kiste aufhängt naja da stimmt jedenfalls irgendwas nicht. Ich habe bereits die Theorie aufgestellt das evt. was von den Motoren zurück kommt und damit den Arduino bei seinem Programmablauf stört, aber eigentlich sollte da ja ne diode oder etwas ähnliches dies verhindern.
Es wäre mir auch schon ziemlich weitergeholfen wenn ich wüsste wie ich z.b. das Fahren in eier Richtung in so fern realisierne kann, dass nur noch das aufrufen einer Funktion nötig ist z.b. vorwärts(1000) oder sowas ahnliches, damit das ganze übersichtlieger wird.



Code:
int pingPin = 31;
int inPin = 30;


#include <AFMotor.h>
#include <Servo.h>
AF_DCMotor motor1(1, MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_64KHZ);
AF_DCMotor motor3(3, MOTOR12_64KHZ);
AF_DCMotor motor4(4, MOTOR12_64KHZ);

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

int pos = 35;    // variable to store the servo position



void setup() {
  motor1.setSpeed(130);
  motor2.setSpeed(130);
  motor3.setSpeed(130);
  motor4.setSpeed(130);
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

}


void loop()
{

long duration, inches, cm;


pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);


pinMode(inPin, INPUT);
duration = pulseIn(inPin, HIGH);


inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);

//Serial.println(cm, DEC);





motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
  
   for(pos =35; pos < 125; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delayMicroseconds(150000);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 125; pos>=36; pos-=1)     // goes from 180 degrees to 0 degrees
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delayMicroseconds(150000);                    




if (cm < 20)
{ motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE); delay (100000);

motor1.run(FORWARD);           //tst
  motor2.run(FORWARD);
  motor3.run(BACKWARD);         //rückwärts
  motor4.run(FORWARD);              //test
  delayMicroseconds(50);        


  }else

{ motor1.run(FORWARD);
  motor2.run(BACKWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);  }

//delay(100);                         TEEEEEEEEEEEEEEEEEST
}}

long microsecondsToInches(long microseconds)
{

return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{

return microseconds / 29 / 2;
}


//if (cm < 10)
//{Serial.println(cm, DEC)}else{ Serial.println(xxxxxx)}





MFG
J4Ng0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.06.2013, 21:51
Beitrag #2
RE: Roboter
Hallo, und wie gesagt wenn mir jemand sagen könnte wie ich eine Funktion in diesem Fall beispielsweise das vorwärtz fahren wofür ca. 4 Zeilen Code nötig sind zusammenfassen, oder besser gesagt diese Funktion mit einem kurzen Befehl aufrufen kann wäre mir der Übersichtlichkeit wegen schon sehr weitergeholfen.
Für weitere Strukturierungstipps die die Übersichtlichkeit des auszuführenden Codes verbessern wäre ich sehr dankbar.

MFG
J4Ng0
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.07.2013, 15:49
Beitrag #3
RE: Roboter
(11.06.2013 21:51)J4Ng0 schrieb:  Hallo, und wie gesagt wenn mir jemand sagen könnte wie ich eine Funktion in diesem Fall beispielsweise das vorwärtz fahren wofür ca. 4 Zeilen Code nötig sind zusammenfassen, oder besser gesagt diese Funktion mit einem kurzen Befehl aufrufen kann wäre mir der Übersichtlichkeit wegen schon sehr weitergeholfen.
Für weitere Strukturierungstipps die die Übersichtlichkeit des auszuführenden Codes verbessern wäre ich sehr dankbar.

MFG
J4Ng0

Hallo ... ich bin zwar ein Anfänger in sachen Robotik. aber kann es sein das du das adafruit-shield benutzt und kann es sein das die motoren 3+4 nur 1KHZ können??


For motors 1 and 2 you can choose MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, orMOTOR12_1KHZ. A high speed like 64KHz wont be audible but a low speed like 1KHz will use less power. Motors 3 & 4 are only possible to run at 1KHz and will ignore

Gruß Dirk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  kleiner Roboter blichi 24 790 27.07.2016 14:02
Letzter Beitrag: torsten_156
  Roboter-Bau Probleme blebbens 8 379 12.07.2016 07:35
Letzter Beitrag: Binatone
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 547 06.07.2016 14:59
Letzter Beitrag: Binatone
  Neo's Roboter Neoneo23 74 5.911 11.11.2015 21:18
Letzter Beitrag: Neoneo23
  SR-04 + UNO + 4WD Roboter, Abstandsfehler Marc2014 25 2.847 21.09.2014 21:42
Letzter Beitrag: Thorsten Pferdekämper

Gehe zu:


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