int8_t Fan_State_Rep(uint8_t fan, int8_t input) { // Wert bearbeiten? if (input == MENU_INPUT_PUSH) { Fan_edit ^= 1; eeprom_write_byte((void*) &Fan_fansE[fan].rep, Fan_fans[fan].rep); } if (Fan_edit && (input == MENU_INPUT_DOWN)) { Fan_fans[fan].rep = (Fan_fans[fan].rep < FAN_REP_MAX) ? (Fan_fans[fan].rep+1) : (FAN_REP_MAX); } if (Fan_edit && (input == MENU_INPUT_UP)) { Fan_fans[fan].rep = (Fan_fans[fan].rep > FAN_REP_MIN) ? (Fan_fans[fan].rep-1) : (FAN_REP_MIN); } // Ausgabe lcd_clear(); lcd_home(); if (Fan_edit) lcd_data('*'); else lcd_data('>'); lcd_string_P(MENU_STR_REPEAT); lcd_number(Fan_fans[fan].rep, 2, ' '); lcd_data('h'); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_DURATION); lcd_number(Fan_fans[fan].dur, 2, ' '); lcd_string_P(MENU_STR_MIN); return Fan_edit; }
int8_t Fan_State_Humi(uint8_t fan, int8_t input) { // Wert bearbeiten? if (input == MENU_INPUT_PUSH) { Fan_edit ^= 1; eeprom_write_byte((void*) &Fan_fansE[fan].humi, Fan_fans[fan].humi); } if (Fan_edit && (input == MENU_INPUT_DOWN)) { Fan_fans[fan].humi = (Fan_fans[fan].humi < FAN_HUMI_MAX) ? (Fan_fans[fan].humi+1) : (FAN_HUMI_MAX); } if (Fan_edit && (input == MENU_INPUT_UP)) { Fan_fans[fan].humi = (Fan_fans[fan].humi > FAN_HUMI_MIN) ? (Fan_fans[fan].humi-1) : (FAN_HUMI_MIN); } // Ausgabe lcd_clear(); lcd_home(); if (Fan_edit) lcd_data('*'); else lcd_data('>'); lcd_string_P(MENU_STR_HUMIDITY); lcd_number(Fan_fans[fan].humi, 2, ' '); lcd_data('%'); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_ONTIME); lcd_number(Fan_fans[fan].timeH, 2, ' '); lcd_data(':'); lcd_number(Fan_fans[fan].timeM, 2, '0'); return Fan_edit; }
int8_t Fan_State_On(uint8_t fan, int8_t input) { // Wert bearbeiten? if (input == MENU_INPUT_PUSH) { Fan_edit ^= 1; eeprom_write_byte((void*) &Fan_fansE[fan].timeM, Fan_fans[fan].timeM); eeprom_write_byte((void*) &Fan_fansE[fan].timeH, Fan_fans[fan].timeH); } if (Fan_edit && (input == MENU_INPUT_DOWN)) { if (Fan_fans[fan].timeM < 55) { Fan_fans[fan].timeM += 5; } else if (Fan_fans[fan].timeH < 23) { Fan_fans[fan].timeM = 0; Fan_fans[fan].timeH++; } } if (Fan_edit && (input == MENU_INPUT_UP)) { if (Fan_fans[fan].timeM > 0) { Fan_fans[fan].timeM -= 5; } else if (Fan_fans[fan].timeH > 0) { Fan_fans[fan].timeM = 55; Fan_fans[fan].timeH--; } } // Ausgabe lcd_clear(); lcd_home(); if (Fan_edit) lcd_data('*'); else lcd_data('>'); lcd_string_P(MENU_STR_ONTIME); lcd_number(Fan_fans[fan].timeH, 2, ' '); lcd_data(':'); lcd_number(Fan_fans[fan].timeM, 2, '0'); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_REPEAT); lcd_number(Fan_fans[fan].rep, 2, ' '); lcd_data('h'); return Fan_edit; }
main() { DDRC=255; lcd_init(); int j=0; int i=99999; eeprom_write_word(0x001,i); j=eeprom_read_word(0x001); lcd_command(0x8f); lcd_number(j); }
int8_t Fan_State_Back(uint8_t fan, int8_t input) { lcd_clear(); lcd_home(); lcd_data(' '); lcd_string_P(MENU_STR_DURATION); lcd_number(Fan_fans[fan].dur, 2, ' '); lcd_string_P(MENU_STR_MIN); lcd_setcursor(0, 2); lcd_data('>'); lcd_string_P(MENU_STR_BACK); return 0; }
int8_t Fan_State_Ctrl(uint8_t fan, int8_t input) { // Wert bearbeiten? if (input == MENU_INPUT_PUSH) { Fan_edit ^= 1; eeprom_write_byte((void*) &Fan_fansE[fan].ctrl, Fan_fans[fan].ctrl); } if (Fan_edit && (input == MENU_INPUT_DOWN)) { Fan_fans[fan].ctrl = (Fan_fans[fan].ctrl < FAN_CTRL_MAX) ? (Fan_fans[fan].ctrl+1) : (FAN_CTRL_MAX); } if (Fan_edit && (input == MENU_INPUT_UP)) { Fan_fans[fan].ctrl = (Fan_fans[fan].ctrl > FAN_CTRL_MIN) ? (Fan_fans[fan].ctrl-1) : (FAN_CTRL_MIN); } // Ausgabe lcd_clear(); lcd_home(); if (Fan_edit) lcd_data('*'); else lcd_data('>'); lcd_string_P(MENU_STR_CTRL); switch (Fan_fans[fan].ctrl) { case FAN_CTRL_OFF: lcd_string_P(MENU_STR_CTRL_OFF); break; case FAN_CTRL_HUMI: lcd_string_P(MENU_STR_CTRL_HUMI); break; case FAN_CTRL_TIME: lcd_string_P(MENU_STR_CTRL_TIME); break; case FAN_CTRL_REP: lcd_string_P(MENU_STR_CTRL_REP); break; } lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_HUMIDITY); lcd_number(Fan_fans[fan].humi, 2, ' '); lcd_data('%'); return Fan_edit; }
int8_t Menu_Root(int8_t input) { lcd_clear(); lcd_home(); switch (Menu_currState) { case MENU_STATE_STATUS: lcd_number(Clock_getHour(), 2, '0'); lcd_data( 0x3A ); // : lcd_number(Clock_getMinute(), 2, '0'); lcd_data( 0x3A ); // : lcd_number(Clock_getSecond(), 2, '0'); lcd_data(' '); lcd_string_P(MENU_STR_OCLOCK); lcd_setcursor(0, 2); static uint8_t blink; if (Alarm_wasTriggered() && (blink++ & 4)) { lcd_data(LCD_GC_CHAR0); lcd_string_P(MENU_STR_ALARM_STATUS); } else { switch (Sensor_getType()) { case SENSOR_TYPE_SEARCHING: lcd_string_P(MENU_STR_SEARCHING); break; default: case SENSOR_TYPE_NONE: lcd_string_P(MENU_STR_NO_SENSOR); break; case SENSOR_TYPE_ERROR: lcd_string_P(MENU_STR_SENSOR_ERROR); break; case SENSOR_TYPE_SHT1X: case SENSOR_TYPE_HYT131: lcd_number(Sensor_getTemp() / 100, 2, '0'); lcd_data(','); lcd_number(Sensor_getTemp() % 100, 2, '0'); lcd_data( 0xDF ); // ° lcd_data('C'); lcd_data(' '); lcd_data(' '); lcd_data(' '); lcd_number(Sensor_getHumi() / 100, 2, '0'); lcd_data(','); lcd_number(Sensor_getHumi() % 100, 2, '0'); lcd_data('%'); break; } } break; case MENU_STATE_FAN1: lcd_data('>'); lcd_string_P(MENU_STR_FAN1); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_FAN2); break; case MENU_STATE_FAN2: lcd_data('>'); lcd_string_P(MENU_STR_FAN2); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_FAN3); break; case MENU_STATE_FAN3: lcd_data('>'); lcd_string_P(MENU_STR_FAN3); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_FAN4); break; case MENU_STATE_FAN4: lcd_data('>'); lcd_string_P(MENU_STR_FAN4); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_ALARM); break; case MENU_STATE_ALARM: lcd_data('>'); lcd_string_P(MENU_STR_ALARM); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_CAL); break; case MENU_STATE_CAL: lcd_data('>'); lcd_string_P(MENU_STR_CAL); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_TIME); break; case MENU_STATE_TIME: lcd_data('>'); lcd_string_P(MENU_STR_TIME); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_VER); break; case MENU_STATE_VER: lcd_data('>'); lcd_string_P(MENU_STR_VER); lcd_setcursor(0, 2); lcd_data(' '); lcd_string_P(MENU_STR_BACK); break; case MENU_STATE_BACK: lcd_data(' '); lcd_string_P(MENU_STR_VER); lcd_setcursor(0, 2); lcd_data('>'); lcd_string_P(MENU_STR_BACK); break; } return 0; }