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


