Arduino, LCD und PWM

Gast #5020659
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #5024906
Lesenswert?
• ▲
▼
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!!
Gast #5025008
Lesenswert?
• ▲
▼
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.
#5025392
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.