Ich habe heute beim programmieren ein sehr komischen Fehler bei mir gefunden den ich mir nicht erklären kann. Ich habe auch im Internet keine Lösung gefunden.
Wenn ich ein Sketch hochlade und im Monitor mir die Ausgabe anschauen möchte wird immer nur der "Setup" angezeigt und ausgeführt. Der Wechsel in die Loop Schleife erfolgt nicht. Dabei ist es auch völlig egal was ich in den Sketch schreibe.
Eine Neuinstallation hat mich nicht weiter gebracht.
Der Fehler tritt auch nur auf meinem Computer auf. Wenn ich zu meinem Laptop wechsle funktioniert alles problemlos. Es muss ja dann irgendeine Einstellung oder sowas sein. Der Fehler tritt sowohl in der Arduino IDE auf als auch bei Microsoft Visual Studio mit Visual Micro.
Hat jemand schonmal sowas ähnliches gehabt und kann mir weiterhelfen?
Und schreib was für System das ist. Wen es ein ESP egal ob 32 oder 8266 ist, und du WLAN nutzen willst, kann sein das am deinem PC die USB Spannung einbricht dadurch kommt zu Reboot = dauerschleife im dem Moment.
#include "HX711.h"
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;
char c;
long weight = 1;
long last_weight = 0;
const long max_spread = 500;
long tar_weight = 1;
float scale_factor = 1.0;
long calc_weight = 500;
long reading = 0;
void setup() {
Serial.begin(9600);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Serial.println("Kalbrierung erforderlich");
Serial.println("Gewicht entfernen und mit A bestätigen");
while (c != 'A') {
c = Serial.read();
};
c = '0';
Serial.println("Kalibrierung läuft");
scale.set_scale();
delay(1000);
scale.read_average(20);
tar_weight = scale.read_average(20);
Serial.println();
Serial.print("Waage mit "); Serial.print(calc_weight); Serial.println(" Gramm beschweren und mit B bestätigen.");
delay(100);
Serial.println();
while (c != 'B') {
c = Serial.read();
};
scale.set_offset(tar_weight);
delay(100);
scale.get_units(20);
scale_factor = (scale.get_units(20) / calc_weight);
scale.set_scale(scale_factor);
Serial.print("Prüfe Gewicht ");
Serial.println(scale.get_units(20), 1);
Serial.print("Taragewicht ");
Serial.println(tar_weight);
Serial.print("Skalierung ");
Serial.println(calc_weight);
Serial.println();
}
// the loop function runs over and over again until power down or reset
void loop() {
Serial.print("Test");
delay(5000);
}
Das ist mein aktueller code dazu, aber wie gesagt es macht kein Unterschied welchen Code ich verwende. Es ist Geräte abhängig.
Ich verwende einen Arduino Nano (Nicht den originalen, )
Das mit der Spannung werde ich mal austesten, wenn das der Fehler ist sollte es ja funktionieren, wenn ich eine externe Spannungsquelle anschließe.
Opening port
Port open
10:30:17:101 ->
Kalbrierung erforderlich
Gewicht entfernen und mit A bestätigen
10:30:22:258 -> Kalibrierung läuft
10:30:26:832 ->
Waage mit 500 Gramm beschweren und mit B bestätigen.
10:30:26:899 ->
10:30:32:525 -> Prüfe Gewicht -994.3
Taragewicht 299444
Skalierung 500
Nach dem kommt nichts mehr keine Zeit Ausgabe oder sonst was.
Compiling debug version of 'Wägezelle' for 'ATmega328P (Old Bootloader) (Arduino Nano) (nano_atmega328old)'
Build Folder: "file:///C:/Users/Flori/AppData/Local/Temp/VMBuilds/W%C3%A4gezelle/nano_atmega328old/Debug"
Program size: 7308 bytes (used 24% of a 30720 byte maximum) (0,80 secs)
Minimum Memory Usage: 692 bytes (34% of a 2048 byte maximum)
Uploading 'Wägezelle' to 'ATmega328P (Old Bootloader) (Arduino Nano) (nano_atmega328old)' using 'COM3'
The upload process has finished.
Das ist die Debug Ausgabe.
Meinst du echt? Aber warum dann nur bei meinem Computer und beim Laptop läuft alles durch?
Wenn der Code bis zur Ausgabe Skalierung 500 kommt, sollte er eigentlich auch in die loop() laufen.
Mach da aus dem print doch mal ein println - vielleicht braucht (warum auch immer) Dein Rechner da ein Zeilenende.
Das Semikolon ist hier nur überflüssig, macht aber nichts.
Es gibt Situationen, wo eine zusätzliche leere Anweisung stört ( z.B. zwischen if() und else gehört genau eine Anweisung bzw. ein {Block} ) aber da meckert dann der Compiler.
Das wäre ja das simpelste was man machen kann aber auch da wird wieder nur der Setupteil ausgeführt und angezeigt.
Es ist halt auch Geräte abhängig. Ich hätte jetzt an irgendeine Einstellung gedacht aber da der selbe Fehler mit zwei verschiedenen Programmen auftritt muss ja irgendwas geben was beide Programme gemeinsam nutzen. Da Visual Micro auf die Arduino IDE zugreift hätte ich gedacht eine Neu Installation löst das Problem.
Gibt es den irgendwas was nicht beim dein installieren gelöscht wird?
Unter C: in den Ordnern User/BENUTZERNAME/ den Ordner ."arduinoIDE" gelöscht
> In AppData unter Local die Ordner "Arduino 15" und "arduino-ide-updater"
gelöscht
> Unter Roaming die Ordner "Arduino IDE" und "arduino-ide" gelöscht
Abschließend unter C: Programme noch den Arduino Ordner gelöscht.
Jetzt wieder alles neu installiert (Es sollten auch alle Pakete wieder neu heruntergeladen werden) und ausprobiert. Erstaunlicherweise scheint es jetzt wieder zu funktionieren.