Hilfe bei code!- (Inzwichen Gelöst)

int zeit1 = 0;
int zeitsolange = 1000;
void Unterprogramm1();

void Unterprogramm2();


void setup() {
  pinMode( 2 , INPUT);
  pinMode( 5 , OUTPUT);
  pinMode( 6 , OUTPUT);
  pinMode( 7 , OUTPUT);
  zeit1 = 0;

  zeitsolange = 1000;

}

void loop() {
 zeitsolange = millis();
      Unterprogramm1();
      Unterprogramm2();
    }
zeit1 = ( zeit1 + 1 );
  while ( ( zeit1 == 5 ) )   
      zeit1 = 1;
  
}

//Dies ist Unterprogramm1
void Unterprogramm1() {
  if (( digitalRead(2) && ( ( zeit1 == 2 ) || ( zeit1 == 4 ) ) )) {
      tone(3, 800, 1000);
      for (int i = 0; i < 5; i++){
        digitalWrite( 6 , HIGH );
        delay( 100 );
        digitalWrite( 6 , LOW );
        delay( 100 );
      }
      zeitsolange = ( zeitsolange - 50 );
      if (( zeit1 == 0 )) {
          zeitsolange = 1000;
          for (int i = 0; i < 25; i++){
            digitalWrite( 6 , HIGH );
            delay( 100 );
            digitalWrite( 6 , LOW );
            delay( 100 );
          }
        }
    }
  if (( digitalRead(2) && ( ( zeit1 == 1 ) || ( zeit1 == 3 ) ) )) {
      tone(3, 800, 1000);
      for (int i = 0; i < 10; i++){
        digitalWrite( 5 , HIGH );
        digitalWrite( 7 , HIGH );
        delay( 100 );
        digitalWrite( 5 , LOW );
        digitalWrite( 7 , LOW );
        delay( 100 );
      }
      zeitsolange = 1000;
    }
}

//Dies ist Unterprogramm2
void Unterprogramm2() {
  if (( zeit1 == 1 )) {
      digitalWrite( 5 , HIGH );
      digitalWrite( 6 , LOW );
      digitalWrite( 7 , LOW );
    }
  if (( zeit1 == 2 )) {
      digitalWrite( 5 , LOW );
      digitalWrite( 6 , HIGH );
      digitalWrite( 7 , LOW );
    }
  if (( zeit1 == 3 )) {
      digitalWrite( 5 , LOW );
      digitalWrite( 6 , LOW );
      digitalWrite( 7 , HIGH );
    }
  if (( zeit1 == 4 )) {
      digitalWrite( 5 , LOW );
      digitalWrite( 6 , HIGH );
      digitalWrite( 7 , LOW );
    }
}

in diesen fehler sagt mir das programm das ich ein nicht vorhanden befehl benutze namens zeit1. bei zeit 1 handelt es sich aber bei einer variable. kann mir bitte wer hier helfen ich sitze hier dran schon 5 stunden und muss es morgen fertig abgeben. danke im vorhinaus

der fehler is hier bei angeblich bei der 5 ten zeile bei void loop

eine Zeile vor der Verwendung der Variable schließt du die funktion loop() schon wieder ab.

das

zeit1 = ( zeit1 + 1 );

steht somit wieder "außerhalb" im globalen Scope - was so nicht funktioniert.

Drück mal STRG-T in der IDE - dann wird der Sketch formatiert und du siehst deinen Klammer-Fehler

1 Like

Da ist hinter dem Aufruf Unterprogramm2(); eine schließende Klammer zu viel.
Damit rutscht Deine Zuweisung an zeit1 nach außerhalb der loop()-Funktion.

Nimm die weg und es kompiliert!

STRG-T zum Auto-Formatieren wirkt manchmal Wunder.

Oops - ich war zu langsam, bitte um Entschuldigung.

1 Like

WOW danke es funktioniert ich weiß nicht wie ich euch danken könnte :DDDDDDDDDDDDDD

Ich freu mich so sehr wie ein kind was für eine nicht gelernte arbeit ne 1 bekommt. nur das es hier nicht der fall ist :smiley:

Ich hätte da eine Idee: Mach diesen Fehler einfach nicht nochmal :wink:

1 Like

das ist ne super idee und werde ich mir gleich in notizen aufschreiben

ich danke euch beiden von herzen und wünche euch noch ne schöne nacht/tag was auch immer

muss ich den beitrag löchen oder kann ich den stehen lassen?

ist meine erste frage hier deswegen kenne ich mich noch nicht so gut aus

Ja, mit falschen Klammern kann man sich viele Fallstricke legen. Und sie sind oft bischen schwer zu finden.

1 Like

stehen lassen.
EINE Antwort als Lösung markieren (gespeichert wird immer die letzte Markierung ... )
Antworten die geholfen haben liken.

1 Like

Kein Problem. Jeder hier hat mal mit einer ersten Frage angefangen.

Ehre wem Ehre gebührt:
Bitte markiere Beitrag #3 als Lösung, nicht meinen - denn der enthält schon den entscheidenden Hinweis und war früher.

2 Likes

ok danke Leute. noiasca hier mit bist du nun meine erste lösung in Arduino forum :smiley:

Ja, wenn man nicht zählen kann, oder nicht mit der Maus drauf zeigt(dann, nämlich hilft einem die IDE)
Auch der Allmann Formatierstil kann helfen.
Oder überhaupt Autoformat

1 Like

Wenn du noch mehr lernen willst, schau dir an, was das while bewirkt, und lass dir gesagt sein, dass es auch ein if gibt.
Generell ist ein if besser als ein while. (warum ?)
In deinem Fall ist es wurscht.

1 Like

Hmm...
Ich vermute, dass in der Frage mehr Gehalt wohnt, als in den möglichen Antworten.

1 Like