Hallo, wieder ein Neuling am Start

Hallo, habe mir nach Anleitung schon mal ein gegenläufiges Lauflicht zusammen gebastelt und funktioniert soweit. Nun müsste ich das per Taster starten lassen können und nach einer definierbaren Zeit soll es wieder aufhören.

Weiterhin möchte ich 3 weitere LED betreiben z.B. das Verkehrsampel-Script welches gleichzeitig mit dem Lauflicht ablaufen soll.

Zur Erklärung, soll eine Beleuchtung für eine Modellbühne im Maßstab 1:50 werden, wie immer muss es gestern fertig sein. (diesen Sonntag)

Habe hier einen Arduino Nano und 2x 5 LEDs an 330 Ohm Widerständen und nochmal 3 LEDs auch an 330 Ohm Widerständen.

Die 2x LEDs bilden das Lauflicht mit Pin 3 - 7
Den Taster habe ich an Pin 12 (wo muss das andere Kabel vom Taster hin, Widerstand o.ä.)

Die 3 noch zu aktivierenden LEDs sind an Pin 9 - 11

könnte mir bitte einer helfen meinen Scriptcode entsprechend zu erweitern?!

int ledPins[8] = { 3, 4, 5, 6, 7, };
//definiert die Anzahl der LEDs und die benutzten Pins auf dem Arduino
const int buttonPin = 12; // Taster an Pin 12
void setup() 
{
 pinMode(buttonPin, INPUT);  // Taster als Eingang
 for (int i = 0; i < 5; i++) 
 {
   pinMode (ledPins [i], OUTPUT); }

}

// Variablen
int buttonState = 0; // Speichert den Zustand des Tasters

void loop() {
  // Tasterzustand lesen
 digitalRead(buttonPin);
 for (int i = 0; i < 5; i++) {
   digitalWrite(ledPins[i], HIGH);
   delay(200); //Wartezeit An
   digitalWrite(ledPins[i], LOW); }
 for (int i = 4; i > 0; i--) {
   digitalWrite(ledPins[i], HIGH);
   delay(200); //Wartezeit Aus
   digitalWrite(ledPins[i], LOW); }
 
}

Das, was Du suchst ist eine State-Machine.

Was ich bisher verstanden habe: Der Taster soll auslösen.
Soweit klar.
Du hast zwei Ketten. Sollen die nacheinander oder gleichzeitig laufen?

Zusatzfragen:
Soll der Taster dann gesperrt sein, wenn der Ablauf aktiv ist?
Soll das nur einmal anlaufen, oder nach dem Tastendruck dauerhaft?

ich vergaß das ich mit einem Pin z.B. PIN 8 noch ein Relais ansteuern muss, damit sich das Riesenrad dreht bis die vordefinierte Zeit abgelaufen ist.

Laufen soll es gleichzeitig, also das Lauflicht als Bühnenbeleuchtung und die 3 weiteren LED mit dem Ampelscript sollen Lasershow imitieren und und das Relais angezogen bleiben um das Riesenrad zu bewegen, alles gleichzeitig

Nach Tastendruck soll es einmal solange ablaufen wie es definiert wir, z.B. 5 Min.
In der Zeit Taster blockieren kling gut, erst wenn Durchlauf beendet ist wieder frei geben.

Ein Schaltplan wäre ganz praktisch.

Außerdem möchtest du dich in nicht blockierende Programmierung einlesen.
z.B. kannst du "Blink without delay" aus den Beispielen ansehen.
Statemachines gehören da auch auf die Liste.

Mit pinMode(..., INPUT_PULLUP) geht der andere Pin an GND.

Na mal sehen, bis zum Ende des Spiels wird das nicht dauern.
Such Dir schon mal Kabel fürs Steckbrett. :grin:

Ich hab einfach mal was gebastelt.
WICHTIG!
Dein TASTER muss mit einem Kontakt an den PIN 12 und mit einem Kontakt an GND.

Dann sollte erstmal Dein Blinklicht nach dem drücken 10 Sekunden laufen....

constexpr uint8_t llPins {5};
constexpr uint8_t lauflicht[llPins] { 3, 4, 5, 6, 7, };
uint8_t lastllPin;

constexpr uint8_t blPins {3};
constexpr uint8_t blinklicht[blPins] {9, 10, 11,};
uint8_t lastblPin;

constexpr uint32_t toggleTime {200};

constexpr uint8_t buttonPin {12};

constexpr uint32_t laufzeit {10000}; // Zeit in Millisekunden
constexpr bool AUS {LOW};
constexpr bool EIN {!AUS};

uint8_t state;
uint32_t startTime;
uint32_t lastSwitch;
void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode(buttonPin, INPUT_PULLUP);  // Taster als Eingang

  for (uint8_t b = 0; b < llPins; b++)
  {
    pinMode (lauflicht[b], OUTPUT);
    digitalWrite(lauflicht[b], AUS);
  }

  for (uint8_t b = 0; b < blPins; b++)
  {
    pinMode (blinklicht[b], OUTPUT);
    digitalWrite(blinklicht[b], AUS);
  }
}

void loop()
{
  switch (state)
  {
    case 0:
      if (!digitalRead(buttonPin))
      {
        startTime = millis();
        state++;
      }

      break;

    case 1:
      toggleNext();

      if (millis() - startTime > laufzeit)
      {
        state++;
      }

      break;

    case 2:
      allOff();

      if (digitalRead(buttonPin))
      {
        state = 0;
      }

      break;

    default:
      state = 0;
      break;
  }
}

void toggleNext()
{
  if (millis() - lastSwitch > toggleTime)
  {
    llOFF();
    digitalWrite(lauflicht[lastllPin++], EIN);

    if (lastllPin >= llPins)
    { lastllPin = 0; }

    blOFF();
    digitalWrite(blinklicht[lastblPin++], EIN);

    if (lastblPin >= blPins)
    { lastblPin = 0; }

    lastSwitch = millis();
  }
}

void allOff()
{
  llOFF();
  blOFF();
}

void llOFF()
{
  for (uint8_t b = 0; b < llPins; b++)
  {
    digitalWrite(lauflicht[b], AUS);
  }
}

void blOFF()
{
  for (uint8_t b = 0; b < blPins; b++)
  {
    digitalWrite(blinklicht[b], AUS);
  }
}

Wenn etwas nicht geht, musst Du es beschreiben. So genau wie möglich.

Super, das Lauflicht lässt sich nun per Taster starten und läuft ein Weilchen, das Blinklicht geh nur wenn ich den Taster gedrückt halte.

Nun noch das Relais auf PIN8 anziehen lassen für die Dauer des Ablaufs

Das sind die Pins 3 bis 7.

Das sind die Pins 9 bis 11 und müssen OHNE gedrückte Taste mitlaufen.

Relais ist hier mit bei.

constexpr uint8_t llPins {5};
constexpr uint8_t lauflicht[llPins] { 3, 4, 5, 6, 7, };
uint8_t lastllPin;

constexpr uint8_t blPins {3};
constexpr uint8_t blinklicht[blPins] {9, 10, 11,};
uint8_t lastblPin;

constexpr uint32_t toggleTime {200};

constexpr uint8_t buttonPin {12};

constexpr uint32_t laufzeit {10000}; // Zeit in Millisekunden
constexpr bool AUS {LOW};
constexpr bool EIN {!AUS};

constexpr uint8_t relaisPin {8};
constexpr bool relaisOFF {HIGH};

uint8_t state;
uint32_t startTime;
uint32_t lastSwitch;
void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode(buttonPin, INPUT_PULLUP);  // Taster als Eingang

  for (uint8_t b = 0; b < llPins; b++)
  {
    pinMode (lauflicht[b], OUTPUT);
    digitalWrite(lauflicht[b], AUS);
  }

  for (uint8_t b = 0; b < blPins; b++)
  {
    pinMode (blinklicht[b], OUTPUT);
    digitalWrite(blinklicht[b], AUS);
  }

  pinMode(relaisPin, OUTPUT);
  digitalWrite(relaisPin, relaisOFF);
}

void loop()
{
  switch (state)
  {
    case 0:
      if (!digitalRead(buttonPin))
      {
        startTime = millis();
        toggleRelais();
        state++;
      }

      break;

    case 1:
      toggleNext();

      if (millis() - startTime > laufzeit)
      {
        state++;
      }

      break;

    case 2:
      allOff();

      if (digitalRead(buttonPin))
      {
        state = 0;
      }

      break;

    default:
      state = 0;
      break;
  }
}

void toggleNext()
{
  if (millis() - lastSwitch > toggleTime)
  {
    llOFF();
    digitalWrite(lauflicht[lastllPin++], EIN);

    if (lastllPin >= llPins)
    { lastllPin = 0; }

    blOFF();
    digitalWrite(blinklicht[lastblPin++], EIN);

    if (lastblPin >= blPins)
    { lastblPin = 0; }

    lastSwitch = millis();
  }
}

void allOff()
{
  llOFF();
  blOFF();
  digitalWrite(relaisPin, relaisOFF);
}

void llOFF()
{
  for (uint8_t b = 0; b < llPins; b++)
  {
    digitalWrite(lauflicht[b], AUS);
  }
}

void blOFF()
{
  for (uint8_t b = 0; b < blPins; b++)
  {
    digitalWrite(blinklicht[b], AUS);
  }
}

void toggleRelais()
{
  digitalWrite(relaisPin, !digitalRead(relaisPin));
}

Guten Morgen,

erstmal vielen Dank für die bisherige unkomplizierte Hilfe, so hätte ich es niemals zusammen gebraucht, wäre wohl auf 3 Nano´s hinaus gelaufen.

Nun aber zum Fehlerbild.

Lauflicht wie gesagt wunderbar, Blinklicht nur wenn ich den Taster gedrückt halte mit 4k Prellwiderstand (10k habe ich gerade nicht, besorge ich heute)

Lasse ich den Prellwiderstand weg, geht das Blinklicht auch bei gedrückt gehaltenem Taster nicht mehr, das Lauflicht jedoch schon. Auch ein Anziehen vom Relais ist nicht zu hören / spüren.

Ich beschreibe mal den betreffenden Aufbau auf dem Steckboard:

Pin 12 auf Taster -> Taster auf GND -> Prellwiderstand auf GND

Pin 8 auf IN1 Relais
GND auf GND Relais
5V auf VCC Relais

Sollte es nur an dem Prellwiderstand liegen der statt vorgeschlagenen 10 kOhm nur 4 kOhm hat???

Wäre es möglich die Zeiten der 3 LED vom Blinklicht unterschiedlich einstellen zu können, das es nicht so Statisch aussieht? Deshalb hatte ich zu Beginn an das Ampelscript gedacht.

Hier 2 Fotos vom Aufbau


Zeichne mall das, was ist Prellwiderstand? Wahrscheinlich soll das Pull down sein. Gegen Prellen hilft ein kleines delay.
Ist das o geklemmt

Mach mal bitte ein Foto vom kompletten(!) Aufbau, damit man alles sieht.
Bitte nicht schräg sondern von oben.

Alles ist möglich.

so wie fony gezeichnet habe ich den Taster auch angeschlossen.

Muss dann erstmal etwas malochen gehen und 10k Widerstand besorgen, vielleicht liegt es ja daran da sich nur einen 4k dran habe.

Der Widerstand muss da raus!
Ich hab doch geschrieben, wie der Taster ran muss.

Mal sehen ob ich da sonst noch was erkenne.

Wenn Du wieder da bist und den Widerstand raus hast, dann:

constexpr uint8_t llPins {5};
constexpr uint8_t lauflicht[llPins] { 3, 4, 5, 6, 7, };
uint8_t lastllPin;

constexpr uint8_t blPins {3};
constexpr uint8_t blinklicht[blPins] {9, 10, 11,};
uint8_t lastblPin;

constexpr uint32_t toggleTime {200};

constexpr uint8_t buttonPin {12};

constexpr uint32_t laufzeit {10000}; // Zeit in Millisekunden
constexpr bool AUS {LOW};
constexpr bool EIN {!AUS};

constexpr uint8_t relaisPin {8};
constexpr bool relaisOFF {HIGH};

uint8_t state;
uint32_t startTime;
uint32_t lastSwitch;
void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode(buttonPin, INPUT_PULLUP);  // Taster als Eingang

  for (uint8_t b = 0; b < llPins; b++)
  {
    pinMode (lauflicht[b], OUTPUT);
    digitalWrite(lauflicht[b], AUS);
  }

  for (uint8_t b = 0; b < blPins; b++)
  {
    pinMode (blinklicht[b], OUTPUT);
    digitalWrite(blinklicht[b], AUS);
  }

  pinMode(relaisPin, OUTPUT);
  digitalWrite(relaisPin, relaisOFF);
}

void loop()
{
  switch (state)
  {
    case 0:
      if (!digitalRead(buttonPin))
      {
        startTime = millis();
        toggleRelais();
        state++;
      }

      break;

    case 1:
      blinkLicht();
      laufLicht();

      if (millis() - startTime > laufzeit)
      {
        state++;
      }

      break;

    case 2:
      allOff();

      if (digitalRead(buttonPin))
      {
        state = 0;
      }

      break;

    default:
      state = 0;
      break;
  }
}

void laufLicht()
{
  if (millis() - lastSwitch > toggleTime)
  {
    llOFF();
    digitalWrite(lauflicht[lastllPin++], EIN);

    if (lastllPin >= llPins)
    { lastllPin = 0; }

    lastSwitch = millis();
  }
}

void blinkLicht()
{
  static uint8_t blinkState = 0;
  bool isNew = true;
  static uint32_t myTime = 0;

  for (uint8_t b = 0; b < blPins; b++)
  {
    if (digitalRead(blinklicht[b]))
    { isNew = false; }
  }

  if (isNew)
  {
    blinkState = 0;
  }

  switch (blinkState)
  {
    case 0:
      digitalWrite(blinklicht[0], HIGH);
      myTime = millis();
      blinkState++;
      break;

    case 1:
      if (millis() - myTime > 500)
      {
        blOFF();
        digitalWrite(blinklicht[1], HIGH);
        myTime = millis();
        blinkState++;
      }

      break;

    case 2:
      if (millis() - myTime > 800)
      {
        blOFF();
        digitalWrite(blinklicht[2], HIGH);
        myTime = millis();
        blinkState++;
      }

      break;

    case 3:
      if (millis() - myTime > 300)
      {
        blOFF();
        blinkState = 0;
      }

      break;

    default:
      blinkState = 0;
      break;
  }
}

void allOff()
{
  llOFF();
  blOFF();
  digitalWrite(relaisPin, relaisOFF);
}

void llOFF()
{
  for (uint8_t b = 0; b < llPins; b++)
  {
    digitalWrite(lauflicht[b], AUS);
  }
}

void blOFF()
{
  for (uint8_t b = 0; b < blPins; b++)
  {
    digitalWrite(blinklicht[b], AUS);
  }
}

void toggleRelais()
{
  digitalWrite(relaisPin, !digitalRead(relaisPin));
}

So wieder zu Hause, Widerstand ist raus und Script hochgeladen, leider ohne Änderung. Das Lauflicht funktioniert tadellos, der Rest nicht :frowning:

Relais ist dieses hier

2-Relais Modul 5V mit Optokoppler Low-Level-Trigger kompatibel mit Arduino und Raspberry Pi

Ich hab Dir mal eingefügt, das Du aus was angezeigt bekommst.

Bitte stelle Deinen Seriellen Monitor unten rechts so ein, wie im setup mit 115200.

constexpr uint8_t llPins {5};
constexpr uint8_t lauflicht[llPins] { 3, 4, 5, 6, 7, };
uint8_t lastllPin;

constexpr uint8_t blPins {3};
constexpr uint8_t blinklicht[blPins] {9, 10, 11,};
uint8_t lastblPin;

constexpr uint32_t toggleTime {200};

constexpr uint8_t buttonPin {12};

constexpr uint32_t laufzeit {10000}; // Zeit in Millisekunden
constexpr bool AUS {LOW};
constexpr bool EIN {!AUS};

constexpr uint8_t relaisPin {8};
constexpr bool relaisOFF {HIGH};

uint8_t state;
uint32_t startTime;
uint32_t lastSwitch;

uint8_t debugState = 255;

void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  pinMode(buttonPin, INPUT_PULLUP);  // Taster als Eingang

  for (uint8_t b = 0; b < llPins; b++)
  {
    pinMode (lauflicht[b], OUTPUT);
    digitalWrite(lauflicht[b], AUS);
  }

  for (uint8_t b = 0; b < blPins; b++)
  {
    pinMode (blinklicht[b], OUTPUT);
    digitalWrite(blinklicht[b], AUS);
  }

  pinMode(relaisPin, OUTPUT);
  digitalWrite(relaisPin, relaisOFF);
}

void loop()
{
  if (debugState != state)
  {
    Serial.print(F("Neuer Zustand: "));
    Serial.println(state);
    debugState = state;
  }

  switch (state)
  {
    case 0:
      if (!digitalRead(buttonPin))
      {
        Serial.println(F("TASTE gedrückt!"));
        startTime = millis();
        toggleRelais();
        state++;
      }

      break;

    case 1:
      blinkLicht();
      laufLicht();

      if (millis() - startTime > laufzeit)
      {
        state++;
      }

      break;

    case 2:
      allOff();

      if (digitalRead(buttonPin))
      {
        state = 0;
      }

      break;

    default:
      state = 0;
      break;
  }
}

void laufLicht()
{
  if (millis() - lastSwitch > toggleTime)
  {
    llOFF();
    Serial.print(F("Neue LauflichtLed: "));
    Serial.println(lastllPin);
    digitalWrite(lauflicht[lastllPin++], EIN);

    if (lastllPin >= llPins)
    { lastllPin = 0; }

    lastSwitch = millis();
  }
}

void blinkLicht()
{
  static uint8_t blinkState = 0;
  bool isNew = true;
  static uint32_t myTime = 0;

  for (uint8_t b = 0; b < blPins; b++)
  {
    if (digitalRead(blinklicht[b]))
    { isNew = false; }
  }

  if (isNew)
  {
    blinkState = 0;
  }

  switch (blinkState)
  {
    case 0:
      digitalWrite(blinklicht[0], HIGH);
      myTime = millis();
      blinkState++;
      break;

    case 1:
      if (millis() - myTime > 500)
      {
        blOFF();
        Serial.print(F("Neue BlinkLed ist 1"));
        digitalWrite(blinklicht[1], HIGH);
        myTime = millis();
        blinkState++;
      }

      break;

    case 2:
      if (millis() - myTime > 800)
      {
        blOFF();
        Serial.print(F("Neue BlinkLed ist 2"));
        digitalWrite(blinklicht[2], HIGH);
        myTime = millis();
        blinkState++;
      }

      break;

    case 3:
      if (millis() - myTime > 300)
      {
        Serial.print(F("Neue BlinkLed ist 0"));
        blOFF();
        blinkState = 0;
      }

      break;

    default:
      blinkState = 0;
      break;
  }
}

void allOff()
{
  Serial.println(F("Funktion: ALLES AUS!"));
  llOFF();
  blOFF();
  digitalWrite(relaisPin, relaisOFF);
}

void llOFF()
{
  for (uint8_t b = 0; b < llPins; b++)
  {
    digitalWrite(lauflicht[b], AUS);
  }

  Serial.println(F("Lauflicht OFF"));
}

void blOFF()
{
  for (uint8_t b = 0; b < blPins; b++)
  {
    digitalWrite(blinklicht[b], AUS);
  }

  Serial.println(F("blinklicht OFF"));
}

void toggleRelais()
{
  digitalWrite(relaisPin, !digitalRead(relaisPin));
  Serial.print(F("Relais geschaltet - Zustand neu: "));
  Serial.print(digitalRead(relaisPin));
}

Dann bekommst Du immer eine Anzeige, wenn sich was tut und das muss dan auch passend passieren.
Wenn was nicht geht, dann Verkabelung prüfen.
Auf dem Relaismodul ist eine LED, die muss ebenfalls an/aus eghen.

FQBN: arduino:avr:nano:cpu=atmega328old
Verwende das Board 'nano' von der Plattform im Ordner: C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Verwendung des Kerns 'arduino' von Platform im Ordner: C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Verwendete Bibliotheken erkennen ...
C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C\sketch\brauhausfest_freiberger.ino.cpp -o nul
Funktionsprototypen werden generiert ...
C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino -IC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C\sketch\brauhausfest_freiberger.ino.cpp -o C:\Users\Iev\AppData\Local\Temp\708807196\sketch_merged.cpp
C:\Users\Iev\AppData\Local\Arduino15\packages\builtin\tools\ctags\5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives C:\Users\Iev\AppData\Local\Temp\708807196\sketch_merged.cpp

Sketch wird kompiliert ...
"C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino" "-IC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\variants\eightanaloginputs" "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C\sketch\brauhausfest_freiberger.ino.cpp" -o "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C\sketch\brauhausfest_freiberger.ino.cpp.o"
Bibliotheken werden kompiliert ...
Kern wird kompiliert ...
Verwendung des vorkompilierten Kerns: C:\Users\Iev\AppData\Local\arduino\cores\arduino_avr_nano_cpu_atmega328old_e0bff5c041da8a5d4697870f7ee0a051\core.a
Alles zusammenlinken...
"C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.elf" "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C\sketch\brauhausfest_freiberger.ino.cpp.o" "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/..\..\cores\arduino_avr_nano_cpu_atmega328old_e0bff5c041da8a5d4697870f7ee0a051\core.a" "-LC:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C" -lm
"C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.elf" "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.eep"
"C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.elf" "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.hex"
"C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.elf"
Der Sketch verwendet 3344 Bytes (10%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 209 Bytes (10%) des dynamischen Speichers, 1839 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
"C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -carduino "-PCOM4" -b57600 -D "-Uflash:w:C:\Users\Iev\AppData\Local\arduino\sketches\496F405D10F01F34196EDDB972561D6C/brauhausfest_freiberger.ino.hex:i"

avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

     System wide configuration file is "C:\Users\Iev\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

     Using Port                    : COM4
     Using Programmer              : arduino
     Overriding Baud Rate          : 57600

avrdude: ser_open(): can't open device "\.\COM4": Das System kann die angegebene Datei nicht finden.

avrdude done. Thank you.

Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Dein Arduino ist nicht da....
Einmal vom Rechner abziehen. Wieder anstecken.
Dann unter WERZEUGE - PORT in der IDE den Arduino wieder anwählen.

PS: Achtung: Bitte setze sowas alles in Codetags. Das ist das <code> symbol oben in der Leiste.

war mein Fehler, hatte externes Netzteil dran gemacht, dachte der Strom vom Rechner könnte zu wenig sein. Hier die Ausgabe vom Seriellen Monitor:

�Start...
Neuer Zustand: 0
TASTE gedrückt!
Relais geschaltet - Zustand neu: 0Neuer Zustand: 1
Lauflicht OFF
Neue LauflichtLed: 0
Lauflicht OFF
Neue LauflichtLed: 1
Lauflicht OFF
Neue LauflichtLed: 2
blinklicht OFF
Neue BlinkLed ist 1Lauflicht OFF
Neue LauflichtLed: 3
Lauflicht OFF
Neue LauflichtLed: 4
Lauflicht OFF
Neue LauflichtLed: 0
Lauflicht OFF
Neue LauflichtLed: 1
blinklicht OFF
Neue BlinkLed ist 2Lauflicht OFF
Neue LauflichtLed: 2
Neue BlinkLed ist 0blinklicht OFF
Lauflicht OFF
Neue LauflichtLed: 3
Lauflicht OFF
Neue LauflichtLed: 4
Lauflicht OFF
Neue LauflichtLed: 0
blinklicht OFF
Neue BlinkLed ist 1Lauflicht OFF
Neue LauflichtLed: 1
Lauflicht OFF
Neue LauflichtLed: 2
Lauflicht OFF
Neue LauflichtLed: 3
Lauflicht OFF
Neue LauflichtLed: 4
blinklicht OFF
Neue BlinkLed ist 2Lauflicht OFF
Neue LauflichtLed: 0
Neue BlinkLed ist 0blinklicht OFF
Lauflicht OFF
Neue LauflichtLed: 1
Lauflicht OFF
Neue LauflichtLed: 2
Lauflicht OFF
Neue LauflichtLed: 3