Dies ist eine alte Version des Dokuments!


C6-Notizen

http://paste2.org/p/1193223 LED TOGGLE WEN 25 grad

C6_HEADER(`/* This will be in control6.h */')
#include "services/stella/stella.h"
CONTROL_START
 
THREAD(test)
ON IRMP_READ > 0 DO
if(IRMP_PROTOCOL==8 && IRMP_ADDRESS==0x0002) switch(IRMP_COMMAND)
{
 case 0x0268:
   stella_setValue(STELLA_SET_IMMEDIATELY, 0, 255);
   break;

 case 0x0068:
   stella_setValue(STELLA_SET_IMMEDIATELY, 0, 0);
   break;
}
END
THREAD_END(test)
 
ON STARTUP DO
	THREAD_START(test);
END
 
CONTROL_END

am einfachsten ist && IRMP_FLAGS==0

C6_HEADER(`/* This will be in control6.h */')

CONTROL_START

  PIN_INPUT(KEY)
  PIN_PULLUP(KEY)
  PIN_OUTPUT(LED)

  THREAD(online)
      TIMER_START(onew)
      PIN_SET(LED);
      TIMER_WAIT(onew, 1)
      ON PIN_FALLING(KEY) DO THREAD_STOP(online) END
  THREAD_END(online)


  ON PIN_FALLING(KEY) DO THREAD_RESTART(online) END

CONTROL_END
CONTROL_START
  THREAD(templog)
    // Define variables
    int16_t temp = 0;
    char temp_str[5];

    // Write timestamp to temp.log
    VFS_LOG("temp.log", "\n%04d-%02d-%02d %02d:%02d", CLOCK_YEAR(), CLOCK_MONTH(), CLOCK_DAY(), CLOCK_HOUR(), CLOCK_MIN());

    // Get value of 1-Wire sensor
    temp = ONEWIRE_GET(100004990108004b);
    // Convert value to string
    itoa_fixedpoint(temp, 1, temp_str);
    // Write value to temp.log
    VFS_LOG("temp.log", "|100004990108004b:%5s", temp_str);

    WAIT(2);

    // Get value of 1-Wire sensor
    temp = ONEWIRE_GET(108ae8980108001a);
    // Convert value to string
    itoa_fixedpoint(temp, 1, temp_str);
    // Write value to temp.log
    VFS_LOG("temp.log", "|108ae8980108001a:%5s", temp_str);

    WAIT(2);

    // Get value of 1-Wire sensor
    temp = ONEWIRE_GET(1065f79801080004);
    // Convert value to string
    itoa_fixedpoint(temp, 1, temp_str);
    // Write value to temp.log
    VFS_LOG("temp.log", "|1065f79801080004:%5s", temp_str);

    WAIT(600);
  THREAD_END(templog)

  ON ONCE CLOCK_MIN == 0 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 5 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 10 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 15 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 20 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 25 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 30 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 35 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 40 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 45 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 50 DO THREAD_RESTART(templog); END
  ON ONCE CLOCK_MIN == 55 DO THREAD_RESTART(templog); END
CONTROL_END

C6_HEADER(`/* This will be in control6.h */')
int16_t Temperatur;

CONTROL_START
CLOCK_USED()

THREAD(read_temp)
  Temperatur = ONEWIRE_GET(10a00599010800da);
  ON abs(Temperatur)>250 DO
    PIN_SET(LED2);
    TTY_SELECT(heiz)
    TTY_HOME()
    TTY_WRITE("Heizung an ")
  END

  ON abs(Temperatur)<250 DO
    PIN_CLEAR(LED2);
    TTY_SELECT(heiz)
    TTY_HOME()
    TTY_WRITE("Heizung aus")
  END
 WAIT(5);
THREAD_END(read_temp)

THREAD(temploop)
        int16_t Temperatur = ONEWIRE_GET(10a00599010800da);
        dnl max. L 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(5)
THREAD_END(temploop)

THREAD(update_clock)
        TTY_SELECT(clock)
        TTY_HOME()
        TTY_WRITE_TIME()
        WAIT(1)
THREAD_END(update_clock)


ON STARTUP DO
  TTY_CLEAR()
  TTY_CREATE_WINDOW(clock, 0, 8, 0, 0)
  THREAD_START(update_clock)

  TTY_CREATE_WINDOW(temp, 0, 6, 0, COLS - 6)
  THREAD_START(temploop)

  TTY_CREATE_WINDOW(heiz, 0, 11, 1, 0)
  THREAD_START(read_temp);
END

CONTROL_END