Ich versuche mich schon seit einer Weile an dem ADC vom Mega 2560.
Und zwar möchte ich mittels einen TMP36 die Temperatur am LCD-Display anzeigen lassen.
Ich habe es mit müh und not geschafft den Analogwert am Display anzeigen zu lassen.
Möchte ich jedoch durch die Berechnungen die Temperatur anzeigen lassen, erscheinen am Display lediglich irgendwelche Zufallszahlen.
Ich habe schon nach einer Lösung gesucht, jedoch bisher ohne Erfolg.
Ich habe ein paar Sachen probiert, und konnte feststellen, dass das Problem daran liegt das ich den Int-Wert auf einen Float-Wert umwandle. Verbessert mich wenn diese Vermutung falsch ist.
Nun denn, bin ich schon stark verzweifelt. Anbei befindet sich der Sketch, könnte mir bitte jemand helfen?
Hallo, danke für die Antwort!
Ich hätte vielleicht noch erwähnen sollen, dass dies für einer Übung in der Schule ist und ich dem Befehl "AnalogRead()" nicht verwenden darf, sondern mit dem Registern arbeiten muss.
Also die ADCValue ist richtig, schwankt zwischen 151-154 was mit dem Taschenrechner umgerechnet ungefähr 26-26,5° ist.
Mein Problem liegt daran, dass wenn ich mit dieser ADCValue im Programm die Temperatur berechnen will, dieser nur eine Zufallszahl ausgibt (-18022, 75086....).
Diesen Befehl hat mir mein Lehrer im letzten Unterricht angesagt, bzw. er hat uns diesen eingetrichtert, daher dachte ich nicht, dass der Fehler daran liegen würde.
Ich habe die Ausgabe jetzt so gemacht wie du es mir gesagt hast, und schwupp, es funktioniert.
printf() ist schön. Aber für einfache Ausgaben braucht man das in der Arduino Software nicht. Das verwendet man u.a. wenn man Zahlen auf eine konstante Breite formatieren muss. Bei LCDs z.B. kann das sehr hilfreich sein
Es gibt nur eine Sorte Mensch, welche Fehlerfrei (oder frei von Irrtümern) ist, der Unmensch. Und eigentlich hat er ja auch recht. Denn die float Ausgabe ist in C und C++ für ALLE Systeme vorgesehen. Nur die AVR Implementierung tut das per default nicht, da es doch reichlich Ressourcen benötigt. Und die sind halt knapp.
Das Float in sprintf() kannst du in der platform.local.txt der zugehörigen Boarddefinition aktivieren.
Als Lehrer hat er den Vorteil, dass er nicht so sehr gezwungen wird, sein Wissen zu aktualisieren, sobald er eine Festanstellung (als Beamter) hat.
Es wäre sicher schön für Schüler, würde der Lehrer die vermittelten Grundlagen auch an der (vermutlich auch vorgegebenen) Hardware und Programmierumgebung selbst ausprobieren.
Aber so lernt ihr das Wesentliche ("Verzeihe deinen Lehrern, vielleicht wirst du selber mal eine")
Auch (@combie) sollte man gut zwischen der Sprachdefinition selbst, dem ziemlich umfangreichen library - System, und diversen Compilern und Ziel-Plattformen unterscheiden.
Wenn du diesen Thread nun noch als gelöst/erledigt markieren könntest, @danielh98 ...