Temperaturanzeige mit TTY: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K (hat „Temperaturanzeige+mit+TTY“ nach „Temperaturanzeige mit TTY“ verschoben)
(Temperaturanzeige auch für negative Temperaturen)
Zeile 1: Zeile 1:
 
<pre>CONTROL_START
 
<pre>CONTROL_START
  
THREAD(update_clock)
+
THREAD(temploop)
         TTY_SELECT(clock)
+
         int16_t Temperatur = ONEWIRE_GET(ONEWIRE-ID);
         TTY_HOME()
+
         dnl max. Länge des erzeugten Strings: 5 (123.4 bzw. -12.3)
         TTY_WRITE_TIME()
+
         char temp_str[5];
         WAIT(1)
+
         itoa_fixedpoint(Temperatur, 1, temp_str);
THREAD_END(update_clock)
 
 
 
THREAD(update_temp)
 
        int16_t Temperatur = ONEWIRE_GET(10d85594010800eb);
 
  
 
         TTY_SELECT(temp)
 
         TTY_SELECT(temp)
 
         TTY_HOME()
 
         TTY_HOME()
         TTY_WRITE(`"%2d,%d"', Temperatur / 10, Temperatur % 10)
+
         TTY_WRITE(`"%5sC"', temp_str)
  
         WAIT(10)
+
         WAIT(2)
THREAD_END(update_clock)
+
THREAD_END(temploop)
  
 
ON STARTUP DO
 
ON STARTUP DO
 +
        dnl Initialize display and write out greeting
 
         TTY_CLEAR()
 
         TTY_CLEAR()
         TTY_WRITE("Moin stesie\n")
+
         TTY_HOME()
 +
 
 +
        TTY_CREATE_WINDOW(temp, 1, 6, 0, COLS-6)
 +
 
 +
THREAD_START(temploop)
  
        TTY_CREATE_WINDOW(clock, 1, 8, 1, COLS - 8)
+
END
        THREAD_START(update_clock)
 
        TTY_CREATE_WINDOW(temp, 1, 4, 1, 0)
 
        THREAD_START(update_temp)
 
END  
 
  
 
CONTROL_END
 
CONTROL_END
Zeile 33: Zeile 30:
 
* Die ''Onewire-ID'' sollte natürlich angepasst werden.  Vorher im Zweifel mit '''1w list''' abfragen, welche angeschlossen sind.
 
* Die ''Onewire-ID'' sollte natürlich angepasst werden.  Vorher im Zweifel mit '''1w list''' abfragen, welche angeschlossen sind.
 
* Die lokale Variable '''Temperatur''' dient zum Zwischenspeichern des Ergebnisses von ONEWIRE_GET, da der Sensor ansonsten zweimal abgefragt werden müsste.  Nachdem kein WAIT oder ähnliches dazwischen ist, sollte diese auch kein Problem darstellen.
 
* Die lokale Variable '''Temperatur''' dient zum Zwischenspeichern des Ergebnisses von ONEWIRE_GET, da der Sensor ansonsten zweimal abgefragt werden müsste.  Nachdem kein WAIT oder ähnliches dazwischen ist, sollte diese auch kein Problem darstellen.
 +
* mit ''itoa_fixedpoint'' wird die Temperatur (Festkommazahl mit einer Nachkommastelle) in einen String umgewandelt. Inklusive ''-'' bei negativen
 +
Temperaturen
  
 
[[Category:Control6 Examples]]
 
[[Category:Control6 Examples]]

Version vom 13. Juli 2010, 10:00 Uhr

CONTROL_START

THREAD(temploop)
        int16_t Temperatur = ONEWIRE_GET(ONEWIRE-ID);
        dnl max. Länge des erzeugten Strings: 5 (123.4 bzw. -12.3)
        char temp_str[5];
        itoa_fixedpoint(Temperatur, 1, temp_str);

        TTY_SELECT(temp)
        TTY_HOME()
        TTY_WRITE(`"%5sC"', temp_str)

        WAIT(2)
THREAD_END(temploop)

ON STARTUP DO
        dnl Initialize display and write out greeting
        TTY_CLEAR()
        TTY_HOME()

        TTY_CREATE_WINDOW(temp, 1, 6, 0, COLS-6)

THREAD_START(temploop)

END

CONTROL_END
  • Die Onewire-ID sollte natürlich angepasst werden. Vorher im Zweifel mit 1w list abfragen, welche angeschlossen sind.
  • Die lokale Variable Temperatur dient zum Zwischenspeichern des Ergebnisses von ONEWIRE_GET, da der Sensor ansonsten zweimal abgefragt werden müsste. Nachdem kein WAIT oder ähnliches dazwischen ist, sollte diese auch kein Problem darstellen.
  • mit itoa_fixedpoint wird die Temperatur (Festkommazahl mit einer Nachkommastelle) in einen String umgewandelt. Inklusive - bei negativen

Temperaturen