Forum: Mikrocontroller und Digitale Elektronik wie bekomme ich die Temperatur aufs LCD?


von Maik S. (sly1)


Angehängte Dateien:

Lesenswert?

Hallo alle,

Ich bin noch ein Anfänger hier und habe folgendes Problem.
Die 2 Dateien die ich angehängt habe funktionieren beide Problemlos für 
sich, nur das die Temperaturanzeige im Serial Monitor erfolgt und nicht 
auf dem LCD. Wie kann ich es anstellen, das beide Dateien zusammen 
funktionieren in einen Programm und die Anzeige der Temperaturen auf den 
LCD erfolgt?
Und wenn möglich auch noch die unterschiedlichen Sensoren für sich?
Das DEMO Programm im LCD Programm kann dabei aussen vor bleiben dies ist 
nur zum Test gedacht.

Danke im voraus Sly1

von Karl H. (kbuchegg)


Lesenswert?

Maik Sly schrieb:

> auf dem LCD. Wie kann ich es anstellen, das beide Dateien zusammen
> funktionieren in einen Programm

Trenn dich von der Vorstellung, dass du 2 existierende Programme zu 
einem einzigen zusammenmischen kannst.

Prinzipiell schreibst du ein neues Programm.
Für dieses neue Programm kannst du Ideen und Techniken aus beiden 
Programmen verwenden bzw. Einzelteile weiterverwenden. Aber mit der 
Vorstellung: Ich hab 2 funktionierende Programme und irgendwie 
verheirate ich jetzt die beiden, damit fällst du mit absoluter 
Sicherheit auf die Schnauze.

Also:
Sieh dir an, wie in dem einen Code die Temperatur gemessen wird. Sieh 
dir im anderen Programm an, wie dort Ausgaben (auch Zahlenausgaben) auf 
das LCD durchgeführt werden. Und dann schreib ein neues Programm, 
welches die beiden Techniken kombiniert.

> Ich bin noch ein Anfänger
Macht nichts. Das nennt sich eben "Programmieren lernen". Programmieren 
ist mehr, viel mehr, als nur vorgefertigte Einzelteile zu benutzen ohne 
sie zu verstehen.
Wenn du Bilder-Maler werden willst, musst du malen! In vorgefertigen 
Zeichnungen, vorgefertigte Flächen anhand einer Nummer mit 
vorgefertigter Farbe ausfüllen hat nichts mit dem zu tun, was einen 
Künstler ausmacht. Als Lernender studierst du vielleicht die Technik und 
Bildkomposition anderer großer Meister. Aber deine eigenen Bilder malst 
du selber!

Und genau in demselben Sinne studiert man auch Programme anderer um sich 
Techiken und Vorgehensweisen abzusehen und daraus zu lernen. Aber seine 
Programme schreibt man dann selber.

Und ja. Das ist ein Lernprozess, der seine Zeit dauert. Gestern noch am 
Fliessband, heute bereits Industrieprogrammierer - das spielt es nun mal 
nicht. Die Ausbildungs- und Lernzeit für Programmierer bemisst sich in 
Jahren/Monaten und nicht in Tagen.

von Maik S. (sly1)


Lesenswert?

Danke, das habe ich schon probiert.
Mein problem ist, beim LCD Programm gibt es Funktionen und ein main 
Programm.
Wenn ich das Temperatur Programm in eine Funktion packe weis ich nicht 
wie ich die Übergabe der werte machen soll. Es kommt immer zu 
Fehlermeldungen wie z.B. "invalid conversion from 'const char*' to 
'unsigned char' " oder ähnliches.
Ich brauche halt einen ansatz wie ich das Temperatur mit ins LCD 
Programm einbauen kann.

Danke dir trotzdem.

von Karl H. (kbuchegg)


Lesenswert?

Maik Sly schrieb:
> Danke, das habe ich schon probiert.
> Mein problem ist, beim LCD Programm gibt es Funktionen und ein main
> Programm.
> Wenn ich das Temperatur Programm in eine Funktion packe weis ich nicht
> wie ich die Übergabe der werte machen soll. Es kommt immer zu
> Fehlermeldungen wie z.B. "invalid conversion from 'const char*' to
> 'unsigned char' " oder ähnliches.

Tja.
Eines der wesentlichen Dinge lautet nun mal: Du musst deine 
Programmiersprache lernen. Keiner kann das von Geburt an, wir alle 
mussten da durch.

Wenn dich das überfordert, dann ist das ein sicheres Zeichen dafür, dass 
du Schritte übersprungen hast und noch nicht so weit bist.
Also: eine einfachere Aufgabe suchen, in deinen Lernunterlagen ein paar 
Kapitel zurückgehen.

von Harald W. (wilhelms)


Lesenswert?

Maik Sly schrieb:

>         DS18x20_Temperature.pde (2,6 KB, 6 Downloads)
>         LCD_Ausgabe.pde (17,4 KB, 11 Downloads)

Wie liest man denn *.pde-Dateien?
Fragt sich
Harald

von Karl H. (kbuchegg)


Lesenswert?

> Wenn dich das überfordert, dann ist das ein sicheres Zeichen dafür,
> dass du Schritte übersprungen hast und noch nicht so weit bist.

Wie ich da drauf komme?

Die Demo-Programme, die du dir da zusammengesucht hast, sind so einfach 
zu verstehen, dass es einfacher schon fast nicht mehr geht. Wenn du da 
Schwierigkeiten hast, dann ist es ein sicheres Zeichen dafür, dass du 
sie noch nicht einmal studiert hast und durchgesehen bzw. mit ihnen 
'gespielt' hast, was dir diese Demos zeigen bzw. beibringen wollen.

Schnapp dir zb das LCD-Demo und specke es ab, so dass du nur eine 
einzige Zahl ausgeben kannst, die in einer Variablen vorliegt. Alles 
andere, was dazu nicht notwendig ist fliegt raus.

von Karl H. (kbuchegg)


Lesenswert?

Harald Wilhelms schrieb:
> Maik Sly schrieb:
>
>>         DS18x20_Temperature.pde (2,6 KB, 6 Downloads)
>>         LCD_Ausgabe.pde (17,4 KB, 11 Downloads)
>
> Wie liest man denn *.pde-Dateien?

Sind Textdateien (aus der Arduino IDE). Die kann man mit einem 
Texteditor aufmachen. Notepad hat allerdings mit dem Zeilenumbruch so 
seine Schwierigkeiten - also einen ordentlichen Editor nehmen.

von Düsendieb (Gast)


Lesenswert?

>// Demoprogramm
>  while(1) {

hier machst Du 20 bis dreißig Leerzeilen und fängst dann an Teile aus 
dem Hauptprogramm des Temperatur Messprogramms einzufügen.

>    // Zeichenkettenausgaben
>    printf_lcd(0,0,"LCD DIP204 KS0073",1);

Die hier benötigten Funktionen kommen oben davor.


und dann Schritt für Schritt erweitern.

von Harald W. (wilhelms)


Lesenswert?

Karl Heinz Buchegger schrieb:

>> Wie liest man denn *.pde-Dateien?
>
> Sind Textdateien (aus der Arduino IDE).

Danke.
Gruss
Harald

von W.S. (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Tja.
> Eines der wesentlichen Dinge lautet nun mal: Du musst deine
> Programmiersprache lernen.

Tja (ebenfalls).

Das Erlernen irgendeiner Programmiesprache ist nicht der erste, sondern 
der zweite oder gar dritte Schritt. Der allererste Schritt besteht 
darin, die prinzipielle Funktionsweise einer Hardware zu verstehen, die 
Befehle ausführen und ein Programm abarbeiten kann. Der nächste Schritt 
ist das Verstehen von grundlegenden Bestandteilen einer jeden 
Programmiersprache: Vereinbarungen, Variablen, Programmcode. Danach 
kommt die Zuwendung zu irgendeiner Programmiersprache.

Ich befürchte, unser junger Held steht noch vor dem allerersten 
Schritt.

W.S.

von Maik S. (sly1)


Lesenswert?

Danke ihr habt mir sehr :-( geholfen.

Ich habe ein staatlich abgeschlossenes Studium als Programmierer. Ich 
habe nur leider nicht die Zeit und wollte mir es einfacher machen und 
schauen ob mir einer auf die schnelle helfen kann. Aber ich sehe schon 
das hier nur lauder klug ... sind die mir sagen wollen, lerne 
Programmieren. (Danke das kann ich schon.)  Also stehe ich nicht am 
anfang, sondern bin auf mich selbst gestellt.

Danke euch trotzdem.

von Karl H. (kbuchegg)


Lesenswert?

Maik Sly schrieb:
> Danke ihr habt mir sehr :-( geholfen.
>
> Ich habe ein staatlich abgeschlossenes Studium als Programmierer.

Erzähl deinen Schmäh woanders

Selbst wenn du kein abgeschlossenes Studium hast, ist es trivial in 
beiden Programmen die jeweiligen main() zu studieren und eine neues zu 
schreiben, in dem beide zusammengeführt werden. Wenn ich das in 20 
Sekunden kann, dann wirst du das in ein paar Stunden ja wohl hinkriegen 
mit deinem abgeschlossenem Studium

von Frank L. (hermastersvoice)


Lesenswert?

vielleicht hätte er das Studium nicht den Staat beenden lassen sondern 
es selbst machen sollen?!? Ich lach mich weg!

von Cyblord -. (cyblord)


Lesenswert?

> Ich bin noch ein Anfänger hier und habe folgendes Problem.

> Ich habe ein staatlich abgeschlossenes Studium als Programmierer.

Ah ja.


Allerdings frage ich mich schon, was das für ominöses Studium sein soll. 
Obwohl, heutzutage mit den neuen Bachelor Dinges kann ich mir vorstellen 
dass eine Wald und Wiesen Hochschule aufm Dorf einfach mal schnell nen 
entsprechenden Studiengang "staatl. gerpf. Programmierer" anbietet. 
Nicht ärgern nur wundern.

gruß cyblord

von Martin (Gast)


Lesenswert?

Maik Sly schrieb:
> Ich habe ein staatlich abgeschlossenes Studium als Programmierer.

Abgeschlossen mit Zwangsexmatrikulation wegen fortgesetzter 
Lernresistenz?
Anders wäre das nicht zu erklären...

von Helmut L. (helmi1)


Lesenswert?

Maik Sly schrieb:
> Ich habe ein staatlich abgeschlossenes Studium als Programmierer.

Dann lass dir mal schnell das Lehrgeld wiedergeben.

von Wilhelm F. (Gast)


Lesenswert?

Man muß einfach nur das EVA-Prinzip der Datenverarbeitung beherzigen. 
Eingabe, Verarbeitung, Ausgabe. Anfangs mit Tasks und nicht 
zeitsynchronen Vorgängen auf realen µC tat ich mir damit schwer, heute 
geht es. ;-)

von Master of Programming (Gast)


Lesenswert?

Maik Sly schrieb:
> Ich habe ein staatlich abgeschlossenes Studium als Programmierer.

Fordere doch die Studiengebühren wegen Erfolglosigkeit zurück und 
beauftrage einen 10-jährigen Hobbyprogrammierer mit deinen Problemen.
Die machen das für 5€ und so machst du noch Gewinn.

von ET_Stud (Gast)


Lesenswert?

Das ist garnicht so selten... In meinem TU-Jahrgang haben viele Kollegen 
2er-4er auf Programmieren, konnten aber nur exakt die 3 Programme, die 
im Labor abgeprüft wurden auswendig (bzw. fallweise auch mit 
Schummelzetteln).

Der Hammer war aber jemand, der in der letzten Laborübung das gesamte 
Programm bereits abgeschrieben hatte, aber dann nicht in der Lage war, 
die abgeschriebenen Funktionen in der main() in einem Menü aufzurufen 
weil sie diesmal bisschen anders geheissen haben ;)

Und ja, ich musste einem Kollegen auch bei einer Digitaltechnik-Klausur 
diese Assemblerbefehle per SMS schicken...
MOV A, B
RRC
JC IS_ODD
JP IS_EVEN

Soviel zu angehenden staatlich geprüften/diplomierten Programmiereren, 
Programmier-Akademikern,  usw...

@Maik:
Was du mal machst: Du nimmst den Code vom LCD-Display. Hier sehe ich, 
dass du bereits sprintf drinnen hast (man sollte sprintf auf 8-Bittern 
vermeiden wenn es geht). sprintf schreibt Zahlen, Strings, Character, 
... auf eine bestimmte, formatierte Weise in einen String.      Dann 
gibst du deine Temperaturdaten in einen solchen String und gibst diesen 
an die LCD-Ausgabefunktion, welche den String ans Display schickt.

Habe es jetzt nicht getestet, und keine Lust zu denken wie-was-wo-wann, 
aber eventuell hilft dir das weiter:   http://pastebin.com/0hQGEViS

Fehler können natürlich drin sein, aber du weisst jetzt ungefährt, was 
du tun sollst...

Wenn du das geschafft hast, schnapp dir ein C-Buch und lerne die Basics 
(&, *, Pointer, ...) ordentlich, denn wenn's einmal keinen fertigen 
Source gibt, was dann?  Oder gar noch schlimmer: Keine Library, sondern 
nur das Datenblatt. Auch das ist manchmal der Fall.

von Stefan M. (celmascant)


Lesenswert?

Hehe, ich habe in der Ausbildung auch S7 proigrammieren "gelernt" und 
war -in der Ausbildung- recht gut darin.
Aber beim ersten RICHTIGEN Programm wo ich nen Fehler suchen sollte, 
hätte man genau so gut die Putzfrau hinstellen können.
Ein Zettel wo draufsteht "Ich kann" sagt garnichts, obwohl die meisten 
Firmen nichts anderes mehr sehen/hören wollen.

Beim Studium solltest du ja schon das eine oder andere gelernt haben. 
Also setz dich mal einen Nachmittag hin und gehe das AVR-GCC Tutorial 
durch. Damit habe ich von fast Null C für MCs gelernt. Ganz hilfreich 
für die Basics war auch noch das C-Tutorial von rn-wissen.

Also, nimms den Leuten nicht übel, aber von Programmieren in C hast du 
anscheinend recht wenig Ahnung ;)

Noch als Tip: Ich würde beide Programme soweit stripen und ändern, bis 
ich ihre mains einfach in eine Funktion umbenennen und als Source und 
Header zu meinem Projekt hinzufügen kann.
In meiner Main wird dann einfach alles so aufgerufen, wie ich's 
brauche^^

Gruss Stefan

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
Noch kein Account? Hier anmelden.