Analog Eingang liest nicht ?

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]

Questions in German are more likely to be understood in the Deutsch section of the forum.

Google Translate isn't really helping.

Scheint jemand den Tread in die Deutsche Sektion verschoben zu haben.

@Hupsi

void infra()
{
  int dist(analogRead(analogPin));
}

Variablen die innerhalb einer Funktion definiert werden gibt es außerhalb der Funktion oder in einer anderen Funktion nicht oder falls eine Variable mit gleichen Namen existiert ist sie nicht die gleiche Variable.
In diesem Fall ist dist in loop() nicht die Variable dist der Funktion infra.
(abgesehen vom vorhandenen Sytaxfehler)

Lösung:
entweder:

void infra()
{
  dist=(analogRead(analogPin));
}

oder

void loop()
{
  servoH.write(92); 
  dist = infra();
...}

int infra()
{
  return(analogRead(analogPin));
}

Grüße Uwe

Ja - so lernt man was.

Herzlichen Dank UWE - nun fährt er rum wie er soll :wink:

Schönen Tag noch und LG aus Österreich

btw: Wie kann ich Beiträge gleich im deutschen Forum posten ?
Ich hab da nix gefunden gestern.

btw: Wie kann ich Beiträge gleich im deutschen Forum posten ?
Ich hab da nix gefunden gestern.

http://arduino.cc/forum/index.php/board,31.0.html

Merci.