Пример #1
0
/*********************************************************************
函数名称: void Buzzer_PowerOn(void)
功    能: 上电短响两声
说    明: 
入口参数: 
返 回 值: 
设    计: 丛海旭               时    间: 2013-12-11
修    改:                      时    间: 
*********************************************************************/
void Buzzer_PowerOn(void)
{
    BuzzerOn();
    delay(40);
    BuzzerOff();
    delay(15);

    BuzzerOn();
    delay(40);
    BuzzerOff();
}
Пример #2
0
void OPBuzzer(void)
{
    if (gb_BuzzerAlwaysOnFlg == true)
    {
        BuzzerOn();
    }
    else if (u8BuzerMode != 0)
    {
        BuzzerOn();
        if (gu32_Sys10ms - u32BuzerStarTime > u32BuzerHoldTime)
        {
            BuzzerOff();
            u8BuzerMode = 0;
        }
    }
    else if (gb_BatchOverFlg || gb_Error9Flg || ((gb_OverFlg || gb_UnderFlg) && gb_RunFlg))
        BuzzerOn();
    else
        BuzzerOff();
}
Пример #3
0
void Beep1Sec(){
  
  if(BeepID!=0){
    ReleaseTimer(BeepID);  //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放
    BeepID=0;
    BuzzerOff();  //關閉並省電
  }
  
  BuzzerOn();
  BeepID=TakeTimer(RANDOM,3000,SINGLE,BuzzerOff);
}
Пример #4
0
/**
 * @brief   关机处理
 */
void StateShutdownSecond(void)
{
	S_Device* lpDev;
	StateDevicePointGet(&lpDev);

	// 为了整秒
	if (lpDev->pTemp->Time.Count != sShutdownCount)
	{
		return;
	}

	if (lpDev->pTemp->Time.Sec > sShutdownSecond)
	{
		if (sShutdown.Out.Time > 0)
		{
			sShutdown.Out.Time--;
		}
		PowerSaveBglFresh();
	}
	else
	{
		return;
	}
	sShutdownSecond = lpDev->pTemp->Time.Sec;

//	S_Value_U16 lValue;
//	sShutdown.Out.Func.ValueGet(&lValue);
//
//	if (sShutdown.Out.AD == E_TRUE)
//	{
//		StateShutdownValueDisp(&lValue);
//	}
//
//	sShutdown.Out.Func.ValueSet(&lValue);

	S_Buzzer lBz;
	lBz.Src = BUZZER_SECOND;
	lBz.Time = BUZZER_SECOND_TIME;
	BuzzerOn(&lBz);

	if (sShutdown.Out.Time == 0)
	{
		sShutdown.Out.Func.Shutdown();
		StateShutdownToPowerOff();
	}
	else
	{
		// 显示秒数
		StateShutdownSecDisp();
	}
}
Пример #5
0
/*********************************************************************
函数名称: void BuzzerStart(u32 fu32_HoldTime)
功    能: 启动蜂鸣器响fu32_HoldTime×10ms
说    明: 
入口参数: fu32_HoldTime:响声时间,为0时一直响报警
返 回 值: 
设    计: 丛海旭               时    间: 2013-12-11
修    改:                      时    间: 
*********************************************************************/
void BuzzerStart(u32 fu32_HoldTime)
{
    BuzzerOn();
    if (fu32_HoldTime != 0)
    {
        u8BuzerMode = 1;
        u32BuzerHoldTime = fu32_HoldTime;
        u32BuzerStarTime = gu32_Sys10ms;
    }
    else
    {
        gb_BuzzerAlwaysOnFlg = true;
    }
}
Пример #6
0
void ShortBeep(){
  BeepCount=0;
  
  if(BeepID!=0){
    ReleaseTimer(BeepID);  //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放
    BeepID=0;
    BuzzerOff();  //關閉並省電
  }
  if (BeepCount2>=BeepTimes){
    ReleaseTimer(BeepID2);
    BeepID2=0;
    BuzzerOff();  //關閉並省電
  }else{
    BuzzerOn();
    BeepID=TakeTimer(RANDOM,1500,SINGLE,BuzzerOff);
  }
  BeepCount2++; 
}
Пример #7
0
/**
 * @brief   开机振动声音灯
 */
void StateLedBzVbrCheck(void)
{

	static uint8_t sLedBzVbrCount = 0;

	if (sDevice.pTemp->Disp.Fresh != TURN_ON)
	{
		return;
	}

	if (sLedBzVbrCount < 2)
	{

		S_Led lLed;

		lLed.Src = LED_POWER_ON;
		lLed.Time = LED_POWER_ON_TIME;
		lLed.Pin = LED_PIN_1,
		LedOn(&lLed);

		S_Buzzer lBz;

		lBz.Src = BUZZER_POWER_ON;
		lBz.Time = BUZZER_POWER_ON_TIME;
		BuzzerOn(&lBz);

		S_Vibration lVbr;

		lVbr.Src = VIBRATION_POWER_ON;
		lVbr.Time = VIBRATION_POWER_ON_TIME;
		VibrationOn(&lVbr);
	}
	else
	{
		// 取固定的值,防止溢出
		sLedBzVbrCount = 3;
	}

	sLedBzVbrCount++;
}
Пример #8
0
void BuzzerS(void)
{
    BuzzerOn();
    delay(200);
    BuzzerOff();
}
Пример #9
0
/**
 * @brief   状态转换
 */
void StateTrans(void)
{
	SourceOn();
	PumpOn();

	DeviceDataInit();
	GasDataInit();

	// 获取存储的数据
	SaveReadInit();

	// 获取存储的设置
	Lcd__LangSet(sDevice.pSave->Language);

	StateSelfCheck();

	ChargeOn();

	while (1)
	{
		// 获取信号量 20mS
		rt_sem_take(&sSemSystemTime, RT_WAITING_FOREVER);

		/* Reload IWDG counter */
		IWDG_ReloadCounter();

		KEY_Get();

		DeviceDispCount();
		DeviceTimeCount();


		switch (sState)
		{
			case STATE_SELF_CHECK:
				StateLedBzVbrCheck();
				SelfCheckJumpCheck();
				break;

			case STATE_DETECT:
				StateDetect(&sGas, &sDevice);
//				DisRecSet(0, 0, 127, 63);
				break;
			case STATE_MENU:
				MenuKey(gKeyShort);
				MenuNoOperateCountdown();
				// 闪烁
//				MenuBlink(&sDevice);

				break;

			case STATE_INPUT:
				StateInputKey(gKeyShort);
				// 闪烁
				if (sDevice.pTemp->Disp.Fresh == TURN_ON)
				{
					DisBlink();
				}
				break;

			case STATE_COUNTDOWN:
				StateCountdownKey(gKeyShort);
				StateCountdownSecond();
				break;

			case STATE_RESULT:
				StateResultKey(gKeyShort);
				break;

			case STATE_SHUTDOWN:
				StateShutdownKey(gKeyLong);
				StateShutdownSecond();
				break;

			case STATE_POWER_OFF:
				break;

			case STATE_INFO:
				StateInfoKey(gKeyShort);
				StateInfoSecond();
				break;

			case STATE_CHARGE:
//				PumpOff();
//				sDevice.pTemp->Fan.State = TURN_OFF;
				break;

			default:
				break;
		}

		if (sState != STATE_SELF_CHECK)
		{
			if (gKeyTrg)
			{
				S_Buzzer lBz;

				lBz.Src = BUZZER_KEY;
				lBz.Time = BUZZER_KEY_TIME;
				BuzzerOn(&lBz);
			}
		}

		if (sState != STATE_POWER_OFF)
		{
			if (gKeyTrg || gKeyLong)
			{
				PowerSaveBglFresh();
			}
		}

		if (gKeyTrg || gKeyLong)
		{
			MenuNoOperateFresh();
		}


		// 设备倒计时
		PowerSaveBglCountdown();
		LedCountdown();
		BuzzerCountdown();
		VibrationCountdown();
		StateBatCheck();
		StateChargeCheck();

	}
}
Пример #10
0
void Test_SL030(void)
{
  #define RCVCMD g_cRxBuf[1]
  #define RCVSTA g_cRxBuf[2]
  WAKEUP_H;
  Start_Time(5);
  while(g_bOverTime==0);
  WAKEUP_L;
  Start_Time(5);
  while(g_bOverTime==0);
  WAKEUP_H;
  g_cCardType=0xff;
  if(CARDIN!=0) return;
  Init_I2C();
  if(I2C_SelectCard(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
  if((RCVCMD!=0x01)||(RCVSTA!=0)) return;
  if(g_cRxBuf[g_cRxBuf[0]]==1) g_cCardType=CARDTYPE_S50;        //Mifare 1k 4 byte UID
  else if(g_cRxBuf[g_cRxBuf[0]]==2) g_cCardType=CARDTYPE_S50;   //Mifare 1k 7 byte UID
  else if(g_cRxBuf[g_cRxBuf[0]]==3) g_cCardType=CARDTYPE_UL;    //Ultralight 7 byte UID
  else if(g_cRxBuf[g_cRxBuf[0]]==4) g_cCardType=CARDTYPE_S70;   //Mifare 4k 4 byte UID
  else if(g_cRxBuf[g_cRxBuf[0]]==5) g_cCardType=CARDTYPE_S70;   //Mifare 4k 7 byte UID
  else if(g_cRxBuf[g_cRxBuf[0]]==6) g_cCardType=CARDTYPE_DES;   //DesFire 7 byte UID
  switch(g_cCardType)
  {
    case CARDTYPE_S50:
    case CARDTYPE_S70:
      if(I2C_LoginSector0(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x02)||(RCVSTA!=0x02)) return;
      if(I2C_WriteBlock1(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x04)||(RCVSTA!=0x00)) return;
      if(I2C_ReadBlock1(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x03)||(RCVSTA!=0x00)) return;
      if(memcmp(&IIC_ComWriteBlock1[3],&g_cRxBuf[3],16)!=0) return;
      if(I2C_ComIntiPurse1(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x06)||(RCVSTA!=0x00)) return;
      if(I2C_ComIncrPurse1(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x08)||(RCVSTA!=0x00)) return;
      if(I2C_ComDecrPurse1(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x09)||(RCVSTA!=0x00)) return;
      if(I2C_ComReadPurse1(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x05)||(RCVSTA!=0x00)) return;
      //Check value	 
      lPurseValue=g_cRxBuf[6];
      lPurseValue=(lPurseValue<<8)+g_cRxBuf[5];
      lPurseValue=(lPurseValue<<8)+g_cRxBuf[4];
      lPurseValue=(lPurseValue<<8)+g_cRxBuf[3];
      if(lPurseValue!=0x12345678+0x00000002-0x00000001) return;
      if(I2C_ComCopyValue(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x0a)||(RCVSTA!=0x00)) return;
      I2C_ComHalt();
      BuzzerOn();
      break;
    case CARDTYPE_UL:
      if(I2C_ComWriteUltralightPage5(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x11)||(RCVSTA!=0x00)) return;
      if(I2C_ComReadUltralightPage5(g_cRxBuf,sizeof(g_cRxBuf))==0) return;
      if((RCVCMD!=0x10)||(RCVSTA!=0x00)) return;
      if(memcmp(&IIC_ComWriteUltralightPage5[3],&g_cRxBuf[3],4)!=0) return;
      I2C_ComHalt();
      BuzzerOn();
      break;
    default:
      break;
  }
}
Пример #11
0
void MainLoop(uint8_t capPushA, uint8_t capPushB, uint16_t tempSensor, uint16_t battery) {
    if(statusChange) { // Don't detect cap touch when the LED status has just changed
        capPushA = 0;
        capPushB = 0;
        statusChange--;
    }
    if (battery < BATTERY_LOW_THRESH) {
        //About 2.5v
        if (batteryLowCounter < 200)
            batteryLowCounter++;
    }
    if ((capPushA == 1) || (capPushB == 1)) {
        beepTime = 0; // Stop beeping the buzzer when the user touches either of the capacitive touch buttons
        if (noButtonPressTime < STATUS_CANCEL_THRESH) { // Was a cap touch button pressed recently ?
            // If yes, this press must have been to increase (button A) or decrease (button B) the whistle count
            if (capPushA == 1) {
                if (whistleCount < MAX_WHISTLE_COUNT && batteryLowCounter < BATTERY_LOW_COUNT_THRESH) {
                    whistleCount++; // increase the target whistle count
                }
            } else if (capPushB == 1) {
                if (whistleCount > 0) {
                    whistleCount--; // decrease the target whistle count
                }
            }
        }
        ShowStatus(); // When a cap touch button is pressed, show status (number of whistles left) immediately
        noButtonPressTime = 0; // Keep track of how much time since a cap touch button was pressed
    } else {
        if (noButtonPressTime < 250)
            noButtonPressTime++;
        // After showing the status, blink the LED and shut it off to conserve power
        if ((noButtonPressTime > STATUS_BLINK_THRESH
                && noButtonPressTime < STATUS_CANCEL_THRESH2)
                || noButtonPressTime < STATUS_CANCEL_THRESH) {
            ShowStatus();
        } else {
            CancelStatus();
        }
    }
    time++;
    downSample++;
    if (downSample == TEMP_DOWNSAMPLE_FACTOR) {
        downSample = 0;
        uint16_t val = tempSensor; // Process thermistor samples once every ~0.25 sec

        uint32_t val_lo = mafilt(tempLow, val, TEMP_LOW_PASS_FILTER_N); // low-pass filter the thermistor (ADC) readings to suppress noise
        //sb(val_lo >> 4);
        if(val_lo > OVER_TEMP_THRESH_HI)
            overTemp = 1;
        else if(val_lo < OVER_TEMP_THRESH_LO)
            overTemp = 0;

        int32_t val_hi = (TEMP_HI_PASS_FILTER_N) * val_lo - mafilt(tempHi, val_lo, TEMP_HI_PASS_FILTER_N); // high-pass filter to detect only changes in temperature
        if (val > MIN_TEMP_WHISTLE_DETECTION && val_hi < -MIN_TEMP_FALL_WHISTLE_DETECTION) {
            // detect whistle when the temperature is high (> ~100C), and the temperature has sharply fallen
            whistleOneCount++;
        } else {
            if (whistleOneCount > MIN_TEMP_FALL_DURATION_WHISTLE_DETECTION) { // See if the temperature fell for a duration greater than 3 secs before rising again
                // Whistle detection complete !
                //sb(128);
                if (whistleCount > 0) { 
                    whistleCount--;
                    if (whistleCount == 0) { // Number of whistles == Target number of whistles ?
                        beepTime = WHISTLE_BEEP_TIME; // Start beeping the buzzer for 45 seconds or until the user touches a cap touch button
                    }
                    statusChange += 6; // to prevent false positives in cap touch after a whistle is detected and the LEDs are flashed
                }
                ShowStatus(); // after each whistle, show how many whistles are left on the LEDs
                noButtonPressTime = 0; // To blink the LED, invoke the same code that shows status when a cap button is touched
            }
            whistleOneCount = 0;
        }
        //sb(10);
    }

    if (beepTime > 0) {
        if( (beepTime & 0x0F) > 10 ) {
            BuzzerOn(); // Alternately beep the buzzer
        } else {
            BuzzerOff();
        }
        beepTime--;
    } else {
        BuzzerOff();
    }

    if(overTemp)
        BuzzerOn();

    //sb(battery >> 2);
    //sb(tempSensor >> 2);

}