Hi@all,
ich habe ein kleines Problem mit zwei gehackten Servos. Na ja, eigentlich bin ich galube ich nur zu dumm...
Dezeit arbeite ich an meinem fl-alphaBot. Bilder werden folgen...
Ich habe zwei Servos, die als Antrieb fungieren sollen. Leider laufen beide in die entgegengesetzte Richtung. Ist an sich ja auch klar, denn beide bekommen die selben Befehle. Würde man sie übereinander anordnen, wäre alles gut. Aber dann wären sie kein Antrieb mehr.
Mein Code ist auch recht simpel... (siehe unten)
Leider drehen beide Servos niemals in die selbe Richtung.
Was mache ich falsch?
Ich habe überlegt, den Motor von einem Servo "umzudrehen". (Laienhaft...;-) )
Wie kann ich dies programmiertechnisch lösen?
Hier der Code:
#include <Servo.h>
Servo links;
Servo rechts;
//int forward;
//int backward;
int hindernis_l = 0;
int hindernis_r = 0;
const int us = 8;
int ir_l = 5;
int ir_r = 4;
int pos;
void setup()
{
links.attach(9);
rechts.attach(10);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
void forward_l()
{
int pos_l;
for(pos_l = 0; pos_l < 180; pos_l +=1)
{
links.write(pos_l);
}
}
void forward_r()
{
int pos_r;
for(pos_r = 180; pos_r >= 1; pos_r -=1)
{
rechts.write(pos_r);
}
}
void loop()
{
// Ultraschall-Erkennung
long duration, cm;
pinMode(us, OUTPUT);
digitalWrite(us, LOW);
delayMicroseconds(2);
digitalWrite(us, HIGH);
delayMicroseconds(5);
digitalWrite(us, LOW);
pinMode(us, INPUT);
duration = pulseIn(us, HIGH);
cm = microsecondsToCentimeters(duration);
// US-Ende
// IR-Erkennung
hindernis_r = analogRead(ir_r);
hindernis_l = analogRead(ir_l);
while(cm >= 80 && hindernis_r <= 150 && hindernis_l <= 150)
{
forward_l;
forward_r;
}
}
Ich weiß, es sind einige Prozeduren enthalten, die augenblicklich keinen Sinn ergeben. (Ultraschall und IR) Das kommt aber noch... Erstmal das Servo-Problem lösen.
Bitte um Hilfe...
Danke
topgunfb