1 | do
|
2 | {
|
3 |
|
4 | // Kommando an den Sensor (Messung starten)
|
5 | // >>Notiz>> Wir gehen einfach von einem Erfolg aus <<
|
6 | start_meas();
|
7 |
|
8 | // Temperatur vom Sensor holen
|
9 | t = read_meas_fast();
|
10 | t = t/8;
|
11 | u = t;
|
12 |
|
13 | // Temperatur in Grad Celsius:
|
14 | tC = (t >> 1) | (t & 0xFF00);
|
15 | if(tC < 0) tC = -tC; //Vorzeichen entfernen
|
16 |
|
17 |
|
18 | //reset (alle LEDs aus)
|
19 | p = 0x00;
|
20 |
|
21 | //Konfiguration der Pins für LEDs setzen
|
22 | // (0 = LED an, 1 = LED aus)
|
23 | if(tC >= 80) { p |=(1<<7); tC -= 80; } //Pin7 f?r 80?C an
|
24 | if(tC >= 40) { p |=(1<<6); tC -= 40; } //Pin6 f?r 40?C an
|
25 | if(tC >= 20) { p |=(1<<5); tC -= 20; } //Pin5 f?r 20?C an
|
26 | if(tC >= 10) { p |=(1<<4); tC -= 10; } //Pin4 f?r 10?C an
|
27 | if(tC >= 8) { p |=(1<<3); tC -= 8; } //Pin3 f?r 8?C an
|
28 | if(tC >= 4) { p |=(1<<2); tC -= 4; } //Pin2 f?r 4?C an
|
29 | if(tC >= 2) { p |=(1<<1); tC -= 2; } //Pin1 f?r 2?C an
|
30 | if(tC >= 1) { p |=(1<<0); tC -= 1; } //Pin0 f?r 1?C an
|
31 |
|
32 | t_ist = ~p;
|
33 | //Solltemp. in der Schleife abholen ermöglicht Solltemp nachzuregeln
|
34 | t_soll = PIND; //Status von D in SchalterD speichern
|
35 |
|
36 |
|
37 | p = ~p; //LED Signal invertieren weil LED falsch angelötet
|
38 | //p = p-0,5; //Eichung des Thermometers
|
39 | LED_OUT = p;
|
40 |
|
41 | ///Hysterese...Relais
|
42 | ///t_ist/ kommt vom Temp. - sensor
|
43 | ///t_soll/ kommt von PIND
|
44 |
|
45 | if((t_ist <= t_soll + 1)) //&& !(PORTC & (1<<RELAIS_C)))
|
46 | {
|
47 | //Heizung //an //(Relais HIGH)
|
48 | PORTC |= (1<<RELAIS_C);
|
49 | }
|
50 | else if((t_ist >= t_soll - 1))// && (PORTC & (1<<RELAIS_C)))
|
51 | {
|
52 | //Heizung////aus //(Relais LOW)//
|
53 | PORTC &= ~ (1<<RELAIS_C);
|
54 | }
|
55 |
|
56 |
|
57 | // ein wenig warten verhindert,
|
58 | // dass der Sensor durch Selbsterw?rmung
|
59 | // falsche Ergebnisse liefert
|
60 | _delay_ms(1000);
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 | }while(1);
|