Ejemplo n.º 1
0
void secret_button()
{
    static unsigned long but1;
    but1 = millis();
    Serial.println(F("1"));
    while(!digitalRead(ON_PIN)){
        delay(20);
        if (millis() > but1 + 5000){
            go_sleep();
        }
    }
    but1 = millis();
    while(millis() < but1 + BUTTON1_DELAY){delay(20);
        if(!digitalRead(ON_PIN)){
            Serial.println(F("2"));
            while(!digitalRead(ON_PIN)){delay(20);}
            but1 = millis();
            while(millis() < but1 + BUTTON1_DELAY){delay(20);
                if(!digitalRead(ON_PIN)){
                    Serial.println(F("3"));
                    while(!digitalRead(ON_PIN)){delay(20);}
                    but1 = millis();
                    while(millis() < but1 + BUTTON1_DELAY){delay(20);
                        if(!digitalRead(ON_PIN)){
                            Serial.println(F("4"));
                            while(!digitalRead(ON_PIN)){delay(20);}
                            but1 = millis();
                            while(millis() < but1 + BUTTON1_DELAY){delay(20);
                                if(!digitalRead(ON_PIN)){
                                    Serial.println(F("5"));
                                    but1 = millis();
                                    while(!digitalRead(ON_PIN)){delay(20);
                                        Serial.println(F("6"));
                                        if(millis() > but1 + 800){
                                            Serial.println(F("Release now!"));

                                            lcd.clear();
                                            lcd.setCursor(0, 0);
                                            lcd.print(F("Release now!"));
                                            delay(500);

                                            lcd.clear();
                                            lcd.setCursor(0, 0);
                                            lcd.print(F("Press: open box"));
                                            lcd.setCursor(0,1);
                                            lcd.print(F("Hold: reset game"));

                                            delay(1000);

                                            while(digitalRead(ON_PIN)){}
                                            but1 = millis();
                                            while(!digitalRead(ON_PIN)){delay(20);}

                                            if(millis() - but1 > 1000){
                                                lcd.clear();
                                                lcd.print(F("RESET GAME!"));
                                                delay(3000);
                                                target = 1;
                                                EEPROM.write(EEPROM_TARGET_INDEX, 1);

                                                break;
                                            }
                                            else {
                                                open_box();
                                                delay(15000);
                                                close_box();
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
Ejemplo n.º 2
0
Archivo: filebrowse.c Proyecto: 8l/ted
void process_file_browser(int skey,int xcur,int ycur)
{
	char cad[NAME_MAX+1];
	int i;
	if(!misgraph(skey)) cnt_busca=0;
	switch(skey)
	{
		case -1:
			if((xcur==fx+20 || xcur==fx+21) && ycur==fy+1)
			{
				if(!cntf) break;
				Drawitem(0);
				postab=0;
				Itemup(ly-4);
				Drawitem(1);
				break;
			}
			if((xcur==fx+41 || xcur==fx+42) && ycur==fy+1)
			{
				Drawitem(0);
				postab=1;
				Itemup(ly-4);
				Drawitem(1);
				break;
			}
			if((xcur==fx+20 || xcur==fx+21) && ycur==ly-2)
			{
				if(!cntf) break;
				Drawitem(0);
				postab=0;
				Itemdown(ly-4);
				Drawitem(1);
				break;
			}
			if((xcur==fx+41 || xcur==fx+42) && ycur==ly-2)
			{
				Drawitem(0);
				postab=1;
				Itemdown(ly-4);
				Drawitem(1);
				break;
			}
			if(xcur<fx+3 || xcur>fx+lx-3) break;
			if(ycur<fy+2 || ycur>fy+ly-3) break;
			if(xcur<fx+22)
			{
				/*i=ycur-fy-2+fromf;*/
				i=ycur-fy-2;
				if(i==positem && postab==0)
				{
				i+=fromf;
				if(i>cntf-1) break;
				if(strcmp(cur_dir,direct))
					sprintf(cad,"%s/%s",cur_dir,files[i]);
				else strcpy(cad,files[i]);
				freefiles();
				input_handler=0;
				xgets_enter=-1;
				close_box();
				redraw_twin();
				open_file(cad);
				K_CD(direct);
				direct[0]='\0';
				break;
				}
				else
				{
				Drawitem(0);
				postab=0;
				positem=i;
				Drawitem(1);
				break;
				}
			}
			if(xcur>fx+22)
			{
				/*i=ycur-fy-2+fromd;*/
				i=ycur-fy-2;
				if(i==positem && postab==1)
				{
				i+=fromd;
				if(i>cntd-1) break;
				strcpy(cad,dir[i]);
				freefiles();
				K_CD(cad);
				Draw_file_browser();
				break;
				}
				else
				{
				Drawitem(0);
				postab=1;
				positem=i;
				Drawitem(1);
				break;
				}
			}
			break;
		case XK_Escape:
			freefiles();
			input_handler=0;
			xgets_enter=-1;
			close_box();
			redraw_twin();
			K_CD(direct);
			direct[0]='\0';
			break;
		case XK_Prior:
			Drawitem(0);
			Itemup(ly-4);
			Drawitem(1);
			break;
		case XK_Next:
			Drawitem(0);
			Itemdown(ly-4);
			Drawitem(1);
			break;
		case XK_Up:
			Drawitem(0);
			Itemup(1);
			Drawitem(1);
			break;
		case XK_Down:
			Drawitem(0);
			Itemdown(1);
			Drawitem(1);
			break;
		case XK_Tab:
			if(!cntf) break;
			Drawitem(0);
			if(!postab) postab=1;
			else postab=0;
			if(positem>cntf-1 && postab==0) positem=cntf-1;
			if(positem>cntd-1 && postab==1) positem=cntd-1;
			Drawitem(1);
			break;
		case XK_Left:
			if(!cntf) break;
			Drawitem(0);
			if(positem>cntf-1) positem=cntf-1;
			postab=0;
			Drawitem(1);
			break;
		case XK_Right:
			Drawitem(0);
			if(positem>cntd-1) positem=cntd-1;
			postab=1;
			Drawitem(1);
			break;
		case XK_Return:
			if(!postab)
			{
				/*strcpy(cad,files[positem+fromf]);*/
				if(strcmp(cur_dir,direct))
					sprintf(cad,"%s/%s",cur_dir,files[positem+fromf]);
				else strcpy(cad,files[positem+fromf]);
				freefiles();
				input_handler=0;
				xgets_enter=-1;
				close_box();
				redraw_twin();
				open_file(cad);
				K_CD(direct);
				direct[0]='\0';
			}
			else
			{
				strcpy(cad,dir[positem+fromd]);
				freefiles();
				K_CD(cad);
				Draw_file_browser();
			}
			break;
		default:
			if(misgraph(skey))
			{
				busca_cad[cnt_busca]=skey;
				cnt_busca++;
				if(postab==0)
				{
					for(i=0;files[i][0]!='\0' &&
i<2000;i++)
					{
						if(!strncmp(files[i],busca_cad,cnt_busca))
						{
							fromf=cntf-(ly-4);
							if(fromf<0)
							{
								fromf=0;
								positem=cntf;
							}
							else positem=ly-4;
							if(cntf-i<=0)
positem=(ly-4)-(cntf-i);
							else Itemup(cntf-i);
							Showfiles();
							Drawitem(1);
							break;
						}
					}
					if(files[i][0]=='\0' || i==2000)
cnt_busca=0;
				}
				else
				{
					for(i=0;dir[i][0]!='\0' && i<2000;i++)
					{
						if(!strncmp(dir[i],busca_cad,cnt_busca))
						{
							fromd=cntd-(ly-4);
							if(fromd<0)
							{
								fromd=0;
								positem=cntd;
							}
							else positem=ly-4;
							if(cntd-i<=0)
positem=(ly-4)-(cntd-i);
							else Itemup(cntd-i);
							Showdir();
							Drawitem(1);
							break;
						}
					}
					if(dir[i][0]=='\0' || i==2000)
cnt_busca=0;
				}
			}
	}
}