eindeloopschakelaar moet de positie bepalen van de dc motr

Gebaseerd op het programma van antwoord #12.

Ik zou eens beginnen met het hernoemen van wat variabelen en wat commentaar toevoegen. RELAY2 betekent niets voor ons; kijkend naar het programma en wat je beschreven hebt is het waarschijnlijk beter om dat bv. RELAY_MOTOR te noemen. Ik heb geen idee waar de andere relais voor zijn.

Voor de drie LM variabelen kun je een commentaar toevoegen in het programma dat dit de eindeloop schakelaars zijn.

Het lijkt ook dat je niet begrijpt dat je pinnen moet lezen (digitalRead()).

  if (LM1 == HIGH && LM2 == HIGH && LM3 == HIGH ); {

bevat twee fouten.

De eerste is de punt-komma aan het einde; dat geeft aan dat alles wat moet worden gedaan als de conditie waar is daar eindigt and als een resultaat dat alles tussen { en } daarachter niet afhankelijk is van de if. Hieronder is de verbeterde versie.

  if (LM1 == HIGH && LM2 == HIGH && LM3 == HIGH ) {

De tweede fout is dat je de pinnen niet leest maar dat je de pin nummers vergelijkt met HIGH (en HIGH heeft de waarde 1).

Een aangepaste versie

void loop()
{
  // read the switches
  int val1 = digitalRead(LM1);
  int val2 = digitalRead(LM2);
  int val3 = digitalRead(LM3);

  // switch the motor on
  digitalWrite(RELAY_MOTOR, LOW);
  Serial.println("RELAY_MOTOR ON");

  // check if we are in the first position  
  if (val1 == HIGH && val2 == HIGH && val3 == HIGH)
  {
    // action if we are in first position
    delay(delayvalue);
    digitalWrite(RELAY_MOTOR, HIGH);
    Serial.println("RELAY_MOTOR OFF");
    delay(delayvalue);
  }
}

Nu is dit niet echt grandioos als je een programmeer opleiding doet maar als programmeren geen deel uitmaakt van je opleiding is het een begin.

Kun je uitleggen waarom je een vertraging hebt ingebouwd van 5 seconden?