Hi,
ich steh da im Moment ein wenig an mit folgendem Problem:
Ich hab nen Sketch für einen einfachen Antrieb eines Roboters erstellt.
Vorerst hatte ich einen Ultraschallsensor verwendet um den Bot anhalten und ausweichen zu lassen.
Hat soweit geklappt, ausser dass der Sensor sehr schlecht im Raum reagiert hatte.
Also hab ich das Teil auf einen Infrarotsensor umgemodelt der jetzt eine Spannung 0,6 - 3 V ausgibt.
Lt. meinem sketch soll der fahren sofern die Spannung unter 1 Volt ( digital etwa 200 beim Arduino )
liegt, und bei einer Spannung größer 1 Volt erst mal anhalten. Ich nutze dazu den Analogeingang A0.
Den Sensor hab ich getestet - der gibt sauber Spannung aus - aber das Teil fährt und fährt und reagiert nicht auf den Analogeingang.
Ich hab schon direkt die 3,3 V vom Arduino auch drauf gelegt auf den Eingang aber er reagiert einfach nicht.
Hab ich da einen Fehler im sketch ? oder sonst wo einen Denkfehler ?
Hier mein sketch:
int m1Pin = 2;
int m2Pin = 3;
int m3Pin = 5;
int m4Pin = 6;
int analogPin = A0;
int dist, distl, distr;
#include <Servo.h>
Servo servoH;
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
servoH.attach(8);
}
void loop()
{
servoH.write(92);
infra();
if ( dist <= 200 )
{
vor();
servoH.write(92);
delay(10);
}
else if ( dist > 200 )
{
halt();
delay(200);
servoH.write(136);
infral();
delay(200);
servoH.write(48);
infrar();
delay(200);
servoH.write(92);
if ( distl >= distr )
{
linksturn();
}
else if ( distr > distl )
{
rechtsturn();
}
}
}
void linksturn()
{
linksruck();
rechtsvor();
delay(300);
}
void rechtsturn()
{
linksvor();
rechtsruck();
delay(300);
}
void vor()
{
linksvor();
rechtsvor();
}
void ruck()
{
linksruck();
rechtsruck();
}
void linksvor()
{
digitalWrite(m1Pin,HIGH); // links vorwärts
digitalWrite(m2Pin,LOW); // links vorwärts
}
void rechtsvor()
{
digitalWrite(m3Pin,HIGH); // rechts vorwärts
digitalWrite(m4Pin,LOW); // rechts vorwärts
}
void linksruck()
{
digitalWrite(m1Pin,LOW); // links rückwärts
digitalWrite(m2Pin,HIGH); // links rückwärts
}
void rechtsruck()
{
digitalWrite(m3Pin,LOW); // rechts rückwärts
digitalWrite(m4Pin,HIGH); // rechts rückwärts
}
void halt()
{
digitalWrite(m1Pin,LOW); // stop
digitalWrite(m2Pin,LOW); // stop
digitalWrite(m3Pin,LOW); // stop
digitalWrite(m4Pin,LOW); // stop
}
void infra()
{
int dist(analogRead(analogPin));
}
void infral()
{
int distl(analogRead(analogPin));
}
void infrar()
{
int distr(analogRead(analogPin));
}
[EDIT] Code Tags Hinzgefügt. Grüße Uwe[/EDIT]