Serialler Monitor zeigt nur den Setup Teil an

Hallo zusammen.

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?

Der Fehler ist bekannt.
Es fehlt läuft etwas in einer Dauerschleife.

Wenn Du ernsthafte Antworten willst, dann zeige den Code, weil die Glaskugel grad zur Reinigung ist...

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.

Dann zeig doch bitte auch, was der serielle Monitor anzeigt.

Evtl. liegt es daran, dass es kein Arduino ist. :wink:

Das ist die Ausgabe davon :

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?

Jain....es ist kein Arduino, aber hat nichts mit dem Problem zu tun.

Ich schau grad den Sketch an...

Mach mal hinter der letzten Klammer das Semikolon weg.
Bei beiden While-Schleifen.

K.A. ob das das Problem ist, kommt mir nur seltsam vor.

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.

Ne leider ist dass nicht Problem, aber du hast recht die Semikolons sind unnötig.

Externe Spannung (5.2 V) angelegt, aber selbes Resultat.

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.

Merkwürdig ist dein Problem schon:

long calc_weight = 500;
void setup() {
	Serial.begin(9600);
	Serial.print("Skalierung ");
	Serial.println(calc_weight);
	Serial.println();
}
void loop() {
     Serial.print("Test");
      delay(5000);
}

Das sollte gehen, oder?

Dann kannst du ja setup() Schritt für Schritt erweitern, bis das Problem da ist.

Wenn nicht, mach Serial.println("Test");
in loop.
Nicht dass dein SerialMonitor erst was anzeigt, wenn ein Zeilenende kommt.

Selbst das funktioniert nicht.

void setup() {
	Serial.begin(9600);
     Serial.print("Test123");
}
void loop() {
     Serial.print("Test");
      delay(5000);
}

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?

Ich habe nochmal was anderes versucht:

  1. Arduino IDE deinstalliert
  2. Unter C: in den Ordnern User/BENUTZERNAME/ den Ordner ."arduinoIDE" gelöscht
  3.          > In AppData unter Local die Ordner "Arduino 15" und "arduino-ide-updater" 
                 gelöscht 
    
  4.                      > Unter Roaming die Ordner "Arduino IDE" und "arduino-ide"  gelöscht
    
  5. 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.

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