Exemplo n.º 1
0
//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);
  }
}
Exemplo n.º 2
0
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) {
Exemplo n.º 3
0
//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);
}
Exemplo n.º 4
0
//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();
}
Exemplo n.º 5
0
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);
    }
}
Exemplo n.º 6
0
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");	
	}	
}
Exemplo n.º 9
0
// 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);
    }
}
Exemplo n.º 10
0
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);
  }
}
Exemplo n.º 11
0
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;
}
Exemplo n.º 12
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;
			}
		}
Exemplo n.º 13
0
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(;;){


 }


}
Exemplo n.º 14
0
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);
    		}
    	}
    }
}
Exemplo n.º 15
0
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);
}
Exemplo n.º 16
0
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);
}
Exemplo n.º 17
0
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);
}
Exemplo n.º 18
0
void print_set_alarm1(time tempTime)
{
	lcd_clrscr();
	lcd_gotoxy(1, 0);
	lcd_puts_p(menuStrings[SET_ALARM1 - 1]);
	print_time(tempTime);
}
Exemplo n.º 19
0
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;
    }
}
Exemplo n.º 20
0
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;
    }
}
Exemplo n.º 21
0
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;
    }
}
Exemplo n.º 22
0
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();
}
Exemplo n.º 23
0
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 */
}
Exemplo n.º 24
0
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;
}
Exemplo n.º 26
0
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;
    }
}
Exemplo n.º 27
0
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);
}
Exemplo n.º 28
0
/*************************************************************************
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 */
Exemplo n.º 29
0
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();
}
Exemplo n.º 30
0
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");
}