Boolean funktioniert nicht?!

Hi leute, wenn ich folgenden Code auf den Uno lade, leuchtet die Onboard-LED. Warum?
Sie sollte eigentlich nur leuchten wenn aktiviert = true..., dabei habe ich akttiviert doch auf false gesetzt...
hier der Sketch:

boolean  aktiviert = false;

void setup() {

 pinMode(13, OUTPUT);

}


void loop() {
 if (aktiviert = true){ 
 digitalWrite(13, HIGH); 
} else {
  digitalWrite (13, LOW);
}

aktiviert = true;

}

Bitte verzeiht mir falsche Ausdrucksweisen o.ä. ist mein erstes Projekt...

LG und Danke
Knoerpsi

  if (aktiviert = true)

= ist eine Zuweisung
== ist ein Vergleich

Zuweisungen geben ihren Wert zurück, weshalb das compiliert. Für sowas gibt es auch Anwendungen. Aber hier ist es falsch.

Aktiviere die Warnungen in den Einstellungen! Dann bekommst du eine Meldung dass da wahrscheinlich etwas nicht stimmt

aber abgesehen von der Zuweisung wir beim 2. Loopdurchlauf aktiviert auf true gesetzt

Hallo,

mach dir nichts daraus. Sind Anfängerfehler. Bin wegen sowas auch schon blöde gewurden. Die Kleinigkeiten im Syntax. :slight_smile:

Wenn du das korrigierst, wird die LED aber auch sofort dauernd leuchten. Weil nur im ersten Durchlauf (also wenige mikrosekunden) bleibt sie aus. Das sieht man mit dem Auge gar nicht.

Mach mal testweise ein böses delay rein:

void loop() {
  if (aktiviert = true){ 
  digitalWrite(13, HIGH); 
 } else {
   digitalWrite (13, LOW);
 }
delay(2000);
 
 aktiviert = true;

Mach mal ein Test-Delay rein (das ist nicht böse) und korrigiere das if
Kannnst auch anzeigen, wann setup() läuft:

void setup() {
   pinMode(13, OUTPUT);
   digitalWrite (13, HIGH); // Startkennung: 0.1 an
   delay(100);
   digitalWrite (13, LOW);  
   delay(100);
   digitalWrite (13, HIGH); // nur wenige µs lang :   sollte nicht zu sehen sein
}

boolean aktiviert;

void loop() {
  if (aktiviert == true){
    digitalWrite(13, HIGH);
  } else {
    digitalWrite (13, LOW);
  }
 delay(2000);
 
 aktiviert = true;
}

Nach dem setup blip( 0.1 sec ) bleibt die LED 2.1 s aus, dann wird aktiviert true und die LED bleibt bis zum nächsten Reset an.

Danke für eure Hilfe!!!