Arduino Mega lässt sich nicht mehr flashen – selbst „Blink“ schlägt fehl Exitcode 1

Hallo zusammen,

ich arbeite gerade an einem kleinen „Gameboy“-Projekt mit einem Arduino Mega 2560, einer MAX7219‑LED‑Matrix und ein paar Buttons. Bis gestern konnte ich problemlos Programme hochladen, aber plötzlich funktioniert gar kein Upload mehr – nicht einmal das Standard‑„Blink“.

Der Fehler lautet:

FQBN: arduino:avr:mega
Verwende das Board 'mega' von der Plattform im Ordner: C:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7
Verwendung des Kerns 'arduino' von Platform im Ordner: C:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7

Verwendete Bibliotheken erkennen ...
C:\Users\phili\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\mega C:\Users\phili\AppData\Local\arduino\sketches\5803B2D26AE797EAD1FC4E90C7B06DAE\sketch\Main.ino.ino.cpp -o nul
Alternativen für LedControl.h: [LedControl@1.0.6]
ResolveLibrary(LedControl.h)
  -> Kandidaten: [LedControl@1.0.6]
C:\Users\phili\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\mega -IC:\Users\phili\Documents\Arduino\libraries\LedControl\src C:\Users\phili\AppData\Local\arduino\sketches\5803B2D26AE797EAD1FC4E90C7B06DAE\sketch\Main.ino.ino.cpp -o nul
C:\Users\phili\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\mega -IC:\Users\phili\Documents\Arduino\libraries\LedControl\src C:\Users\phili\Documents\Arduino\libraries\LedControl\src\LedControl.cpp -o nul
The list of included libraries has been changed... rebuilding all libraries.
Funktionsprototypen werden generiert ...
C:\Users\phili\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=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\cores\arduino -IC:\Users\phili\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.7\variants\mega -IC:\Users\phili\Documents\Arduino\libraries\LedControl\src C:\Users\phili\AppData\Local\arduino\sketches\5803B2D26AE797EAD1FC4E90C7B06DAE\sketch\Main.ino.ino.cpp -o C:\Users\phili\AppData\Local\Temp\433737080\sketch_merged.cpp
C:\Users\phili\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\phili\AppData\Local\Temp\433737080\sketch_merged.cpp

Sketch wird kompiliert ...
"C:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\mega" "-IC:\\Users\\phili\\Documents\\Arduino\\libraries\\LedControl\\src" "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE\\sketch\\Main.ino.ino.cpp" -o "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE\\sketch\\Main.ino.ino.cpp.o"
Bibliotheken werden kompiliert ...
Bibliothek "LedControl" wird kompiliert
"C:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR "-IC:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\cores\\arduino" "-IC:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.7\\variants\\mega" "-IC:\\Users\\phili\\Documents\\Arduino\\libraries\\LedControl\\src" "C:\\Users\\phili\\Documents\\Arduino\\libraries\\LedControl\\src\\LedControl.cpp" -o "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE\\libraries\\LedControl\\LedControl.cpp.o"
Kern wird kompiliert ...
Verwendung des vorkompilierten Kerns: C:\Users\phili\AppData\Local\arduino\cores\arduino_avr_mega_cpu_atmega2560_f25e8d7a3ab62c8280895724c32fb973\core.a
Alles zusammenlinken...
"C:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega2560 -o "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.elf" "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE\\sketch\\Main.ino.ino.cpp.o" "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE\\libraries\\LedControl\\LedControl.cpp.o" "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/..\\..\\cores\\arduino_avr_mega_cpu_atmega2560_f25e8d7a3ab62c8280895724c32fb973\\core.a" "-LC:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE" -lm
"C:\\Users\\phili\\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\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.elf" "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.eep"
"C:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.elf" "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.hex"
Bibliothek LedControl in Version 1.0.6 im Ordner: C:\Users\phili\Documents\Arduino\libraries\LedControl  wird verwendet
"C:\\Users\\phili\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\phili\\AppData\\Local\\arduino\\sketches\\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.elf"
Der Sketch verwendet 6838 Bytes (2%) des Programmspeicherplatzes. Das Maximum sind 253952 Bytes.
Globale Variablen verwenden 421 Bytes (5%) des dynamischen Speichers, 7771 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.
"C:\Users\phili\AppData\Local\Arduino15\packages\arduino\tools\avrdude\8.0.0-arduino1/bin/avrdude" "-CC:\Users\phili\AppData\Local\Arduino15\packages\arduino\tools\avrdude\8.0.0-arduino1/etc/avrdude.conf" -v -V -patmega2560 -cwiring "-PCOM5" -b115200 -D "-Uflash:w:C:\Users\phili\AppData\Local\arduino\sketches\5803B2D26AE797EAD1FC4E90C7B06DAE/Main.ino.ino.hex:i"
Avrdude version 8.0-arduino.1
Copyright see https://github.com/avrdudes/avrdude/blob/main/AUTHORS

System wide configuration file is C:\Users\phili\AppData\Local\Arduino15\packages\arduino\tools\avrdude\8.0.0-arduino1\etc\avrdude.conf

Using port            : COM5
Using programmer      : wiring
Setting baud rate     : 115200
Error: timeout
Error: timeout
Error: timeout
Error: timeout
Error: timeout
Error: timeout
Error: timeout communicating with programmer
Error: stk500v2_getsync() failed; try -x delay=n with some n in [-80, 100]
Error: unable to open port COM5 for programmer wiring

Avrdude done.  Thank you.
Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Ich habe bereits Folgendes getestet:

  • anderer USB‑Port

  • Board in der IDE neu ausgewählt (Arduino Mega 2560)

  • richtigen COM‑Port geprüft

  • selbst ein komplett leeres Sketch lässt sich nicht flashen

Der Gerätemanager erkennt den Mega weiterhin korrekt.

Hier ist der aktuelle Code:

// Bibliothek für die MAX7219 LED-Matrix
#include "LedControl.h"

// Watchdog-Timer zum erzwungenen Neustart
#include <avr/wdt.h>

// -----------------------------
// Button-Pins (mit INPUT_PULLUP)
// -----------------------------
const int ButtonEnter = 2;   // Bomben auslösen
const int ButtonUp = 3;      // Reserviert für spätere Funktionen
const int ButtonLeft = 4;    // Boot nach links bewegen
const int ButtonRight = 5;   // Boot nach rechts bewegen
const int ButtonDown = 6;    // Reserviert für spätere Funktionen

// -----------------------------
// Funktion zum Neustarten des Boards
// -----------------------------
// Aktiviert den Watchdog-Timer, der nach 15ms einen Reset auslöst
void restart() {
    wdt_enable(WDTO_15MS);
    while(1); // Endlosschleife → Watchdog löst Reset aus
}

// -----------------------------
// LED-Matrix (MAX7219) Setup
// Pins: DIN=12, CLK=10, CS=11, 1 Display
// -----------------------------
LedControl lc = LedControl(12,10,11,1);

// -----------------------------
// Setup-Funktion (wird einmal ausgeführt)
// -----------------------------
void setup() {

  // MAX7219 aktivieren
  lc.shutdown(0,false);

  // Helligkeit der Matrix (0–15)
  lc.setIntensity(0,15);

  // Display löschen
  lc.clearDisplay(0);

  // Serielle Schnittstelle starten
  Serial.begin(9800);

  // Zufallszahl-Seed setzen
  randomSeed(analogRead(0));

  // Buttons als INPUT_PULLUP konfigurieren
  pinMode(ButtonEnter, INPUT_PULLUP);
  pinMode(ButtonUp, INPUT_PULLUP);
  pinMode(ButtonLeft, INPUT_PULLUP);
  pinMode(ButtonRight, INPUT_PULLUP);
  pinMode(ButtonDown, INPUT_PULLUP);
}

// -----------------------------
// Spielvariablen
// -----------------------------
int posBoat = 4;        // X-Position des Bootes (Spieler)
int posUBoatX = 7;      // X-Position des U-Bootes (Gegner)
int posUBoatY = 7;      // Y-Position des U-Bootes
bool bombUsed = false;  // Ob eine Bombe aktiv ist
int posBombX = 4;       // X-Position der Bombe
int posBombY = 0;       // Y-Position der Bombe
int speed = 100;        // Spielgeschwindigkeit (Delay)
int lives = 3;          // Leben des Spielers
int boatSpeed = 3;      // Geschwindigkeit des U-Bootes
int run = 0;            // Frame-Counter
int points = 0;         // Punktestand

// -----------------------------
// Hauptschleife (läuft unendlich)
// -----------------------------
void loop() {

  // Display löschen
  lc.clearDisplay(0);

  // Boot anzeigen (unten)
  lc.setLed(0,posBoat,0,true);

  // U-Boot anzeigen
  lc.setLed(0, posUBoatX, posUBoatY, true);

  // Letzte gültige Position des U-Bootes speichern
  int lastX = posUBoatX;
  int lastY = posUBoatY;

  // U-Boot bewegt sich alle "boatSpeed"-Frames nach links
  if (run % boatSpeed == 0) {
    posUBoatX = posUBoatX - 1;
  }

  // -----------------------------
  // U-Boot verlässt das Spielfeld
  // -----------------------------
  if(posUBoatX < 0)
  {
    lives--; // Spieler verliert ein Leben

    // -----------------------------
    // GAME OVER
    // -----------------------------
    if (lives == 0) {

      // Blinkanimation an letzter U-Boot-Position
      for(int i = 0; i < 50; i++){
        lc.setLed(0, lastX, lastY, false);
        delay(80);
        lc.setLed(0, lastX, lastY, true);
        delay(80);
      }

      // Punktestand ausgeben
      Serial.print("Du hast ");
      Serial.print(points);
      Serial.println(" Punkte erreicht!\n");
      Serial.println("Gebe \"restart\" ein!");

      // Endlosschleife → wartet auf Restart
      while(true){
        if(Serial.available())
        {
          String text = Serial.readString();
          if(text == "restart")
            restart();
        }
      }
    }
    else {
      // U-Boot ist entkommen → neues spawnen
      Serial.println("Ein U-Boot ist geflohen.");
      Serial.print(lives);
      Serial.println(" Leben übrig.");

      // Neue zufällige Y-Position
      int randNumber = random(1, 8);
      posUBoatY = randNumber;
      posUBoatX = 7;
    }
  }

  // -----------------------------
  // Serielle Steuerung (a/d/Leertaste)
  // -----------------------------
  if(Serial.available()){
    char c = Serial.read();

    if(c == 'a'){ posBoat++; }   // Boot nach rechts
    if(c == 'd'){ posBoat--; }   // Boot nach links

    if(c == ' '){                // Bombe auslösen
      bombUsed = true;
      posBombX = posBoat;
      posBombY = 0;
    }
  }

  // -----------------------------
  // Button-Steuerung
  // -----------------------------
  if(digitalRead(ButtonEnter) == LOW)
  {
    // Bombe auslösen
    bombUsed = true;
    posBombX = posBoat;
    posBombY = 0;
  }

  if(digitalRead(ButtonUp) == LOW)
  {
    // Reserviert
  }

  if(digitalRead(ButtonLeft) == LOW)
  {
    posBoat--; // Boot nach links
  }

  if(digitalRead(ButtonRight) == LOW)
  {
    posBoat++; // Boot nach rechts
  }

  if(digitalRead(ButtonDown) == LOW)
  {
    // Reserviert
  }

  // -----------------------------
  // Bomben-Logik
  // -----------------------------
  if(bombUsed)
  {
    posBombY++; // Bombe steigt nach oben

    // Bombe anzeigen
    lc.setLed(0,posBombX,posBombY,true);

    // Trefferprüfung
    if(posBombY == posUBoatY && posBombX == posUBoatX){
      lives++;      // Leben zurück
      points++;     // Punkt dazu
      posUBoatX = -1; // U-Boot entfernen

      Serial.print("Treffer. Du hast ");
      Serial.print(points);
      Serial.println(" Punkte!");
    }
  }

  // Frame-Ende
  delay(speed);
  run++;
}

Der Schaltplan:

  • Gameboy.pdf (55,2 KB)

  • Auf dem Schaltplan ist zwar ein Uno eingezeichnet, aber es ist ein Mega, und ich habe in KI Cad kein passendes Symbol gefunden, Das HC-05, welches ich nutze schafft auch nur BT, auch wenn im Schaltplan falsch dargestellt.

Und hier ein Foto vom Aufbau:

Da bis gestern alles problemlos lief, vermute ich entweder:

  • Bootloader beschädigt

  • USB‑Interface defekt

  • Kurzschluss / Überlastung durch mein Projekt

  • oder etwas, das ich übersehe

Hat jemand eine Idee, was ich testen kann oder ob der Mega eventuell „gebrickt“ ist?

Elektrisierende Grüße

Anderen USB Port probiert? Am besten ohne dem Display

Beides schon gemacht, ohne display kommt auch der error, aber er hängt sich auf und nach 30 min kommt

image

zusätzlich zur alten Meldung

Erkennt Ihr Betriebssystem überhaupt etwas auf COM5?
Haben Sie versucht, die Reset-Taste des Mega zu drücken und direkt vor dem Start des Uploads wieder loszulassen?
Sind Sie sicher, dass der Mega nicht gleichzeitig von einem anderen Programm oder einer anderen IDE verwendet wird?
Wenn nichts funktioniert, könnte der Bootloader beschädigt sein und ein erneutes Flashen über ein anderes Arduino oder einen externen Programmer erforderlich sein.

Das Arduino wird erkannt:

Auch wenn man die Reset Taste drückt und erst kurz davor loslässt kommt Exitcode 1, selber Error. Der Mega wird nur von der Arduino IDE genutzt. Wie flasht man den Über ein anderes Arduino (ich habe noch ein Uno R2 und ein Nano R4)

Grüße,

Philipp

Die RX, TX LED blinken die Hochladeversuch?

RX blinkt 4 mal, dann wars das, TX bleibt komplett aus.

Entferne mal das Bluetooth Modul von den Pins D0 und D1.
Die Pins sollten beim Upload nicht belegt sein. Da steckt auch der USB-Wandler drauf.

Das Pin 1 mußt Du für die USB Kommunikation bzw fürs Hochladen frei lassen. Nimm ein anderes Pin.

Wie kommst Du drauf? ich habe kein BT Modul gefunden.
Wie dem auch sei.
Der MEGA 2560 hat 4 serielle Schnittstellen. Serial. ist für USB. und an den Pins D0 und D1. Serial1. Serial2. und Serial3 sind noch frei und an den Pins 14 bis 19.
Grüße Uwe

An PIN 0/1 mit or/ws ist irgendwas oberhalb des Mega.

Danke my_xy_projekt, hatte ich übersehen.

Also ist Pin D1 3 fach belegt. Vom BL Modul, vom Dislpay und von USB Adapter.

Grüße Uwe

Dabke, hat geklappt!

P.S.: Die 1 hier LedControl lc = LedControl(12,10,11,1); steht für die ID des Displays