//asks the user what slot thay wish to load data from and loads the data into //the destination portions of a location state // loc_state_t* loc - the location state to store data to void ui_load_screen(loc_state_t* loc){ char load_from_mem; uint16_t slot; lcd_clrscr(); lcd_puts_P("Load how?\n4)TYPE 6)MEM"); load_from_mem = ui_choice(); if( load_from_mem ){ lcd_clrscr(); lcd_puts_P("Load which slot?"); slot = prompt_uint16(1); //ROW 1 lcd_clrscr(); if( slot < (NUM_SLOTS-1) ){ read_dest(slot, loc); lcd_puts_P("LOADED"); } else { lcd_puts_P("INVALID SLOT!"); } _delay_ms(MSG_WAIT); } else { ui_enter_dest_screen(loc); } }
usbMsgLen_t usbFunctionSetup(uchar data[8]) { usbRequest_t *rq = (void *)data; static uchar dataBuffer[6]; /* buffer must stay valid when usbFunctionSetup returns */ if(rq->bRequest == CUSTOM_RQ_ECHO){ /* echo -- used for reliability tests */ dataBuffer[0] = rq->wValue.bytes[0]; dataBuffer[1] = rq->wValue.bytes[1]; dataBuffer[2] = rq->wIndex.bytes[0]; dataBuffer[3] = rq->wIndex.bytes[1]; usbMsgPtr = dataBuffer; /* tell the driver which data to return */ return 4; }else if(rq->bRequest == CUSTOM_RQ_SET_STATUS){ if(rq->wValue.bytes[0] & 1){ /* set LED */ LED_PORT_OUTPUT |= _BV(LED_BIT); }else{ /* clear LED */ LED_PORT_OUTPUT &= ~_BV(LED_BIT); } }else if(rq->bRequest == CUSTOM_RQ_GET_STATUS){ dataBuffer[0] = ((LED_PORT_OUTPUT & _BV(LED_BIT)) != 0); usbMsgPtr = dataBuffer; return 1; }else if(rq->bRequest == CUSTOM_RQ_GET_METER) { dataBuffer[0] = meter_value; usbMsgPtr = dataBuffer; return 1; } else if(rq->bRequest == CUSTOM_RQ_SET_METER) { meter_value = rq->wIndex.bytes[0]; lcd_clrscr(); } else if(rq->bRequest == CUSTOM_RQ_LCD_CLEAR) { lcd_clrscr(); } else if(rq->bRequest == CUSTOM_RQ_LCD_GOTO) { lcd_gotoxy((rq->wIndex.bytes[0] & 15), (rq->wIndex.bytes[0] & 240)>>4); }else if(rq->bRequest == CUSTOM_RQ_LCD_COMMAND) {
//asks the user what slot they wish to save the destination to // const loc_state_t* loc - the location data to be read void ui_save_screen(const loc_state_t* loc){ uint16_t slot; uint8_t save_currloc = 0; //char button; char success; lcd_clrscr(); lcd_puts_P("Save which?\n4)DEST 6)CURRLOC"); save_currloc = ui_choice(); lcd_clrscr(); lcd_puts_P("Save to where?"); slot = prompt_uint16(1); //ROW 1 lcd_clrscr(); if( slot < (NUM_SLOTS-1) ){ if( save_currloc ){ success = store_loc(slot, loc); } else { success = store_dest(slot, loc); } if( !success ){ lcd_puts_P("SAVE FAILED!"); } else { lcd_puts_P("SAVED"); } } else { lcd_puts_P("INVALID SLOT!"); } _delay_ms(MSG_WAIT); }
//asks the user what latitude and longitude to set the destination to // loc_state_t* loc - where to write the destination information to void ui_enter_dest_screen(loc_state_t* loc){ lcd_clrscr(); //get destination information lcd_clrscr(); lcd_puts_P("Enter the goal\nLatitude..."); _delay_ms(MSG_WAIT); (loc->dest_lat) = prompt_float(); lcd_clrscr(); lcd_puts_P("Enter the goal\nLongitude..."); _delay_ms(MSG_WAIT); (loc->dest_long) = prompt_float(); }
int main(void) { /* initialize display, cursor off */ lcd_init(LCD_DISP_ON); lcd_command(LCD_FUNCTION_4BIT_2LINES ); lcd_clrscr(); int i = 0; lcd_puts_P(" I love you\n"); lcd_puts_P(" Kelsey"); char c; for(;;++i) { if(i%2==0) c = 0xDF; else c = 0x20; lcd_gotoxy(0, 0); lcd_putc(c); lcd_gotoxy(0, 1); lcd_putc(c); lcd_gotoxy(15, 0); lcd_putc(c); lcd_gotoxy(15, 1); lcd_putc(c); _delay_ms(500); } }
int main(void) { uart_init(); debug_init(); lcd_init(LCD_DISP_ON); lcd_clrscr(); DEBUG("init"); msg("begin loop"); while(1) { msg("i2c_start"); i2c_start(); msg("i2c_read_byte(1)"); uint8_t temp = i2c_read_byte(1); DEBUG("get_temp(0): %d", temp); lcd_gotoxy(0, 0); lcd_puts_P(PSTR("Temp: ")); lcd_puts(itoa(temp)); lcd_puts_P(PSTR(DEG"C")); msg("i2c_read_byte(0)"); i2c_read_byte(0); msg("i2c_stop"); i2c_stop(); msg("delay"); _delay_ms(1000); } }
void subprog(void) { lcd_clrscr(); if(current==0) { lcd_puts("BLINK LEDS PORTA\n"); lcd_puts("PRESS 4 TO EXIT \n"); } else if(current==1) { lcd_puts("MOTOR SPEED CONT\n"); lcd_puts("PRESS 4 TO EXIT \n"); } else if(current==2) { lcd_puts("UART PUT&GET DEM\n"); lcd_puts("PRESS 4 TO EXIT \n"); } else if(current==3) { lcd_puts("TIMER1 BLINKY \n"); lcd_puts("PRESS 4 TO EXIT \n"); } else if(current==4) { lcd_puts("DEBOUNCE SW1 \n"); lcd_puts("PRESS 4 TO EXIT \n"); } else if(current==5) { lcd_puts("1 FWD 2 BWD \n"); lcd_puts("PRESS 4 TO EXIT \n"); } }
void menu(void) { lcd_clrscr(); if(current==0) { lcd_puts("BLINK LEDS PORTA\n"); lcd_puts("1SELEC 2UP 3DOWN\n"); } else if(current==1) { lcd_puts("MOTOR SPEED CONT\n"); lcd_puts("1SELEC 2UP 3DOWN\n"); } else if(current==2) { lcd_puts("UART PUT&GET DEM\n"); lcd_puts("1SELEC 2UP 3DOWN\n"); } else if(current==3) { lcd_puts("TIMER1 BLINKY \n"); lcd_puts("1SELEC 2UP 3DOWN\n"); } else if(current==4) { lcd_puts("DEBOUNCE SW1 \n"); lcd_puts("1SELEC 2UP 3DOWN\n"); } else if(current==5) { lcd_puts("STEPPER MOTOR \n"); lcd_puts("1SELEC 2UP 3DOWN\n"); } }
// Uebersetzung Schrittmotorkarte void switch_Stepper (char * str_rx) { const char* pOptions[] = { // Array mit bekannten Befehlen "#", // 0 - Stepper Karte hat Befehl erkannt "E", // 1 - Stepper Karte meldet Error "!CLS", // 2 - Clear Screen (Debugging) "Test", // 3 - Test (Debugging) 0 }; switch (FindStringInArray(str_rx, pOptions, 1)) { // String gegen bekannte Antworten pruefen case 0: // 0 - Stepper Karte hat Befehl erkannt lcd_puts("Erfolgreich\n"); break; case 1: // 1 - Stepper Karte meldet Error lcd_puts("Error\n"); uart_put_string("1\r\n", D_RapidForm); break; case 2: // 2 - Clear Screen (Debugging) lcd_clrscr(); break; case 3: // 3 - Test (Debugging) lcd_puts("Test bestanden\n"); break; default: ms_spin(10); } }
void update_lcd(void) { if(show_settings_time) //Einstellungen anzeigen { lcd_clrscr(); lcd_gotoxy(0,0); lcd_puts(font_name); char buf[3]; itoa(font_size,buf,10); lcd_puts(buf); } else //normaler Editor { lcd_command(LCD_DISP_ON); lcd_gotoxy(0,0); //_delay_us(30); uint8_t x; uint8_t cx, cy, vx, vy; get_viewport(&vx, &vy); get_cursor(&cx, &cy); for(x=0;x<LCD_WIDTH;x++) lcd_putc(get_text_buffer(vy)[vx+x]); for(x=0;x<LCD_WIDTH;x++) lcd_putc(get_text_buffer(vy+1)[vx+x]); lcd_gotoxy(cx-vx,cy-vy); lcd_command(LCD_DISP_ON_CURSOR); } }
int main(void) { wdt_enable(WDTO_2S); canix_init(); // Haus-Elektrik Service Handler installieren canix_reg_frame_callback(hauselektrik_callback, -1, HCAN_PROTO_SFP, HCAN_SRV_HES); canix_reg_rtc_callback(timer_handler); canix_reg_idle_callback(idle_handler); lcd_init(LCD_DISP_ON); lcd_clrscr(); /* * HINT: Grad Celsius = \337 * (octal fuer 206 bzw. 0xdf) */ lcdctrl_init(); keys_init(); lcdstatemachine_init(); canix_mainloop(); return 0; }
void main(){ unsigned long buf,sp; unsigned char data,x,y,ch; #ifdef PARITYCHECK unsigned char parity; int tmp; #endif // char str[7]; prescaler_init(); init_mc(); spi_init(); lcd_init(); ch=x=y=0; lcd_goto(0); lcd_puts("initializing..."); init_lut(); lcd_clrscr(); lcd_goto(0); while(1){ state1: if(SPSR&(1<<SPIF)){ buf=SPDR; if(!(buf&1)){ buf=buf>>1; //throw out start bit. goto state2; } }
int main(void) { DDRB |= (1<<PB0); PORTB |= (1<<PB0); DDRD &= ~(1<<PD6); PORTD &= ~(1<<PD6); czujniki_cnt = search_sensors(); DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL); _delay_ms(750); if(DS18X20_OK == DS18X20_read_meas_single(0x28, &subzero, &cel, &cel_frac_bits)) display_temp(); else { lcd_puts_P("err"); } lcd_clrscr(); /* clear display home cursor */ for(;;){ } }
void prvLcdShow( void *pvParameters ) { uint8_t symb, buffer_cnt=0, el_in_queue=0; portBASE_TYPE xStatus; while(1){ el_in_queue = uxQueueMessagesWaiting(xQueueLCD); if(el_in_queue > 0){ if(xSemaphoreTake(xLcdMutex, portMAX_DELAY) == pdPASS){ while(el_in_queue > 0){ if(xQueueReceive(xQueueLCD, &symb, 0) == pdPASS){ if (buffer_cnt == 32){ lcd_clrscr(); buffer_cnt = 0; } if(buffer_cnt == 16){ lcd_goto(2,0); } lcd_putc(symb); buffer_cnt++; el_in_queue--; } } xSemaphoreGive(xLcdMutex); } } } }
static void store_permanent(void){ int tmp; signed char changeflag=1; lcd_clrscr(); if (eeprom_read_byte((uint8_t *)0x0) == 19){ changeflag=0; // ok magic number matches accept values tmp=eeprom_read_word((uint16_t *)0x04); if (tmp != set_val[1]){ changeflag=1; } tmp=eeprom_read_word((uint16_t *)0x02); if (tmp != set_val[0]){ changeflag=1; } } if (changeflag){ lcd_puts_P("setting stored"); eeprom_write_byte((uint8_t *)0x0,19); // magic number eeprom_write_word((uint16_t *)0x02,set_val[0]); eeprom_write_word((uint16_t *)0x04,set_val[1]); }else{ if (bpress> 5){ // display software version after long press lcd_puts_P(SWVERSION); lcd_gotoxy(0,1); lcd_puts_P("tuxgraphics.org"); }else{ lcd_puts_P("already stored"); } } delay_ms(200); }
void AddSymblsToList(){ c8=0; i8=0; l8=0; if(f_open(&Fil, _symbfilename, FA_OPEN_EXISTING | FA_READ) == FR_OK){ if(DEBUGSTTS) printf("Card FOUND!!\n\r"); lcd_clrscr(); lcd_puts_E(lcdfnd, 0); lcd_goto(64); lcd_puts(_symbfilename, 0); ///< Fetch symbols and their short names. do{ f_read(&Fil, &msg1, 1, &bw); if (msg1[0]<0x20){l8=1; c8=0;} else if(msg1[0]>0x7E){l8=1; c8=0;} else if(msg1[0]==0x20){ do{ f_read(&Fil, &msg1, 1, &bw); }while (msg1[0]>0x1F && bw++); } ///< Catch comments else if(!bw){ break; } else if(msg1[0]==0x3B){ ///< Encountered ";". Fetch short name. for(c8=0; c8<SHNAMELEN; c8++){ f_read(&Fil, &msg1, 1, &bw); if (msg1[0]<0x21){ break; } else if(msg1[0]>0x7E){ break; } else if(!bw){ break; } else { Symbols[(SYMBOLLEN*MAXSYMBLS)+ (i8*SHNAMELEN)+c8]=msg1[0]; } ///< Make _SURE_ there is nothing left on this line before going back to the normal loop (You can write comments) }if(!msg1[0]<0x20){ do{ f_read(&Fil, &msg1, 1, &bw); }while (msg1[0]>0x1F && bw++); } l8=1; ///< Trigger the new line mechanism. }else{ if(l8){ i8++; l8=0; c8=0; } if(i8>15){ i8=15; break; } Symbols[(i8*SYMBOLLEN)+c8]=msg1[0]; c8++; } } while (bw++ && i8 < 16); Nosymbols=i8+1; }else{ ///< Card not found, Use predefined symbols. #ifdef AVR eeprom_read_block(Symbols, EEP_Symbs, (MAXSYMBLS*SYMBOLLEN)+(SHNAMELEN*MAXSYMBLS)); #else for (l8=0; l8<((MAXSYMBLS*SYMBOLLEN)+(SHNAMELEN*MAXSYMBLS)); l8++){ Symbols[l8]=EEP_Symbs[l8]; } #endif } if(printstats){ for(i8=0; i8<Nosymbols; i8++){ printf("%02d: ", i8+1); printf("%.24s: ", &Symbols[SYMBOLLEN*i8]); printf(" (%.3s)\n", &Symbols[(SYMBOLLEN*MAXSYMBLS)+(SHNAMELEN*i8)]); } } if(printstats) printf("\n\n"); f_close(&Fil); }
void print_set_date(time tempTime) { lcd_clrscr(); lcd_gotoxy(1, 0); lcd_puts_p(menuStrings[SET_TIME - 1]); print_date_xy(tempTime, 0, 1); }
void print_set_alarm1(time tempTime) { lcd_clrscr(); lcd_gotoxy(1, 0); lcd_puts_p(menuStrings[SET_ALARM1 - 1]); print_time(tempTime); }
void get_name(void) { int key, i; char show_buffer[64] = {0}; char name[17] = {0}; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙名称 "); /*获取蓝牙地址*/ serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+NAME\r\n", sizeof("AT+NAME\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 64, 300); if(!strncmp("+NAME=\"", show_buffer, 7)){ for(i = 0; i < 16; i ++) { if (show_buffer[7 + i] == '\"') break; name[i] = show_buffer[7 + i]; } lcd_disp_string(0, 16, name); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void get_bt_status(void) { int key; char show_buffer[50]; char des[10] = {0}; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙状态 "); serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+STATUS\r\n", sizeof("AT+STATUS\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 20, 300); if(!strncmp(show_buffer, "+STATUS=", sizeof("+STATUS=") - 1)){ des[0] = show_buffer[sizeof("+STATUS=") - 1]; if (strcmp(des, "2") == 0) lcd_disp_string(0, 16, "蓝牙已连接"); else if (strcmp(des, "1") == 0) lcd_disp_string(0, 16, "蓝牙广播中..."); else if (strcmp(des, "0") == 0) lcd_disp_string(0, 16, "蓝牙空闲"); else lcd_disp_string(0, 16, "未知状态"); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void get_mac(void) { int key; char show_buffer[64]; char addr[18]; while (1) { lcd_clrscr(); lcd_disp_string(0, 0, " 蓝牙MAC地址 "); /*获取蓝牙地址*/ serial_clrbuf(CONFIG_BT_SERIAL_NUM, 1, 0); serial_write(CONFIG_BT_SERIAL_NUM, "AT+LADDR\r\n", sizeof("AT+LADDR\r\n")); serial_read(CONFIG_BT_SERIAL_NUM, show_buffer, 64, 300); if(!strncmp("+LADDR=", show_buffer, 7)){ memcpy(addr, show_buffer + 7, 17); lcd_disp_string(0, 16, addr); } else lcd_disp_string(0, 16, "获取失败"); key = kb_get_key(0); if (key == KEY_ESC) return; } }
void initialize(void) { //set up the ports DDRA = 0x00; // Fan is off DDRD = 0x00; //Port D set to input for Pin Change Interrupts lcd_init(LCD_DISP_ON); // Turn on Display lcd_clrscr(); // Clear Screen //crank up the ISRs PCICR =0b00001000; // Enable Pin Change interrupt on Port D PCMSK3 =0b0000011; // Enable Pin Change interrupt on PIN0 and PIN1 on Port D setPoint = 30; //Sets the setPoint to 30 degrees celsius TCCR1A=0b00000000; //CTC mode no PWM, the most significant 6 bits do not matter for this lab TCCR1B=0b00001100; //prescaler 256 TIMSK1=0b00000010; //enable Output Compare A Match interrupt OCR1A=31250; //set the compare register to 31250 clock ticks -> Output Compare A Match interrupt occurs with 2Hz frequency //ADC ADCSRA = 0b10101000;// enables the ADC in auto trigger mode with 2 bit prescaler ADCSRB= 0b00000101; // Sets up the ADC to fire when the timer1 match B is fired ADMUX = 0b11000000; // use internal 2.56 v for reference voltage with a right adjust result sei(); }
void doLCD(char* s1, char* s2){ lcd_clrscr(); /* clear screen of lcd */ lcd_gotoxy(0,0); /* bring cursor to 0,0 */ lcd_puts(s1); /* type something random */ lcd_gotoxy(0,1); /* go to 0nd col, 1nd row (or 1, 2 depending on how you count)*/ lcd_puts(s2); /* type something random */ }
void main(void) { unsigned int range=0; unsigned char counter1=0, gain=0; /* Delay is there to ensure that SRF08 is out of reset and operational */ /* delay(1000000); srf08_change_i2c_address(SRF08_UNIT_1); delay(100000); */ /* By default SRF_UNIT_0 is selected so the below command shows that the change of i2c address by the above "srf08_change_i2c_address(SRF08_UNIT_1);" command was succesfull. All commands after this, refer to that unit only! */ srf08_select_unit(SRF08_UNIT_1); srf08_init(); /* Only the selected SRF08 unit will be initialized! */ gain=SRF08_MAX_GAIN; srf08_set_gain(gain); srf08_set_range(SRF08_MAX_RANGE); /* Set range to 11008 mm */ lcd_init(); lcd_clrscr(); lcd_gotoxy(0,0); lcd_puts_P("RANGE (E1) = "); lcd_gotoxy(0,1); lcd_puts_P("RANGE (E2) = "); lcd_gotoxy(0,2); lcd_puts_P("RANGE (E5) = "); lcd_gotoxy(0,3); lcd_puts_P("LIGHT sensor= "); while(1) { /* AVERAGING FILTER */ for(counter1=0,range=0; counter1<AVG_FLT_SAMPLES; counter1++) { range+=srf08_ping(SRF08_CENTIMETERS); } range /= AVG_FLT_SAMPLES; /* AUTOMATIC GAIN CONTROL */ if(srf08_read_register(SRF08_ECHO_5)!=0 ) { if(gain>=5) { srf08_set_gain(gain-=5); } else { srf08_set_gain(gain=0); } } else if(srf08_read_register(SRF08_ECHO_2)<=0 && gain!=31) { srf08_set_gain(++gain); } /* DISPLAY TO LCD */ lcd_gotoxy(14,0); lcd_puti(range,2); lcd_gotoxy(14,1); lcd_puti(srf08_read_register(SRF08_ECHO_2), 2); lcd_gotoxy(14,2); lcd_puti(srf08_read_register(SRF08_ECHO_5), 2); lcd_gotoxy(14,3); lcd_puti(srf08_read_register(SRF08_LIGHT), 2); } return; }
int main() { uint8_t refTemp = 30; // reference uint8_t check, prev_check = 0; short up = 1, down = 1; uint16_t adc_in; // ADC value uint8_t temp = 1; // real temperature init_controller(); init_PWM(); lcd_init(); sei(); // turn on interrupts lcd_clrscr(); lcd_puts("Spinning"); Delay_s(2); // 2 seconds delay init_ADC(); refTemp = eeprom_read_byte((uint8_t*)0); if (!(refTemp >= TMIN && refTemp <= TMAX)) refTemp = 30; while(1) { if (C_CHECKBIT(Minus_REF)) down = 0; if (C_CHECKBIT(Minus_REF) == 0 && down ==0) { down = 1; if (refTemp > TMIN) refTemp--; } if (C_CHECKBIT(Plus_REF)) up = 0; if (C_CHECKBIT(Plus_REF) == 0 && up ==0) { up = 1; if (refTemp < TMAX) refTemp++; } eeprom_write_byte ((uint8_t *)0, refTemp); adc_in = ReadADC(0); temp = adc_in/2; lcd_puts2("T%d-R%dC", temp, refTemp); if ((temp - refTemp) > TOL) check = 3; else if ((refTemp - temp) > TOL) check = 1; else check = 2; switch(check) { case 1: if (prev_check == 1) break; setDutyCycle1(); prev_check = 1; break; case 2: if (prev_check == 2) break; setDutyCycle2(); prev_check = 2; break; case 3: if (prev_check == 3) break; setDutyCycle3(); prev_check = 3; break; } } return 1; }
static void handle_command(char *buffer) { if (strncmp(buffer, "^BEEP", strlen("^BEEP")) == 0) { /* Summer-Ausschalten auf 100ms bzw. 500ms setzen */ if (buffer[6] == '1') beepcnt = 100; else if (buffer[6] == '2') beepcnt = 25; else beepcnt = 500; /* Summer aktivieren */ PORTB |= (1 << PB4); return; } if (strncmp(buffer, "^PING", strlen("^PING")) == 0) { /* Modify the buffer in place and send it back */ buffer[2] = 'O'; uart_puts(buffer); return; } // example: // ^LED 0 250 $ (rot oben) // ^LED 1 250 $ (grün oben) // (beides zusammen ergibt orange) // ^LED 2 250 $ (rot unten) // ^LED 3 250 $ (grün unten) // ^BEEP 1 $ if (strncmp(buffer, "^LED", strlen("^LED")) == 0) { int idx = (buffer[5] - '0'); if (idx < 0 || idx > 3) return; if (sscanf(buffer + strlen("^LED 0 "), "%u", &(led_state[idx])) != 1) return; PORTB |= (1 << idx); return; } // ^LCD Herzlich Willkommen im RZL $ // ^LCD PIN: * $ // ^LCD PIN: ** $ if (strncmp(buffer, "^LCD", strlen("^LCD")) == 0) { lcd_clrscr(); char *walk = buffer + strlen("^LCD ") + 31; while (*walk == ' ') walk--; *(++walk) = '\0'; lcd_puts(buffer + strlen("^LCD ")); return; } // ^LCH * $ if (strncmp(buffer, "^LCH", strlen("^LCH")) == 0) { lcd_putc(buffer[strlen("^LCD ")]); return; } }
void displaysetPoint (void) { lcd_clrscr(); char setArray [10]; itoa (setPoint,setArray,10); lcd_gotoxy(0,1);// goes to the next line lcd_puts ("setPoint: "); lcd_puts (setArray); }
/************************************************************************* Initialize display and select type of cursor Input: dispAttr LCD_DISP_OFF display off LCD_DISP_ON display on, cursor off LCD_DISP_ON_CURSOR display on, cursor on LCD_DISP_CURSOR_BLINK display on, cursor on flashing Returns: none *************************************************************************/ void lcd_init(uint8_t dispAttr) { #if LCD_PCF8574_INIT == 1 //init pcf8574 pcf8574_init(); #endif #if LCD_LED == 1 lcd_led(1); #endif dataport = 0; pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); delay(16000); /* wait 16ms or more after power-on */ /* initial write to lcd is 8bit */ // dataport |= _BV(LCD_DATA1_PIN); // _BV(LCD_FUNCTION)>>4; // dataport |= _BV(LCD_DATA0_PIN); // _BV(LCD_FUNCTION_8BIT)>>4; // lcd_e_toggle(); // delay(4992); /* delay, busy flag can't be checked here */ /* repeat last command */ // lcd_e_toggle(); //delay(64); /* delay, busy flag can't be checked here */ // delay(4992); /* delay, busy flag can't be checked here */ /* repeat last command a third time */ // lcd_e_toggle(); //delay(64); /* delay, busy flag can't be checked here */ // delay(4992); /* delay, busy flag can't be checked here */ /* now configure for 4bit mode */ //dataport &= ~_BV(LCD_DATA0_PIN); dataport |= _BV(LCD_DATA1_PIN); lcd_e_toggle(); delay(128); /* some displays need this additional delay */ lcd_e_toggle(); delay(128); dataport &= ~_BV(LCD_DATA1_PIN); dataport |= _BV(LCD_DATA3_PIN); lcd_e_toggle(); delay(128); /* from now the LCD only accepts 4 bit I/O, we can use lcd_command() */ lcd_command(LCD_FUNCTION_DEFAULT); /* function set: display lines */ // lcd_command(LCD_DISP_OFF); /* display off */ lcd_clrscr(); /* display clear */ lcd_command(LCD_MODE_DEFAULT); /* set entry mode */ lcd_command(dispAttr); /* display/cursor control */ }/* lcd_init */
void lcd_init(uint8_t dispAttr) { if (LCD_INIT_I2C == YES) i2c_init(); for (uint8_t i = 0; i < sizeof(ssd1306_init_sequence); i++) { lcd_command(pgm_read_byte(&ssd1306_init_sequence[i])); } lcd_command(dispAttr); lcd_clrscr(); }
void frontend_alarm(uint8_t **wheel_target, uint8_t *next_state){ *next_state = MAIN; *wheel_target = NULL; lcd_clrscr(); lcd_gotoxy(5,0); lcd_puts("Timer"); lcd_gotoxy(4,1); lcd_puts("reached"); }