예제 #1
0
/*******************************************************************************
* Function Name  : Axis3_Test
* Description    : Light Sensor Test.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void Axis3_Test(void)
{
  char		buf[24];
  int32_t	xoff = 0;
  int32_t	yoff = 0;
  int32_t	zoff = 0;
  int8_t	x = 0;
  int8_t	y = 0;
  int8_t	z = 0;

   
  OLED_ClearScreen();
  OLED_DisStrLine(0, 0, "Axis-3");
  

  I2CInit(I2CMASTER, 0);

  acc_init();
  /* Assume base board in zero-g position when reading first value. */
  acc_read(&x, &y, &z);
  xoff = 0-x;
  yoff = 0-y;
  zoff = 0-z;

 // while(1)
 // {	
    /* Accelerometer */
    acc_read(&x, &y, &z);
    x = x+xoff;
    y = y+yoff;
    z = z+zoff;

    snprintf(buf, 20, "Acc x: %d  ", x);
    OLED_DisStrLine(2, 0, (uint8_t *)buf);
	printf("\r\nAcc x: %d,  ", x);

	snprintf(buf, 20, "Acc y: %d  ", y);
    OLED_DisStrLine(3, 0, (uint8_t *)buf);
	printf("Acc y: %d,  ", y);

	snprintf(buf, 20, "Acc z: %d  ", z);
    OLED_DisStrLine(4, 0, (uint8_t *)buf);
	printf("Acc z: %d. ", z);
	
	delay_ms(250);

  //  if(KEY_Read() == KEY_ESC)
  //	 break;
 // }
}
/*******************************************************************************
**函    数: LowPower_CheckTime
**功    能: 进入低功耗倒计时 ( 10秒 )
**参    数: void
**返    回: void
**说    明: 需要100毫秒运行一次  100ms*100 = 10S
*******************************************************************************/
void LowPower_CheckTime(void)
{
    if(LowPowerTimeCount++ >= STANDBY_TIME_COUNT)
    {
        LowPowerTimeCount = 0;
        AirCondition_SaveData();    //保存空调配置数据
        Save_CurrentKeyState();
		SaveSerialNum();
        Standby_Mode();           
    }
    else if(LowPowerTimeCount == STANDBY_TIME_COUNT1)
    {
        gSleepFlag = 1;
//        ShowLED_CloseAll();
        ShowLED_LightON(gPrevoiusKeyValue,0xffff); 
        OLED_ClearScreen();
        gWukeUpForPassWord=1;
        gWukeUpForKey = 1;
    }
}
/*******************************************************************************
**函    数: AirCondition_FirstCMD
**功    能: 显示界面从普通按键切换过来
**参    数: relateType            --关联类型
**返    回: void
*******************************************************************************/
void AirCondition_FullShow(void)
{
	if(gAirContionData.PowerSwitch == AC_POWER_ON)  //开状态
	{
		OLED_ClearScreen();
		OLED_ShowQuartPicAt(0,0,PicTab_AC[gAirContionData.SetMode]);        //显示 空调模式图片
		OLED_ShowQuartPicAt(0,4,PicTab_AC[gAirContionData.SetWindSpeed+5]); //显示 风速模式图片
		
		OLED_DrawLine(64);  //画竖线
		OLED_Show32x323PicAt(12,2,PicTab_32x32[0]);//摄氏度
		Show_Temper();//显示温度
					//扫风
		if(gAirContionData.SetWindSweep == AC_WINDSWEEP_OFF)
		{
			OLED_ShowString(9,3,"     ",0);
		}
		else if(gAirContionData.SetWindSweep == AC_WINDSWEEP_OpDown) //上下扫风
		{
			OLED_ShowPicAt( 9, 6, 23, 16, &PicTab_Wind[0]);
			OLED_ShowString(11,3,"  ",0);
		}
		else if(gAirContionData.SetWindSweep == AC_WINDSWEEP_LeftWright) //左右扫
		{
			OLED_ShowString(9, 3,"  ",0);                
			OLED_ShowPicAt(11, 6, 23, 16, &PicTab_Wind[1*46]);
		}
		else if(gAirContionData.SetWindSweep == AC_WINDSWEEP_All)
		{
			OLED_ShowPicAt( 9, 6, 23, 16, &PicTab_Wind[0*46]);
			OLED_ShowPicAt(11, 6, 23, 16, &PicTab_Wind[1*46]);
		}
	}
	else OLED_ShowHalfPicAt(4,PicTab[19]);           //空调关闭图片
	
	
	//发送数据
	AirCondition_SendData();
    
}
/*******************************************************************************
**函    数: AirCondition_KeyHander
**功    能: 空调面板按键数据处理
**参    数: keyNum        --按键号
**返    回: void
*******************************************************************************/
void  AirCondition_KeyHander(u8 keyNum)
{
    switch(keyNum)
    {         
        case 1:                     // - 温度 -
            if(gAirContionData.SetMode != AC_MODE_AUTO)     //自动模式不可以设置温度
            {
               // if(gAirContionData.SetTemper > AC_MIN_TEMPER)  gAirContionData.SetTemper--;
							if(gAirContionData.SetTemper > gAirContionData.SetMinTemp)
								gAirContionData.SetTemper--;
            }
            Show_Temper();
            break;        
        case 2:                     //电源按键
            if(gAirContionData.PowerSwitch == AC_POWER_ON)
            {
                gAirContionData.PowerSwitch = AC_POWER_OFF;
                OLED_ClearScreen();
                //OLED_ShowHalfPicAt(4,PicTab[9]);           //空调关闭图片
								OLED_ShowHalfPicAt(4,PicTab[18]);
            }
            else 
            {
                gAirContionData.PowerSwitch = AC_POWER_ON;
                OLED_ClearScreen();
                //OLED_ShowHalfPicAt(4,PicTab[10]);           //空调打开图片
							OLED_ShowHalfPicAt(4,PicTab[19]); 
            }
            break;
        case 3:                     //+ 温度 +
            if(gAirContionData.SetMode != AC_MODE_AUTO)     //自动模式不可以设置温度
            {
               // if(gAirContionData.SetTemper < AC_MAX_TEMPER) gAirContionData.SetTemper++;
							if(gAirContionData.SetTemper < gAirContionData.SetMaxTemp)
								gAirContionData.SetTemper++;							
            }
            Show_Temper();
            break;
        case 4:                     // 模式
            if(gAirContionData.SetMode < AC_MODE_MAX)    gAirContionData.SetMode ++;
            else gAirContionData.SetMode = AC_MODE_AUTO;
        
            OLED_ShowQuartPicAt(0,0,PicTab_AC[gAirContionData.SetMode]);    //显示 空调模式图片
            break;
        case 5:                     // 风速
            if(gAirContionData.SetWindSpeed < AC_WIND_MAX)
                gAirContionData.SetWindSpeed ++;
            else gAirContionData.SetWindSpeed = AC_WIND_AUTO;
            
            OLED_ShowQuartPicAt(0,4,PicTab_AC[gAirContionData.SetWindSpeed+5]);     //显示 风速模式图片
            break;  
        case 6:                     //扫风开关
					/*
            if ( gAirContionData.SetWindSweep < AC_WINDSWEEP_All )
            {
                gAirContionData.SetWindSweep++;
            }
            else gAirContionData.SetWindSweep = AC_WINDSWEEP_OFF;
				*/
            // 液晶屏显示???
				    if ( gAirContionData.SetWindSweep < AC_WINDSWEEP_All )
            {
                gAirContionData.SetWindSweep++;
            }
            else gAirContionData.SetWindSweep = AC_WINDSWEEP_OFF;
            // 液晶屏显示
            if(gAirContionData.SetWindSweep == AC_WINDSWEEP_OFF)
            {
                OLED_ShowString(9,3,"     ",0);
            }
            else if(gAirContionData.SetWindSweep == AC_WINDSWEEP_OpDown) //上下扫风
            {
                OLED_ShowPicAt( 9, 6, 23, 16, &PicTab_Wind[0]);
                OLED_ShowString(11,3,"  ",0);
            }
            else if(gAirContionData.SetWindSweep == AC_WINDSWEEP_LeftWright) //左右扫
            {
                OLED_ShowString(9, 3,"  ",0);                
                OLED_ShowPicAt(11, 6, 23, 16, &PicTab_Wind[1*46]);
            }
            else if(gAirContionData.SetWindSweep == AC_WINDSWEEP_All)
            {
                OLED_ShowPicAt( 9, 6, 23, 16, &PicTab_Wind[0*46]);
                OLED_ShowPicAt(11, 6, 23, 16, &PicTab_Wind[1*46]);
            }
            break;
        default : 
            return;//break;        
    } 
    //发送数据
    AirCondition_SendData();
}