Fehlgeschlagenes Hochladen

Hallo liebe Arduino Community,
ich habe ein Problem mit dem Arduino IDE Programm.
Und zwar bekomme ich immer diesen Fehler:

Der Sketch verwendet 11100 Bytes (36%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1398 Bytes (68%) des dynamischen Speichers, 650 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
avrdude: ser_open(): can't open device "\.\COM10": Zugriff verweigert

Fehlgeschlagenes Hochladen: Hochladefehler: exit status 1

Ich benutzte ein Arduino Nano und kann immer nur nach dem Neustarten des PCs, das Programm auf mein Arduino laden. Sobald ich dann etwas am Programm ändere kommt immer wieder dieser Fehler. Comport und Arduino sind richtig ausgewählt und außerdem macht es kein unterschied ob der Arduino direkt am PC oder an einem USB Verteiler hängt.
Falls jemandem das Problem bekannt vorkommt und/oder mir helfen kann würde ich mich freuen.
Dankeschön

... und jetzt etwas genauer, bitte!
Welche Version der IDE auf welcher Hardware (PC / Laptop / Virtuelle Maschine ...)?
Welcher Sketch?

Zum Problem:
Hast Du mir irgendeinem anderen Programm die ser. Schnittstelle geöffnet?

Klar.
Versionen habe ich schon verschiedene ausprobiert, also von 2.0.4 bis 1.8.19 habe ich mich rumprobiert. Außerdem benutze ich einen PC.

Mein Sketch sieht so aus:

//Einbinden der Bibliotheken
#include <Arduino.h>            //Bibliothek für SCD40
#include <SensirionI2CScd4x.h>  //Bibliothek für SCD40
#include <Wire.h>               //Bibliothek für I2C verbindung

//Ausgänge definieren
#define MINS1 A0  //Taster1 auf PIN A0
#define MAXS2 A1  //Taster2 auf PIN A1
#define BUZS3 A2  //Taster3 auf PIN A2

SensirionI2CScd4x scd4x;

//Variablen vergeben
int i1 = 0;  //WERTEBEREICH FÜR TESTZÄHLER

void printUint16Hex(uint16_t value) {
  Serial.print(value < 4096 ? "0" : "");
  Serial.print(value < 256 ? "0" : "");
  Serial.print(value < 16 ? "0" : "");
  Serial.print(value, HEX);
}

void printSerialNumber(uint16_t serial0, uint16_t serial1, uint16_t serial2) {
  Serial.print("Serial: 0x");
  printUint16Hex(serial0);
  printUint16Hex(serial1);
  printUint16Hex(serial2);
  Serial.println();
}

void setup() {

  Serial.begin(9600);     //Start des Seriellen Monitor (Schnittstelle initialisieren)
  //while (!Serial) {       //Start der Kommunitkation zu I2C 
  //  delay(0);          //delay von 100ms
  //}
  pinMode(MINS1, INPUT);  //Anschluss A1 -> Eingang
  pinMode(MAXS2, INPUT);  //Anschluss A1 -> Eingang
  pinMode(BUZS3, INPUT);  //Anschluss A1 -> Eingang
  Wire.begin();
  uint16_t error;         //Wertebereich für error festlegen
  char errorMessage[256]; 
  scd4x.begin(Wire);
  // stop potentially previously started measurement
  error = scd4x.stopPeriodicMeasurement();
  if (error) {
    Serial.print("Error trying to execute stopPeriodicMeasurement(): ");
    errorToString(error, errorMessage, 256);
    Serial.println(errorMessage);
  }
  uint16_t serial0;
  uint16_t serial1;
  uint16_t serial2;
  error = scd4x.getSerialNumber(serial0, serial1, serial2);
  if (error) {
    Serial.print("Error trying to execute getSerialNumber(): ");
    errorToString(error, errorMessage, 256);
    Serial.println(errorMessage);
  } else {
    printSerialNumber(serial0, serial1, serial2);
  }
  // Start Measurement
  error = scd4x.startPeriodicMeasurement();
  if (error) {
    Serial.print("Error trying to execute startPeriodicMeasurement(): ");
    errorToString(error, errorMessage, 256);
    Serial.println(errorMessage);
  }
  Serial.println("Waiting for first measurement... (5 sec)");
}

void loop() {
  uint16_t error;
  char errorMessage[256];

  // Read Measurement
  uint16_t co2 = 0;
  float temperature = 0.0f;
  float humidity = 0.0f;
  bool isDataReady = false;
  error = scd4x.getDataReadyFlag(isDataReady);
  if (error) {
    Serial.print("Error trying to execute getDataReadyFlag(): ");
    errorToString(error, errorMessage, 256);
    Serial.println(errorMessage);
    return;
  }
  if (!isDataReady) {
    return;
  }
  error = scd4x.readMeasurement(co2, temperature, humidity);
  if (error) {
    Serial.print("Error trying to execute readMeasurement(): ");
    errorToString(error, errorMessage, 256);
    Serial.println(errorMessage);
  } else if (co2 == 0) {                                   //Gibt Co2 Sensor 0 aus?
    Serial.println("Invalid sample detected, skipping.");  //Serieller Monitor zeigt Invalid sample detected, skipping. an
  } else {
    Serial.print("Co2:");          //Serieller Monitor zeigt Co2: an
    Serial.print(co2);             //Serieller Monitor zeigt Co2 Werte an
    Serial.print("\t");            //Fügt Leerzeichen zwischen Co2 und Temperatur ein
    Serial.print("Temperature:");  //Serieller Monitor zeigt Temperatur: an
    Serial.print(temperature);     //Serieller Monitor zeigt Temperatur Werte an
    Serial.print("\t");            //Fügt Leerzeichen zwischen Co2 und Temperatur ein
    Serial.print("Humidity:");     //Serieller Monitor zeigt Humidity: an
    Serial.println(humidity);      //Serieller Monitor zeigt Humidity Werte an
  }
  if (digitalRead(MINS1) == 1 && digitalRead(MAXS2) == 1 && digitalRead(BUZS3) == 1) {  //Taster MINS1 oder MAXS2 oder BUZS3 gedrückt?
    ++i1;                                                                               //Zähler i1 zählt eins hoch
  }
}

Ein anderes Programm benutzt normalerweise nicht diese ser. Schnittstelle, kann ich das aber zur Sicherheit irgendwie überprüfen?

in der IDE gibts unter dem Menupunkt "Werkzeuge" den Eintrag "Boardinformationen holen".
Kommt da was sinnvolles heraus?

Nein, hier steht nur Unknown board.
Ich schau mal ob ich einen anderen Nano finde und probiere den aus.

Ich hab jetzt noch einen 2ten Nano getestet und bekomme den gleichen Fehler.
Jedoch konnte ich den Sketch ohne Probleme auf einen Uno hochladen.
Und beim Uno bekomme ich bei der Funktion "Boardinformationen holen" etwas sinnvolles heraus.
Heißt das ich kann keinen Nano verwenden?

Ab jetzt muss ich passen (ich arbeite meist mit ESP8266). Sieht aber so aus, als ob die Serielle Schnittstelle soweit funktioniert. Inwieweit der Nano gegenüber dem UNO irgendwelche Spezialitäten hat, kann ich leider nicht beantworten.

1 Like

Ok,
trotzdem vielen dank.
Der wesentliche unterschied bei meinem Problem ist, das der Uno ein anderes Verbindungskabel zum PC benötigt.

Nano mit CHxx wird nur als "Unknown" angezeigt, so wie andere nicht originale Bords

Zufällig Serial Monitor offen?
Manchmal wen er offen ist stört er bei Upload, ansonsten irgend was belegt dein COM 10 Port, mit anderen USB schon probiert dann sollte der COM sich ändern
ansonsten USBDeview 3.06 runterladen und starten es werden alle USB Port's angeziegt so wie die Belegung

1 Like

In der 1.8.19 lag es an dem Seriellen Monitor, in dieser Version kann ich jetzt ohne Probleme weiterarbeiten.
Leider funktioniert es in der 2.0.4 immer noch nicht, auch nicht nach dem USBDeview 3.06.
Aber das ist jetzt kein Problem, ich werde mit der 1.8.19 weiterarbeiten.
Vielen dank für die schnellen Antworten und der Hilfe.

Darum raten alle von der 2.x Version ab und benutzen die 1.8.19
Grüße Uwe

1 Like

Also biste jetzt der ungefer 10 was nach letztem Windows Update die gleiche Probleme hat :wink:
Was schon gemacht wurde, ist aber nicht zum empfehlen, letztes Update deinstallieren, den nicht deshalb wurde das vom Microsoft herausgebracht um Arduino Freunde zu ärgern

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.