Hallo zusammen, ich habe eine Frage zum Arduino mit angeschlossen Display 16x2 über eine 4bit Ansteuerung. Sowie einer Nutzung des PWM Ausgangs. Es werden Werte von einem Temperatursensor analog eingelesen und über eine Formel in float Temperaturwerte umgewandelt. Dies steuert dann einen Analogausgang PWM. Ein Motor wird angesteuert um die Motordrehzahl (Lüfter) zu erhöhen Das Programm funktioniert soweit wenn man die folgenden Befehle ausklammert, allerdings ist dann die Motorregelung inaktiv. //analogWrite(motor, 0); // läuft der Motor nicht, //analogWrite(motor, Wertint); //fängt der Motor langsam an zu drehen und wird immer schneller (je nach Wert und Temperatur), //analogWrite(motor, 255); //läuft Motor mit höchster Geschwindigkeit, sobald man das aber wieder einkommentiert, hat das Display 2 Zyklen etwa eine korrekte Anzeige, danach wird es mit Hyroglyphen überschrieben. Kann es sein, das der PWM Timer und das Display zusammen nicht können. Benutzt die Funktion Liquidcrystal auch Timer? Habt ihr eine Idee? Danke
:
Verschoben durch User
Vielleicht wird das Display durch Störimpulse des Motors gestört. Zieh mal den Motor ab und lass Dein Programm mit Motorausgabe laufen. Wenn Dein Problem danach verschwunden ist, hast Du kein Code-, sondern ein elektrisches Problem. Viele Grüße, Stefan
Das können wir ausschließen, da wir den Motor nicht bestromt haben. Wir hatten die externe Motorversorgung auch getrennt und aktiv. Grüße
Habe das mal getestet, bei mir wird nichts überschrieben. Allerdings passte die Displaybelegung nicht. Habe das umgeändert auf: LiquidCrystal lcd(12,11,2,3,4,5); Es könnte ein Problem mit Pin13 sein. Das ist es auch, ändere nur 13 auf 11.
:
Bearbeitet durch User
Leider bringt das bei uns den selben Effekt. Wir haben auch schon ein anderes Display von einem anderen Hersteller eingebaut. Jedoch bringt das auch den selben fehlerhaften defekt. if (temperature <0.0) { //Wenn Temperatur kleiner als 0°C ist, //analogWrite(motor, 0); // läuft der Motor nicht, analogWrite(LED, 0); // leuchtet die LED nicht, digitalWrite(LED1, LOW); //LED aus, digitalWrite(LED2, LOW); //LED aus Hast bestimmt vergessen das analogWrite einzukommentieren ist, falls es noch ausgeklammert ist funktioniert es bei uns auch fehlerfrei!!
Bibliotheken wie Arduinio sind gut, wenn sie sicher funktionieren. Tun sie wahrscheinlich auch. Fehlersuche gestaltet sich aber schwieriger, wenn man den Fehler in fremden Libraries suchen muss. Also zwecks Fehlersuche die Funktion analogWrite() selbst schreiben und schauen, bei welchem Registerzugriff das Problem entsteht. Auf float-Werte sollte man bei mcus nach Möglichkeit verzichten. Gib die Temperaturen als Integer mit 10tel Grad Genauigkeit an. Das ist besser als die float-Berechnung.
Arduinoquest schrieb: > Hast bestimmt vergessen das analogWrite einzukommentieren ist, falls es > noch ausgeklammert ist funktioniert es bei uns auch fehlerfrei!! Nein ist nicht auskommentiert. Die Temperaturanzeige ist unsinnig. Wenn ist den A0 auf 3,3V stecke, dann ist die Anzeige 283.01 . Ist aber eine andere Baustelle. Habe die *.ino angehängt wie ich sie geladen habe.
Vielen Dank, es geht jetzt! Wir hatten ein Stör-Problem. Hatten alles auf einem Breadboard aufgebaut und dann hat es Störungen eingekoppelt. Vielen Dank für die perfekte Unterstützung!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.