Schleife setzt sich nicht zurück im Arduino Sketch

OP #6398448
Lesenswert?

#include <Servo.h>
Servo servoblau;

// Sensorwerte sind nur durch die blöde Bauweise der LDRs nicht ganz 
optimal

int SensorR;
int SensorL;

int valR;
int valL;

int PAUSE;

#define LED 5


void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(5, OUTPUT);
  servoblau.attach(9);
  servoblau.write(90);
}

void loop() {
  // put your main code here, to run repeatedly:
SensorR = analogRead(0);
SensorL = analogRead(1);


  if(SensorR < 210 )
  {
    SensorR= map(valR, 210, 180, 90, 70);
    servoblau.write(valR);
  }

  if(SensorL < 220)
  {
    SensorL = map(valL, 220, 180,90, 110);
    servoblau.write(valL);
  }


else
{
  servoblau.write(90);
}


delay(100);

Serial.print("RechterSensorWert" );
Serial.println(SensorR);

Serial.print("LinkerSensorWert" );
Serial.println(SensorL);


  while (analogRead(1) && analogRead(0))
  {
  digitalWrite(LED,HIGH);
  }


}
Gast #6398488
Lesenswert?

Achim M. schrieb:
> Was funktioniert denn nicht?

Ich denke in diesem kleinen Stück Code funktioniert ausser der 
Initialisierung gar nichts.

Jonathan W. schrieb:

> void loop() {
>   // put your main code here, to run repeatedly:
> SensorR = analogRead(0);
> SensorL = analogRead(1);
>
>
>   if(SensorR < 210 )
>   {
>     SensorR= map(valR, 210, 180, 90, 70);
      ^^^^^^^^^^^^^^^^^^ Hier sind 'SensorR' und 'valR' vertauscht!!
>     servoblau.write(valR);
>   }

Der oben stehende Code hat keinerlei Effekt, da das Servo sofort wieder 
durch die unten stehenden if-else Anweisung überschrieben wird.
>
>   if(SensorL < 220)
>   {
>     SensorL = map(valL, 220, 180,90, 110);
Hier ebenso vertauscht.
>     servoblau.write(valL);
>   }
> else
> {
>   servoblau.write(90);
> }
>
>
> delay(100);
>
> Serial.print("RechterSensorWert" );
> Serial.println(SensorR);
>
> Serial.print("LinkerSensorWert" );
> Serial.println(SensorL);
>
>
>   while (analogRead(1) && analogRead(0))
>   {
>   digitalWrite(LED,HIGH);
>   }

Diese Schleife wird nicht mehr verlassen, sobald Read(1) und Read(0) 
Werte ungleich 0 zurück liefern.
Gast #6398721
Lesenswert?

Jonathan W. schrieb:
> und im Seriell-Monitor gibt es nur einen Wert

Dann fügt man an mehreren Stellen ein
Serial.print(" Zeile 42 erreicht ");
ein und schaut, wie weit das Programm kommt.

Oftmal sind es billige Fehler wie "=" anstatt "==" oder Abfragen, die 
niemals zutreffen.

Immer wieder toll, wie hilflos die Arduinos zu Werke gehen :-(
Gast #6398731
Lesenswert?

Manfred schrieb:
> ann fügt man an mehreren Stellen ein
> Serial.print(" Zeile 42 erreicht ");

oder alternativ immer den WERT. Und ein Text dazu . Dann weiß man wo / 
was welchen Wert hat. Das ist debugging für Anfänger.  Ohne so was würde 
ich kein sauberen Code hin bekommen. **mich schämen**

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren