web-dev-qa-db-ger.com

Wie kann man ein Arduino-Board "zurücksetzen"?

Ich habe eine sketch zu einem Arduino Uno hochgeladen, dessen Schleife in etwa so aussieht:

void loop(){
    Serial.println("Hello World");
}

Jetzt kann ich nichts mehr hochladen, da in der IDE "Port bereits verwendet" steht. 

Gibt es eine Möglichkeit, den Arduino ohne einen anderen Programmierer "zurückzusetzen"?

EDIT:
Die serielle Schnittstelle wird sonst nicht verwendet, und alles lief gut, bis ich die vorherige Skizze hochgeladen habe.

EDIT:
Ich habe einige interessante Dinge gefunden:

21
dugres

Versuche Folgendes:

  1. Bereiten Sie das leere Grundprogramm vor (leeres Setup, leere Schleife usw.)
  2. Kompiliere es.
  3. Setzen Sie den Arduino mit der Hardware-Taste auf dem Chip zurück
  4. Drücken Sie Ctrl + U um deinen Code hochzuladen.
  5. Wenn erfolglos - bin zu 3 gekommen.

Es gibt eine Verzögerung, bevor der Bootloader die Programme startet, arbeiten Sie einfach an Ihrem Timing. Es funktionierte für mich, als ein Fehler in meinem Arduino-Code alle 500 ms einen Soft-Reset ausführte.

24
Valed

Ich hatte das gleiche Problem auf zwei Arduinos (einem Uno und einem Modern Device Freeduino/USB-Host-Board) und das Fenster zwischen dem Zurücksetzen und dem Beginn der Nutzung der seriellen Schnittstelle war so klein, dass es unmöglich war, sie hochzuladen.

Schließlich habe ich das Problem behoben, indem ich ein anderes Arduino Uno gekauft und ein ISP-Kabel gemäß diesen Anweisungen gebaut und damit die Bare Bones-App aus den Beispielen mit Arduino IDE auf jede unzugängliche Karte geflasht habe. Version 0023, nach diese Anweisungen , um preferences.txt zu ändern. (Speichern Sie unbedingt die Originaldatei, bevor Sie sie bearbeiten, damit Sie sie ersetzen können, nachdem Sie Ihren Arduino gerettet haben.)

Es dauerte einen schnellen Upload, um jedes Board zu reparieren. So eine schnelle Lösung nach so viel Trauer. Möglicherweise möchten Sie kein weiteres Arduino kaufen, beachten Sie jedoch die folgenden Vorteile:

  • Sie können den Bootloader auf Ihrem Arduino überschreiben, um mehr Speicherplatz zu gewinnen.
  • Sobald der Bootloader überschrieben ist, bootet das Board schneller.
  • Angeblich können Sie RAW-AVRs für spezielle Projekte programmieren, aber ich habe dies nicht ausprobiert: Google für ArduinoISP
  • Es wird Arduinos, die Sie in Zukunft blockieren, schnell reparieren.
  • Sie können jetzt sicher experimentieren, um zu verhindern, dass die Verwendung des seriellen Anschlusses das Gerät in Zukunft blockiert.
5
Sean Sheedy

Stellen Sie sicher, dass Sie das Arduino direkt am Computer und nicht über einen Hub anschließen. Bei Verwendung eines Hubs wird dieser Fehler angezeigt.

2
user2630109

Nachdem ich mir über dieses Problem den Kopf gekratzt habe, hier eine sehr einfache LÖSUNG, die jederzeit funktioniert:

  • Trennen Sie Ihr USB-Kabel
  • Gehen Sie in Ihren GERÄTE-MANAGER
  • Klicken Sie auf Ports (COM und LPT)
  • Klicken Sie mit der rechten Maustaste auf Arduino .... (COMx) 
  • Eigenschaften
  • Port-Einstellungen
  • Setzen Sie Flow Control aufHARDWARE
  • Leere Skizze erstellen (* Optional)
  • Schließen Sie das USB-Kabel an
  • Hochladen (Strg - U)

// Emtpy Sketch to fix upload problem
// Create by Eric Phenix
// Nov 2014

void setup() 
{ 
} 

// the loop routine runs over and over again forever:
void loop()
{ 
delay(1000);                            
}

Et voila! Eric

1
Eric Phenix

Aufgrund meiner Erfahrung mit der bereits verwendeten oder blockierten Kommunikation würde ich sagen, dass das Programm, mit dem Sie sich verbinden, die Kommunikation noch geöffnet hat. Ich habe auch festgestellt, dass die Kommunikation unterbrochen wird, wenn Sie das USB-Kabel abziehen. Es ist nicht die beste Lösung, löst aber das Problem. Ich hoffe das hilft.

1
jklmuk

Ich habe gerade die letzten 5 Stunden damit verbracht, nach einer Lösung für dieses Problem zu suchen (serielle Schnittstelle COM3 wird bereits verwendet, abgeblendete serielle Schnittstelle). 

Was endlich behoben wurde (wurde der letzte Code, den ich eingegeben habe, der steckengeblieben ist und eine einfache Blink-Funktion hochgeladen hat, entfernt)? Folgen Sie diesem Link - http://arduino.cc/de/guide/windows und befolgen Sie die Anweisungen zum INSTALLIEREN DER TREIBER. Mein Fahrer war "bereits auf dem neuesten Stand", aber durch diese Schritte wurde der Fehler behoben. Ich bin jetzt wieder ein fröhlicher Camper.

Hinweis: Zurücksetzen der Karte manuell mit der Taste auf dem Chip oder digital durch Misc. Codes im Internet funktionierten nicht, um dieses Problem zu beheben, da das Signal zwischen meinem arduino uno und dem Port in meinem Laptop irgendwie blockiert/verwechselt wurde. Das Aktualisieren der Treiber ist wie ein Reset für das Problem "Serieller Anschluss bereits verwendet". 

Zumindest so weit ..

1
Sard

Ich habe ein ähnliches Problem.

Wenn ich das Myarduino einschalte, tritt eine Verzögerung ein, bevor das Programm geladen wird.

Also nutze ich diese Verzögerung für das Hochladen eines neuen Programms oder eines leeren Programms:

void setup(){} void loop(){}

also mein problem gelöst.

Trennen Sie vor dem Hochladen alle Verbindungen zu Arduino-Pins.

0
user599115

Wenn Sie die serielle Konsole noch geöffnet haben, wird die serielle Schnittstelle reserviert. Schließen Sie es und versuchen Sie es erneut.

Wenn der Port als bereits verwendet angezeigt wird, verwenden Sie wahrscheinlich den falschen Port. Wechseln Sie ihn zu dem Port, an dem Sie Ihr arduino angeschlossen haben, und versuchen Sie, die Datei erneut hochzuladen. 

0
Tgold brain

Ich hatte heute das gleiche Problem. Hier ist eine einfache Lösung, die wir gefunden haben, um dieses Problem zu lösen (Dank an Anghiara): 

Anstatt Ihre neuen Codes über die Schaltfläche "Upload" (den Kreis mit dem grünen Pfeil) in Ihrem Bildschirm in das Arduino zu laden, klicken Sie mit der Maus auf "Skizze" und dann auf "Hochladen".

Bitte denken Sie daran, Ihren Codes eine delay () - Zeile hinzuzufügen, wenn Sie mit serial.println () und Schleifen arbeiten. Ich habe meine Lektion auf die harte Tour gelernt. 

0
Pablo Guzmán

Arduino Leonardo Board

  1. Trennen Sie das USB-Kabel 
  2. Verbinden Sie den Rx-Pin mit Masse 
  3. Stecken Sie das USB-Kabel
  4. Laden Sie ein neues Programm hoch 
  5. Entfernen Sie das USB-Kabel
  6. Entfernen Sie die Rx-Erdung

Diese Arbeit für mich hoffe ich auch für dich.

0
PcTronics

Ich hatte auch dieses Problem, ich habe die oben genannten Methoden ausprobiert und keine schien zu funktionieren, jedoch funktionierte etwas (irgendwie nicht sicher, ob es nur eine Freak-Sache war oder tatsächlich eine Möglichkeit ist, dies zu tun)

  1. USB vom Duino trennen
  2. Halten Sie die Reset-Taste gedrückt
  3. USB einstecken und einschalten
  4. halten Sie die Skizze hoch und laden Sie sie hoch. Sobald der Upload abgeschlossen ist, lassen Sie die Reset-Taste los.
0
Keith

Versuchen Sie für Arduino Yun Benutzer das Hochladen über Ethernet/WiFi (Tools-> Port) . Ich bin überrascht, dass es funktioniert hat, aber ich habe ohne Probleme eine leere Skizze hochgeladen.

0
lokers

Wenn nichts geholfen hat, sollten Sie ein weiteres Board anordnen und versuchen, es durch Arduino als ISP-Option zu flashen, wie hier gezeigt https://www.arduino.cc/en/Tutorial/ArduinoISP oder https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard . Anstelle des Bootloaders können Sie Ihre eigenen Programme auswählen, die über ISP flashen sollen

0
Rijo Kuriakose

Ich habe in Linux in der Lage sein, mein Arduino Micro zu programmieren, das in einer Schleife steckte und die 0-Taste sendet, wenn es über USB angeschlossen ist.

# while true; do xinput float $(xinput --list | grep -i Arduino | awk '{print $7}' | cut -d'=' -f 2); done

Ihre Ausgabe könnte etwas anders sein, also versuchen Sie es einmal auszuführen.

# watch xinput --list

schließen Sie dann das Arduino an und sehen Sie, wie die Ausgabe formatiert wird.

Dies hinderte X daran, die Tastendrücke zu akzeptieren und erlaubte dem Arduino IDE, endlich zu programmieren!

0
james

Stellen Sie sicher, dass Sie nicht über ein Terminal auf die serielle Schnittstelle zugreifen. Diese Schleife (oder ein beliebiger Code) sollte die Programmierung des Arduino nicht verhindern.

0
Chiva