Example #1
0
int searchSpot() {
//menelusuri garis hitam sampai menemukan "color"
	int hue;
	int colortemp;
	int threshold = 65;
	resetGyro(gyroSensor);
	moveMotorTarget(leftMotor,360,100);
	moveMotorTarget(rightMotor,360,100);
	while(getMotorMoving(leftMotor)||getMotorMoving(rightMotor))
		sleep(1);
	while(1)
	{
		// sensor sees light:
		if(getColorReflected(colorSensor) < threshold)
		{
			// counter-steer right:
			motor[leftMotor]  = 55;
			motor[rightMotor] = 15;
		}
		// sensor sees dark:
		else
		{
			// counter-steer left:
			motor[leftMotor]  = 15;
			motor[rightMotor] = 55;
		}
		hue=getColorHue(colorSensor);
		if(hue==99 || hue==253) {
			colortemp=hue==99?green:red;
			break;
		}
	}
	return colortemp;
}
Example #2
0
void cekHue(){
	int hue;
	motor[leftMotor] = 0;
	motor[rightMotor] = 0;
	while(1) {
  	displayTextLine(1,"Hue : %d",hue);
		hue=getColorHue(colorSensor);
	}
}
Example #3
0
void Lamp::doLed()
{
  analogWrite(lpin,getColorHue()+ _currentHue);
}
Example #4
0
void Lamp::drawMenu(unsigned long index)
{

  //Serial.println("Draw");

  unsigned char almhr;
  almhr= getAlarmHour();
  unsigned char almmn;
  almmn = getAlarmMin();
  bool almAM;
  almAM = getAlarmAM();
  bool almOn;
  almOn = getAlarmOn();
  byte dspMode = getDisplayMode();
  byte lmpbr = getLampBrightness();
  byte lcdbr = getLCDBrightness();
 // byte lcdsl = getLCDSleepTime();
//  byte audfs = getAudioFadeSpeed();
  byte cych  = getCycleHoldTime();
  byte cycf  = getCycleFadeTime();
  byte cycs  = getCycleSteps();
  byte rndh  = getRandomHoldTime();
  byte rndf  = getRandomFadeTime();
  byte solh  = getColorHue();
  byte sols  = getColorSat();

  char strSec[5] = "sec.";
  char strON[3] = "ON";
  char strOFF[4] = "OFF";
  char strAM[5] = "  AM";
  char strPM[5] = "  PM";
  char strPad0[2] = "0";
  char strBr[11] = "Brightness";
  char strHT[11] = "Hold Time";
  char strFT[11] = "Fade Time";
  char strST[7] = "Steps";
  char strTimeH[15] = "Hour Min AM/PM";
  char strDateH[14] = "d.  D. M.  Y.";
  char strBL[10] = "Backlight";

  char* weekdayStr[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat","ERR"};  
  char* monthStr[] = {"","Jan", "Feb", "Mar","Apr","May","Jun", "Jul","Aug", "Sep","Oct","Nov","Dec","ERR"};

  goTo(0);
  hideCursor();
  clearLCD();
  //  selectLineOne();

  switch (index)
  {
  case 0x000000:
    //Main menu
    //  Serial1.println("03:28 PM    Alm.");
    //  Serial1.println("Mon Nov 10 2012 ");
    if (tHour12 < 10) Serial1.print(strPad0);
    Serial1.print(tHour12);
    Serial1.print(":");
    if (tMinute < 10) Serial1.print(strPad0);
    Serial1.print(tMinute);


    if(tHour<12) Serial1.print(strAM);
    if(tHour>=12)Serial1.print(strPM);
    if(almOn) Serial1.print("   Alm.");
    if(!almOn) Serial1.print("");
    selectLineTwo();
    Serial1.print(weekdayStr[tDay]);
    Serial1.print(" ");
    Serial1.print(monthStr[tMonth]);
    Serial1.print(" ");
    Serial1.print(tDate);
    Serial1.print("  ");
    Serial1.print(tYear +2000);

    break;
  case 0x000001:
    //Clock Settings
    Serial1.print("Clock Settings");
    //  Serial1.println("");
    break;
  case 0x000002:
    //Lamp Settings
    Serial1.print("Lamp Settings");
    //  selectLineTwo();
    //  Serial1.println("");
    break;
  case 0x000011:
    //set Date/time top menu
    Serial1.print("Set Date/Time");
    selectLineTwo();
    if (tHour12 < 10) Serial1.print(strPad0);
    Serial1.print(tHour12);
    Serial1.print(":");
    if(tMinute < 10) Serial1.print(strPad0);
    Serial1.print(tMinute);
    if(tHour<12) Serial1.print("AM ");
    if(tHour>=12) Serial1.print("PM ");
    Serial1.print(tDate);
    Serial1.print("/");
    Serial1.print(tMonth);
    Serial1.print("/");
    Serial1.print(tYear);

    break;
  case 0x000012:
    //Set Display mode top menu
    Serial1.print("Dispay Mode");
    selectLineTwo();
    if (dspMode==0) Serial1.print("Audio Viz.");
    if (dspMode==1) Serial1.print("Cycle");
    if (dspMode==2) Serial1.print("Random");
    if (dspMode==3) Serial1.print("Solid");

    break;
  case 0x000021:
    //set Alarm top menu
    Serial1.print("Set Alarm");
    selectLineTwo();
    //Serial1.print("07:00AM      OFF");
    if (almhr < 10) Serial1.print(strPad0);
    Serial1.print(almhr);
    Serial1.print(":");
    if(almmn < 10) Serial1.print(strPad0);
    Serial1.print(almmn);
    if(almAM) Serial1.print(strAM);
    if(!almAM)Serial1.print(strPM);
    if(almOn) { 
      Serial1.print("     "); 
      Serial1.print(strON);
    }
    if(!almOn) {
      Serial1.print("    "); 
      Serial1.print(strOFF);
    }

    break;
  case 0x000022:
    //Set Brightness top menu
    Serial1.print(strBr);
    selectLineTwo();
    Serial1.print(lmpbr,DEC);
    break; 
  case 0x000032:
    //set LCD Backlight top menu
    Serial1.print(strBL);
    selectLineTwo();
    Serial1.print(lcdbr,DEC);
    break;

  case 0x000111:
    //set clock time / current time
    Serial1.print(strTimeH);
    selectLineTwo();
    if (tHour12 < 10) Serial1.print(strPad0);
    Serial1.print(tHour12);
    Serial1.print("   ");
    if(tMinute < 10) Serial1.print(strPad0);
    Serial1.print(tMinute);
    if(tHour<12) Serial1.print(strAM);
    if(tHour>=12) Serial1.print(strPM);

    break;

  case 0x000121:
    //set alarm time / current time
    Serial1.print(strTimeH);
    selectLineTwo();
    if (almhr < 10) Serial1.print(strPad0);
    Serial1.print(almhr);
    Serial1.print("   ");
    if(almmn < 10) Serial1.print(strPad0);
    Serial1.print(almmn);
    if(almAM) Serial1.print(strAM);
    if(!almAM) Serial1.print(strPM);

    break;
  case 0x000122:
    //Set lamp Brigthness
    //should display cursor
    Serial1.print(strBr);
    selectLineTwo();
    Serial1.print(lmpbr,DEC);

    showCursor();
    goTo(18);

    break;
  case 0x000132:
    //set lcd backlight brightness
    //should display cursor
    Serial1.print(strBL);
    selectLineTwo();
    Serial1.print(lcdbr,DEC);
    //
    showCursor();
    goTo(17);

    break;

  case 0x000211:
    //set clock date menu
    Serial1.print(strDateH);
    selectLineTwo();
    Serial1.print(weekdayStr[tDay]);
    Serial1.print(" ");
    Serial1.print(tDate); 
    Serial1.print(" ");

    Serial1.print(monthStr[tMonth]);
    Serial1.print(" ");
    Serial1.print(tYear);
    break;
  case 0x000212:
    //Cycle display mode
    Serial1.print("Cycle");

    break;
  case 0x000221:
    //set alarm on/off menu
    Serial1.print("Alarm");
    selectLineTwo();
    if (almOn) Serial1.print(strON);
    if (!almOn) Serial1.print(strOFF);
    break;
  case 0x000312:
    //random color display mode
    Serial1.print("Random");
    //  Serial1.print("");
    break;
  case 0x000412:
    //solid color display mode
    Serial1.print("Solid");
    // Serial1.print("");
    break;
  case 0x001111:
    //set clock time / set hour
    //show cursor at hour
    Serial1.print(strTimeH);
    selectLineTwo();
    if (tHour12 < 10) Serial1.print(strPad0);
    Serial1.print(tHour12);
    Serial1.print("   ");
    if(tMinute < 10) Serial1.print(strPad0);
    Serial1.print(tMinute);
    if(tHour<12) Serial1.print(strAM);
    if(tHour>=12) Serial1.print(strPM);

    showCursor();
    goTo(17);

    break;

  case 0x001121:
    //set alarm time / hour
    //show cursor at hour
    Serial1.print(strTimeH);
    selectLineTwo();
    if (almhr < 10) Serial1.print(strPad0);
    Serial1.print(almhr);
    Serial1.print("   ");
    if(almmn < 10) Serial1.print(strPad0);
    Serial1.print(almmn);
    if(almAM) Serial1.print(strAM);
    if(!almAM) Serial1.print(strPM);

    showCursor();
    goTo(17);

    break;
  case 0x001211:
    //set clock date / day of week
    //show cursor at d o w

    Serial1.print(strDateH);
    selectLineTwo();
    //Serial1.print("Mon 3_ Dec 12");
    Serial1.print(weekdayStr[tDay]);
    Serial1.print(" ");
    Serial1.print(tDate);
    Serial1.print(" ");
    Serial1.print(monthStr[tMonth]);
    Serial1.print(" ");
    Serial1.print(tYear);

    showCursor();
    goTo(18);

    break;
  case 0x001212:
    //set Cycle hold time
    //show cursor
    Serial1.print(strHT);
    selectLineTwo();
    Serial1.print(cych,DEC);
    Serial1.print(strSec);

    showCursor();
    goTo(17);

    break;
  case 0x001221:
    //set alarm on / off
    //show cursor
    Serial1.print("Alarm");
    selectLineTwo();
    if (almOn) Serial1.print(strON);
    if (!almOn) Serial1.print(strOFF);

    showCursor();
    goTo(18);

    break;
  case 0x001312:
    //set random mode holde time
    //show cursor
    Serial1.print(strHT);
    selectLineTwo();
    Serial1.print(rndh,DEC);
    Serial1.print(strSec);

    showCursor();
    goTo(17);

    break;
  case 0x001412:
    //set solid mode Hue
    //show cursor
    Serial1.print("Hue");
    selectLineTwo();
    Serial1.print(solh,DEC);

    showCursor();
    goTo(19);

    break;
  case 0x002111:
    //set clock time / min
    //show curso at min
    Serial1.print(strTimeH);
    selectLineTwo();
    if (tHour12 < 10) Serial1.print(strPad0);
    Serial1.print(tHour12);
    Serial1.print("   ");
    if(tMinute < 10) Serial1.print(strPad0);
    Serial1.print(tMinute);
    if(tHour<12) Serial1.print(strAM);
    if(tHour>=12) Serial1.print(strPM);

    showCursor();
    goTo(22);

    break;
  case 0x002121:
    //set alarm time / min
    //show cursor at min
    Serial1.print(strTimeH);
    selectLineTwo();
    if (almhr < 10) Serial1.print(strPad0);
    Serial1.print(almhr);
    Serial1.print("   ");
    if(almmn < 10) Serial1.print(strPad0);
    Serial1.print(almmn);
    if(almAM) Serial1.print(strAM);
    if(!almAM)Serial1.print(strPM);

    showCursor();
    goTo(22);

    break;
  case 0x002211:
    //set clock date / day
    //show cursor at day
    Serial1.print(strDateH);
    //Serial1.print("Mon 3_ Dec 12");
    selectLineTwo();
    Serial1.print(weekdayStr[tDay]);
    Serial1.print(" ");
    Serial1.print(tDate);
    Serial1.print(" ");
    Serial1.print(monthStr[tMonth]);
    Serial1.print(" ");
    Serial1.print(tYear);

    showCursor();
    goTo(21);

    break;
  case 0x002212:
    //set cycle mode fade time
    //show cursor
    Serial1.print(strFT);
    selectLineTwo();
    Serial1.print(cycf,DEC);
    Serial1.print(strSec);
    showCursor();
    goTo(17);
    break;
  case 0x003212:
    //set cycle mode steps
    //show cursor
    Serial1.print(strST);
    selectLineTwo();
    Serial1.print(cycs,DEC);
    showCursor();
    goTo(18);
    break; 
  case 0x002312:
    //set randome mode fade time
    //show cursor
    Serial1.print(strFT);
    selectLineTwo();
    Serial1.print(rndf,DEC);
    Serial1.print(strSec);
    showCursor();
    goTo(17);
    break;
  case 0x002412:
    //set solid mode color sat
    //show cursor
    Serial1.print("Saturation");
    selectLineTwo();
    Serial1.print(sols,DEC);
    showCursor();
    goTo(18);
    break;
  case 0x003111:
    //set clock time am/pm
    //show cursor
    Serial1.print(strTimeH);
    selectLineTwo();
    if (tHour12 < 10) Serial1.print(strPad0);
    Serial1.print(tHour12);
    Serial1.print("   ");
    if(tMinute < 10) Serial1.print(strPad0);
    Serial1.print(tMinute);
    if(tHour<12) Serial1.print(strAM);
    if(tHour>=12) Serial1.print(strPM);

    showCursor();
    goTo(26);

    break;
  case 0x003121:
    //set alarm am/pm
    //show cursor at AM
    Serial1.print(strTimeH);
    selectLineTwo();
    if (almhr < 10) Serial1.print(strPad0);
    Serial1.print(almhr);
    Serial1.print("   ");
    if(almmn < 10) Serial1.print(strPad0);
    Serial1.print(almmn);
    if(almAM) Serial1.print(strAM);
    if(!almAM)Serial1.print(strPM);

    showCursor();
    goTo(26);

    break;
  case 0x003211:
    //set clock date / month
    //show cursor at month
    Serial1.print(strDateH);
    selectLineTwo();
    Serial1.print(weekdayStr[tDay]);
    Serial1.print(" ");
    Serial1.print(tDate);
    Serial1.print(" ");
    Serial1.print(monthStr[tMonth]);
    Serial1.print(" ");
    Serial1.print(tYear);
    showCursor();
    goTo(25);
    break;
  case 0x004211:
    //set clock date / year
    //show cursor at year
    Serial1.print(strDateH);
    selectLineTwo();
    Serial1.print(weekdayStr[tDay]);
    Serial1.print(" ");
    Serial1.print(tDate);
    Serial1.print(" ");
    Serial1.print(monthStr[tMonth]);
    Serial1.print(" ");
    Serial1.print(tYear);

    showCursor();
    goTo(28);

    break;
  default:
    break;
  }

  //  backLightBr(getLCDBrightness());

}
Example #5
0
void Lamp::updateMenuIndex(unsigned char dir)
{
  switch (dir)
  {
  case 't':
    //top
    this->_menuIndex=0x0;
    this->_menuDepth=0x0;
    break;
  case 'c':
    //set time

      if(menuPosition()==0x0)   break;
    if (menuPosition()==0x1111 || menuPosition()==0x2111 || menuPosition()==0x3111 || menuPosition()==0x1211 || menuPosition()==0x2211 || menuPosition()==0x3211 || menuPosition()==0x4211)
    {
      if (menuPosition() == 0x3111) this->_menuIndex = 0x1111;
      else if (menuPosition() == 0x4211)  this->_menuIndex = 0x1211;
      else this->_menuIndex = this->_menuIndex + (1 << menuDepth());
      break;
    } 
    //set alarm
    if (menuPosition()==0x1121 || menuPosition()==0x2121 || menuPosition()==0x3121 || menuPosition()==0x1221)
    {
      if (menuPosition() == 0x3121) this->_menuIndex = 0x1121;
      else if (menuPosition() == 0x1221)  this->_menuIndex = 0x1221;
      else this->_menuIndex = this->_menuIndex + (1 << menuDepth());
      break;
    }

    //brightness / LCD backlight / lcd sleep time
    if (menuPosition() == 0x122 || menuPosition() == 0x132 || menuPosition() == 0x142) {
      break;
    }

    //AudioViz
    if (menuPosition()==0x1112) break;
    if (menuPosition()==0x12)
    {
      this->_menuDepth +=4;
      //ignore 0x112  replace with 0x212;
      if (getDisplayMode()==0) this->_menuIndex = 0x212;
      if (getDisplayMode()==1) this->_menuIndex = 0x212;
      if (getDisplayMode()==2) this->_menuIndex = 0x312;
      if (getDisplayMode()==3) this->_menuIndex = 0x412;

      break;
    }

    //Cycle
    if (menuPosition()==0x1212 || menuPosition()==0x2212 || menuPosition()==0x3212)
    {
      if (menuPosition() == 0x1212) this->_menuIndex = 0x2212;
      else if (menuPosition() == 0x2212) this->_menuIndex = 0x3212;
      else if (menuPosition() == 0x3212) this->_menuIndex = 0x1212;
      break;
    }

    //Random
    if (menuPosition()==0x1312 || menuPosition()==0x2312)
    {
      if (menuPosition() == 0x1312) this->_menuIndex = 0x2312;
      else if (menuPosition() == 0x2312) this->_menuIndex = 0x1312;
      break;
    }

    //Solid
    if (menuPosition()==0x1412 || menuPosition()==0x2412)
    {
      if (menuPosition() == 0x1412) this->_menuIndex = 0x2412;
      else if (menuPosition() == 0x2412) this->_menuIndex = 0x1412;
      break;
    }

    this->_menuDepth +=4;
    this-> _menuIndex = this->_menuIndex + (1 << menuDepth());

    //ignore set weekday
    // if (menuPosition() == 0x1211) this->_menuIndex = 0x2211;

    break;
  case 'h':  
    if (_alarming == true)   _alarming = false;
    if (menuDepth() == 0x0)
    {
      this->_menuIndex=0x0;
      break;
    } 
    this->_menuIndex =this->_menuIndex - (this->_menuCurrent << menuDepth());
    this->_menuDepth -=4;

    break;

    //Going Left
  case 'l':

    //Clock
    if (menuPosition()==0x1111 || menuPosition()==0x2111 || menuPosition()==0x3111 || menuPosition()==0x1211 || menuPosition()==0x2211 || menuPosition()==0x3211 || menuPosition()==0x4211)
    {

      if (menuPosition()==0x01111 && tHour >0 ) tHour-- ; 
      else if (menuPosition()==0x01111 && tHour ==0 ) tHour = 23;  //hour
      
      if (menuPosition()==0x02111 && tMinute >0 ) tMinute-- ; 
      else if (menuPosition()==0x02111 && tMinute ==0 ) tMinute = 59;  //min
     
      if (menuPosition()==0x03111 && tHour >=12)  tHour-=12; //am
     
      if (menuPosition()==0x01211 && tDay>0 ) tDay-- ; 
      else if (menuPosition()==0x01211 && tDay ==0 ) tDay==6; //day
     
      if (menuPosition()==0x02211 && tDate >1 ) tDate-- ; 
      else if (menuPosition()==0x02211 && tDate ==1 ) tDate==31; //day
     
      if (menuPosition()==0x03211 && tMonth >1 ) tMonth-- ; 
      else if (menuPosition()==0x03211 && tMonth ==1 ) tMonth=12;  //month
      
      if (menuPosition()==0x04211 && tYear >0 ) tYear-- ; 
      else if (menuPosition()==0x04211 && tYear ==0 ) tYear=99; //year

      setDateTime();
      break;
    }

    //Alarm
    if (menuPosition()==0x1121 || menuPosition()==0x2121 || menuPosition()==0x3121 || menuPosition()==0x1221)
    {
      if (menuPosition()==0x1121 && getAlarmHour() >1 ) setAlarmHour(getAlarmHour() - 1 ); 
      else if (menuPosition()==0x1121 && getAlarmHour()==1) setAlarmHour(12);
      if (menuPosition()==0x2121 && getAlarmMin() >0 ) setAlarmMin(getAlarmMin() - 1 ); 
      else if (menuPosition()==0x2121 && getAlarmMin()==0) setAlarmMin(59);
      if (menuPosition()==0x3121) setAlarmAM(true);
      if (menuPosition()==0x1221) setAlarmOn(false);

      break;
    }

    //brightness / LCD backlight / lcd sleep time
    if (menuPosition() == 0x122 || menuPosition() == 0x132 || menuPosition() == 0x142) 
    {
      if (menuPosition()==0x122 && getLampBrightness()>1) setLampBrightness(getLampBrightness() - 1);
      if (menuPosition()==0x132 && getLCDBrightness()>1) setLCDBrightness(getLCDBrightness() - 1);
      //  if (menuPosition()==0x142 && getLCDSleepTime()>10) setLCDSleepTime(getLCDSleepTime() - 1);
      delay(5);
      break;
    }

    //AudioViz Fade Speed
    //   if (menuPosition()==0x1112)
    //  {
    //   if (getAudioFadeSpeed() >1 ) setAudioFadeSpeed(getAudioFadeSpeed()-1);
    //  break;
    //  }

    //Cycle
    if (menuPosition()==0x1212 || menuPosition()==0x2212 || menuPosition()==0x3212)
    {
      if (menuPosition()==0x1212 && getCycleHoldTime() >1 ) setCycleHoldTime(getCycleHoldTime() - 1 );
      if (menuPosition()==0x2212 && getCycleFadeTime() >1 ) setCycleFadeTime(getCycleFadeTime() - 1 );
      if (menuPosition()==0x3212 && getCycleSteps()  >1 ) setCycleSteps(getCycleSteps() - 1 );

      break;
    }

    //Random
    if (menuPosition()==0x1312 || menuPosition()==0x2312)
    {
      if (menuPosition()==0x1312 && getRandomHoldTime() >1 ) setRandomHoldTime(getRandomHoldTime() - 1 );
      if (menuPosition()==0x2312 && getRandomFadeTime() >1 ) setRandomFadeTime(getRandomFadeTime() - 1 );
      break;
    }

    //Solid
    if (menuPosition()==0x1412 || menuPosition()==0x2412)
    {
      if (menuPosition()==0x1412 && getColorHue() >0 ) setColorHue(getColorHue() - 1 );
      if (menuPosition()==0x2412 && getColorSat() >0 ) setColorSat(getColorSat() - 1 );
      break;
    }

    //limits moving left
    if (menuPosition() == 0x0) this->_menuIndex = 0x2;
    else if (menuPosition() == 0x11)  this->_menuIndex = 0x21;
    else if (menuPosition() == 0x111)  this->_menuIndex = 0x211;

    else if (menuPosition() == 0x121)  this->_menuIndex = 0x221;
    else if (menuPosition() == 0x12)  this->_menuIndex = 0x32;
    else if (menuPosition() == 0x212)  this->_menuIndex = 0x412;
    else this->_menuIndex = this->_menuIndex - (1 << menuDepth());

    //Display Mode
    if (menuPosition() == 0x112) setDisplayMode(0x0);
    if (menuPosition() == 0x212) setDisplayMode(0x1);
    if (menuPosition() == 0x312) setDisplayMode(0x2);
    if (menuPosition() == 0x412) setDisplayMode(0x3);

    break;

    //Going right
  case 'r':


    //Clock
    if (menuPosition()==0x1111 || menuPosition()==0x2111 || menuPosition()==0x3111 || menuPosition()==0x1211 || menuPosition()==0x2211 || menuPosition()==0x3211 || menuPosition()==0x4211)
    {

      if (menuPosition()==0x01111 && tHour <23 ) tHour++ ; 
      else if (menuPosition()==0x01111 && tHour ==23 ) tHour = 0;  //hour
    
      if (menuPosition()==0x02111 && tMinute <59 ) tMinute++ ; 
      else if (menuPosition()==0x02111 && tMinute ==59 ) tMinute = 0;  //min
     
      if (menuPosition()==0x03111 && tHour <=12)  tHour+=12; //am
     
      if (menuPosition()==0x01211 && tDay<6 ) tDay++ ; 
      else if (menuPosition()==0x01211 && tDay ==6 ) tDay==0; //day
     
      if (menuPosition()==0x02211 && tDate <31 ) tDate++ ; 
      else if (menuPosition()==0x02211 && tDate ==31 ) tDate==1; //day
     
      if (menuPosition()==0x03211 && tMonth <12 ) tMonth++ ; 
      else if (menuPosition()==0x03211 && tMonth ==12 ) tMonth=1;  //month
     
      if (menuPosition()==0x04211 && tYear <99 ) tYear++ ; 
      else if (menuPosition()==0x04211 && tYear ==99 ) tYear=0; //year

      setDateTime();
      break;
    }

    //Alarm
    if (menuPosition()==0x1121 || menuPosition()==0x2121 || menuPosition()==0x3121 || menuPosition()==0x1221)
    {
      if (menuPosition()==0x1121 && getAlarmHour() < 12 ) setAlarmHour(getAlarmHour() + 1 ); 
      else if (menuPosition()==0x1121 && getAlarmHour()==12) setAlarmHour(1);
      if (menuPosition()==0x2121 && getAlarmMin() < 59 ) setAlarmMin(getAlarmMin() + 1 ); 
      else if (menuPosition()==0x2121 && getAlarmMin()==59) setAlarmMin(0);
      if (menuPosition()==0x3121) setAlarmAM(false);
      if (menuPosition()==0x1221) setAlarmOn(true);

      break;
    }

    //brightness / LCD backlight / lcd sleep time
    if (menuPosition() == 0x122 || menuPosition() == 0x132 || menuPosition() == 0x142) {
      if (menuPosition()==0x122 && getLampBrightness()<255) setLampBrightness(getLampBrightness() + 1);
      if (menuPosition()==0x132 && getLCDBrightness()<26) setLCDBrightness(getLCDBrightness() + 1);
      // if (menuPosition()==0x142 && getLCDSleepTime()<31) setLCDSleepTime(getLCDSleepTime() + 1);
      delay(5);
      break;
    }

    //AudioViz Fade Speed
  //  if (menuPosition()==0x1112)
  //  {
  //    if (getAudioFadeSpeed() < 255 ) setAudioFadeSpeed(getAudioFadeSpeed()+1);
  //    break;
  //  }

    //Cycle
    if (menuPosition()==0x1212 || menuPosition()==0x2212 || menuPosition()==0x3212)
    {
      if (menuPosition()==0x1212 && getCycleHoldTime() <30 ) setCycleHoldTime(getCycleHoldTime() + 1 );
      if (menuPosition()==0x2212 && getCycleFadeTime() <30 ) setCycleFadeTime(getCycleFadeTime() + 1 );
      if (menuPosition()==0x3212 && getCycleSteps() <128 ) setCycleSteps(getCycleSteps() + 1 );
      break;
    }

    //Random
    if (menuPosition()==0x1312 || menuPosition()==0x2312)
    {
      if (menuPosition()==0x1312 && getRandomHoldTime() <30 ) setRandomHoldTime(getRandomHoldTime() + 1 );
      if (menuPosition()==0x2312 && getRandomFadeTime() <30) setRandomFadeTime(getRandomFadeTime() + 1 );
      break;
    }

    //Solid
    if (menuPosition()==0x1412 || menuPosition()==0x2412)
    {
      if (menuPosition()==0x1412 && getColorHue() <255 ) setColorHue(getColorHue() + 1 );
      if (menuPosition()==0x2412 && getColorSat() <255 ) setColorSat(getColorSat() + 1 );
      break;
    }


    //limits moving right
    if (menuPosition() == 0x2) this->_menuIndex = 0x0;
    else if (menuPosition() == 0x21)  this->_menuIndex = 0x11;
    else if (menuPosition() == 0x211)  this->_menuIndex = 0x111;
    else if (menuPosition() == 0x221)  this->_menuIndex = 0x121;
    else if (menuPosition() == 0x32)  this->_menuIndex = 0x12;
    else if (menuPosition() == 0x412)  this->_menuIndex = 0x212;
    else this->_menuIndex = this->_menuIndex + (1 << menuDepth());

    //Display Mode
    if (menuPosition() == 0x112) setDisplayMode(0x0);
    if (menuPosition() == 0x212) setDisplayMode(0x1);
    if (menuPosition() == 0x312) setDisplayMode(0x2);
    if (menuPosition() == 0x412) setDisplayMode(0x3);

  default:
    break;
  }

  this->_menuCurrent = menuPosition() >> menuDepth();

  drawMenu(menuPosition());
}
Example #6
0
void Lamp::drawCycle()
{

  long hTime;
  long fTime;


  switch (getDisplayMode())
  {
  case lCYCLE:
    hTime = getCycleHoldTime();
    fTime = getCycleFadeTime();
    break;
  case lRANDOM:
    hTime = getRandomHoldTime();
    fTime = getRandomFadeTime();      
    break;
  default:
    break;
  }


  long totalCycleLen = (hTime + fTime)*1000;
  totalCycleLen &=0x0000FFFF;
  long _step = millis() % totalCycleLen;

  //end of cycle;
  if (_step >= hTime*1000  && _step <=(hTime*1000)+10 && _stepped==false)
  {
    _stepped = true;
    switch (getDisplayMode())
    {
    case lCYCLE:
      _targetHue += getCycleSteps();  
      break;
    case lRANDOM:
      _targetHue += random(-getCycleSteps()*2,getCycleSteps()*2);

      break;
    default:
      break;
    }

    //  Serial.println(_targetHue);

    _fadeDirection =0;
    _fadeSteps = 0;

    unsigned char _tmp = 0;
    unsigned char _a = _currentHue;
    while (_a != _targetHue)
    {
      _a++;
      _tmp++;
    }
    _fadeSteps = _tmp;
    _fadeDirection = 1;

    _tmp = 0;
    _a = _currentHue;
    while (_a != _targetHue)
    {
      _a--;
      _tmp++;
    }

    if (_tmp < _fadeSteps)
    {
      _fadeSteps = _tmp;
      _fadeDirection = -1;
    }
  }
  //fade
  else if (_step >= (hTime*1000)+15)
  {
    _stepped=false;
    if (_currentHue != _targetHue)
    {
      long incStep =(fTime*1000)/_fadeSteps ;
      if (_step % incStep < _prevSubStep) _currentHue+= _fadeDirection;
      _prevSubStep = _step % incStep;

    }
  }

  _ledColors[0] = hsbToRGB(getColorHue() +_currentHue,getColorSat(),ambBrightness);
  _ledColors[1] = hsbToRGB(byte(getColorHue() +_currentHue  - (getCycleSteps()*(PI/1.5f) )),byte(getColorSat()/1.2f),ambBrightness);

  _prevStep = _step;

}
Example #7
0
void Lamp::drawSolid()
{

  _ledColors[0] = hsbToRGB(getColorHue() ,getColorSat(),ambBrightness);
  _ledColors[1] = hsbToRGB(getColorHue() ,byte(getColorSat()/1.2f),ambBrightness);
}