Temperaturmessung und Ausgabe auf 2*16 LCD

#741014
Lesenswert?

Hi,
endlich ist mein erstes Projekt fertig.
Das Projekt beeinhaltet die Temperaturmessung mit einem PT1000, als 
Temperatursenor, als µC dient der atmega168, die Temperatur wird auf 
einem 2*16 LCD ausgeben, in Zukunft soll auch noch die Uhrzeit über 
DCF77 eingeblendet werden. Der übernächste Schritt ist dann das loggen 
der Temperatur in bestimmten Zeitabschritten auf einer SD-Karte.
Angehängte Dateien:
Gast #741037
Lesenswert?

Das ist ja schön. Aber was in Gottes Namen bringt jemanden dazu,
eine Datei gepackt mit dem Format 7z hier hochzuladen?
Um in Dein Schönes Projekt zu schauen suche ich mir jetzt erst
mal einen Entpacker dafür. Diesen installiere ich dann um ihn danach 
wahrschienlich nie wieder zu gebrauchen und meinen PC mit unnützem Müll 
vollzustopfen. Nein danke.

Gast
Gast #741046
Lesenswert?

@Gast
Naja das ist halt das 7zip programm ist eigentlich garnicht schlecht. 
Aber das normale zip format ist natürlich etwas gebräuchlicher.

@Steffen K.
Ganz nett das Programm. Ich hab aber noch etwas konstruktive Kritik:
-du solltest dir angewöhnen kommentare in deine Programme zu schreiben
-die 1sec. warteschleife ist ziemlich unschön nimm lieber einen Timer 
dafür.
Gast #741091
Lesenswert?

Warum nicht gleich so. 7z habe sicher einige auf dem Rechner, aber 
sicherlich die wenigsten. ZIP dagegen wird jeder können. Was da besser 
ist oder nicht spielt bei den paar Bytes glaube ich keine Rolle.

Ja für dein erstes Projekt schon nicht schlecht.
Zu den Kommentaren von Bjoern möchte ich ergänzen, dass ich in DIESEM 
Fall die Sekunde Warteschleife nicht so schlimm finde. Wenn man das 
Programm so für sich alleine läßt, ist das OK. Aber wenn Du noch DCF77 
z.B. dazu bauen möchtest u.s.w. dann hat Bjoern Recht. Da ist die 
Warteschleife sehr hinderlich. Was mir aber aufgefallen ist: der AVR 
kennt keine double typen, er nimmt immer float. Das nur als Hinweis. 
Ansonsten ist es keine schöne Art, nur mit globalen Variablen zu 
programmieren. Das bringt irgendwann viel Ärger, außerdem wird dir dann 
bei größeren Projekten der Speicher sehr schnell eng.

Hier schnell ein Beispielcode ohne Warteschleifen (nicht getestet, nur 
schnell zusammen gehackt). Damit hast du in der Hauptschleife wieder 
"volle Rechenzeit" und vergeudest sie nirgends.

Gruß der Gast
1
static volatile uint_8 sekunde = 0;  // diese glob. Var. brauchen wir :-)
2

3
ISR(Timer_IRQ_xyz)  // tickt z.B. mit 100ms
4
{
5
  static ticks=0;
6
  if( (++ticks) >= 10 )
7
  {
8
    ticks = 0;
9
    sekunde = 1;
10
  }
11
}
12

13
void sekunden_fkt(void)
14
{
15
  //warte();  warten brauchen wir nicht mehr
16
  lcd_clear();
17
  adw();
18
  temperaturberechnen();
19
  ausgeben();
20
}
21

22
int main()
23
{
24
  init_all();  // alles initialisieren
25

26
  while(1)
27
  {
28
    if( sekunde )
29
    {
30
      sekunde =0;
31
      sekunden_fkt();
32
    }
33

34
    if( was_anderes )
35
       mach_was_anderes();
36
  }
37

38

39
}
#1787839
Lesenswert?

Da du den LCD-Anschluss sowieso nach deiner Hardware konfigurieren 
musst:
Lad dir AVR-Studio herunter. Lad dir WinAVR herunter.
Installier beides.
Kompilier das Beispiel

Brenn es in deinen µC

Es besteht eher weniger Sinn darin, ein deratiges Programm, welches im 
C-Source Code vorliegt, als HEX-File zu veröffentlichen.

(Ausserdem: Im Zip File, im Default Ordner ist das zugehörige LCD.HEX)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren