Signalverzögerung

Hallo Gemeinde,

für meine Kamerasteuerung benötige ich eine Verzögerung eines Sensorsignals. Dazu habe ich einen Sketch geschrieben, der aber leider nur die eingestellte Verzögerung ausließt, dann aber nach Erhalt des Sensorsignals nicht weiterarbeitet.

Ich habe im beigefügten Code verdeutlicht, ab wo offensichtlich das Problem besteht. Ich vermute, dass der Wert signalDelay nicht übernommen wird, aber warum?

Danke für eure Hilfe

Bernhard

int x = 0;
int z = 0;
int y = 0;
int signalDelay = 0;
int TRIGGER = 5;
int LED = 13;

int trigger = HIGH;





void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  
  pinMode(LED, OUTPUT);
  pinMode(TRIGGER, INPUT_PULLUP);
}

// the loop routine runs over and over again forever:
void loop() {{
  // read the input on analog pin 0:
  int sensorValue1 = analogRead(A2);
  int sensorValue10 = analogRead(A1);
  int sensorValue100 = analogRead(A0);
  int signalDelay = (z + y + x);
  Serial.println (signalDelay);
  
  // print out the value you read:
  //Serial.println(sensorValue);
  //delay(1);        // delay in between reads for stability

//Einerstellen
if (sensorValue1<50)
{ (x = 0); 
}

else if (sensorValue1<150)
{ (x = 1);
}

else if (sensorValue1<230)
{ (x = 2);
}
.
.
.
.
.
.
else if (sensorValue100<495)
{ (z = 700);
}

else if (sensorValue100<525)
{ (z = 800);
}

else if (sensorValue100<560)
{ (z = 900);
}

//[b]-------------------bis hierher funktionierts----------------[/b]


  digitalRead(signalDelay);
  digitalRead(TRIGGER);
 
 
 if (TRIGGER = LOW) 

{
digitalWrite(LED,HIGH);
delay(signalDelay); 
digitalWrite(LED,LOW);
}

}}
 digitalRead(signalDelay);

//.....
delay(signalDelay);

Was soll das tun?

Was willst Du hier von welchem Pin lesen?

digitalRead(signalDelay);
digitalRead(TRIGGER);

vom Pin signalDelay was lesen ist Blödsinn.
Außerdem mußt Du die Funktion richtig benutzen:

Variable = digitalRead(Pin);

mit

digitalRead(TRIGGER); 
 if (TRIGGER = LOW)

kontrollierst Du nicht den Zustand des Pins sondern dessen Nummer.

Grüße Uwe

Ob das eine gute Idee ist, weiß ich nicht:

int TRIGGER = 5;
...
int trigger = HIGH;

Keine Ahnung was der Compiler daraus macht.
Ob der Groß-/Kleinschreibung korrekt unterscheidet?
Eventuell auch die Variablen ein wenig aussagekräftiger machen. Also z.B. der Pin für den
Trigger einfach TriggerPin oder Pin_Trigger nennen. Macht die Sache auch ein wenig leichter.

Bitte einen Schaltplan hier einstellen oder wenigstens eine Liste zusammenschreiben, auf der
die einzelnen Anschlüsse des Arduino drin stehen und was daran angeschlossen ist.
Ich weiß z.B. nicht ob da jetzt ein Potentiometer dran hängt für die Einstellung der Verzögerungszeit
und ob das einfach nur falsch eingelesen wird.

Eine Beschreibung wie das ganze ablaufen soll, wäre auch hilfreich.

Gruß, Jürgen

So weit ich weiß unterscheidet der Compiler tatsächlich zwischen Groß- und Kleinschreibung bei Variablen (und wohl auch bei Funktionen). Das ist aber m.E. höchst Fehler anfällig in Bezug auf Lesbarkeit des Programmes und man baut sich selbst mehr als eine böse Falle...

bastler3:
if (TRIGGER = LOW)

Da fehlt was. :wink:

Gruß Chris

Ja, der Compiler unterscheidet immer sehr genau zwischen Groß- und Kleinschreibung sodass zum Beispiel folgendes völlig unterschiedliche Variablen sind:

int TRIGGER;
int Trigger;
int trigger;
int TriGGer;
int TriggeR;