Пример #1
0
bool Sim900::powerUp()
{
    if(SIM900_DEBUG_OUTPUT) {
        SIM900_DEBUG_OUTPUT_STREAM->println("Powering up Modem!");
    }
    if(!isPoweredUp())
    {
        //if(_ser != NULL)
        //{
        //	_ser->listen();
        //}
        powerToggle();
        if(waitFor("Call Ready", true, NULL))
        {
            return true;
        } else
        {
            if(isPoweredUp())
            {
                powerToggle();
            }
        }

    }
    return false;
}
Пример #2
0
bool Sim900::powerDown()
{
    if(isPoweredUp())
    {
        powerToggle();
        return waitFor("NORMAL POWER DOWN", true, NULL);
    }
    return false;
}
Пример #3
0
void loop()
{
	
	if(!switch_1.getState() && millis()-sw1_last_click_time > BUTTON_DEBOUNCE_INTERVAL)
	{	
		powerToggle();
		while(!switch_1.getState());	//wait until switch release.
		sw1_last_click_time = millis();
	}
	
	
	if(powerFlag)	//main body code
	{
		if(!switch_2.getState() && millis()-sw2_last_click_time > BUTTON_DEBOUNCE_INTERVAL)
		{
			directionToggle();
			while(!switch_2.getState());	//wait until switch released.
			sw2_last_click_time = millis();
		}
		
		motorEnable.High();
		
		
		
		if(soft_start_flag)
		{
			uint8_t currentPwmVal = map(analogRead(POT),0,1023,0,255);
			
			if(incrementer < currentPwmVal && millis() - softStartInterval > STARTUP_INTERVAL_DELAY)
			{
				incrementer+=10;
				pwmValue = incrementer;
				softStartInterval = millis();
			}
			
			else if(incrementer >= currentPwmVal)
			{	
				soft_start_flag = 0;
				incrementer = INCREMENTER_INIT_VALUE;
			}
		}
		
		else
		{
			pwmValue = map(analogRead(POT),0,1023,0,255);
		}
		
		
		if(!directionFlag)
			clockwise();
		else
			anti_clockwise();
		
		Serial.println(analogRead(SHUNT_RES));
		
		if(analogRead(SHUNT_RES)>=14)
		{
		//	uint32_t startCheck = millis();
			Serial.println("OverCurrent_detected");
		/*	while(millis() - startCheck < 500 && analogRead(SHUNT_RES) >= 10);
			
			if (millis()-startCheck >= 300)
			{
				Serial.println("stop");
				motorEnable.Low();
				delay(1000);
			}
		*/
			
			delay(400);
			if(analogRead(SHUNT_RES)>=14)
			{
				ledRed.High();
				Serial.println("stop");
				motorEnable.Low();
				delay(2000);
				soft_start_flag=1;
			}
			
		}
		else
		{
			//soft_start_flag = 1;
			motorEnable.High();
			ledRed.Low();
		}
	}
	else
	{
		//power down all , blue led is controlled in powerToggle().
		motorEnable.Low();
		ledRed.Low();
		ledGreen.Low();
		ledYellow.Low();
		digitalWrite(MOTOR_PWM_1,LOW);
		digitalWrite(MOTOR_PWM_2,LOW);
	}
	
}
Пример #4
0
void CEC_TV::loop()
{
    if (CECSerial->available()){
        switch (CECSerial->read())
        {
        case MESSAGE_REPORT_LOGICAL:
            _logicalAddress = CECBlockRead();
            DbgPrint("got logical addr: %d.\r\n", _logicalAddress);
            TransmitMsg(CECDEVICE_BROADCAST, 4, CEC_OPCODE_REPORT_PHYSICAL_ADDRESS, 0, 0, 0);
            break;
        case MESSAGE_RECIEVED:
            byte len = CECBlockRead();
            if (len < 1) {
              //error
              DbgPrint("got bogus len %d.\r\n", len);
              break;
            }
            len--;//remove addr
            byte address = CECBlockRead();//contains both dst and src!
            byte* message = (byte*)malloc(len);
            for (int i = 0; i<len; i++){
              message[i] = CECBlockRead();
            }
            OnReceive(address >> 4, address & 0xF, message, len);
        }
    }
    checkStartupTimeout();
    decode_results results;
    if (irrecv.decode(&results)) {
        //#ifdef DEBUG_IRCODES
        //Serial.print("received something!\r\n");
        //#endif
        if (results.value == REPEAT){//defined in IRremote.h
            unsigned long timeNow = millis();
            if (_lastRemoteInputTime /*&& timeNow-_lastRemoteInputTime >= 20*/ && timeNow - _lastRemoteInputTime <= 200)
            {
                results.value = _lastRemoteInputCode;
                _lastRemoteInputTime = millis();
                //Serial.println("REPEAT");
                //Serial.println(results.value, HEX);
            }
            //Serial.println(timeNow - _lastRemoteInputTime);
        } else {
            if (results.decode_type == RC6)
                results.value &= ~(1L << 16);
            //Serial.println(results.value, HEX);
            _lastRemoteInputTime = millis();
            _lastRemoteInputCode = results.value;
            //Serial.println(results.value, HEX);
            //Serial.println(_lastRemoteInputCode, HEX);
        }
        switch (results.value)
        {
            case REMOTE_POWER:
                check_remote_protocol
                delay(250);
                powerToggle();
                break;
            case REMOTE_GUIDE:
                check_remote_protocol
                delay(250);
                sendKoganCode(&irsend, KOGAN_ASPECT);
                break;
            case REMOTE_UP:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_UP);
                break;
            case REMOTE_DOWN:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_DOWN);
                break;
            case REMOTE_LEFT:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_LEFT);
                break;
            case REMOTE_RIGHT:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_RIGHT);
                break;
            case REMOTE_ENTER:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_SELECT);
                break;
            case REMOTE_BACK:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_EXIT);
                break;
            case REMOTE_PLAY:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_PLAY);
                break;
            case REMOTE_PAUSE:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_PAUSE);
                break;
            case REMOTE_SKIP_BACK:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_BACKWARD);
                break;
            case REMOTE_SKIP_FORWARD:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_FORWARD);
                break;
            case REMOTE_STOP:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_STOP);
                break;
            case REMOTE_RECORD:
                check_remote_protocol
                //delay(100);
                sendUC(CEC_USER_CONTROL_CODE_RECORD);
                break;
            case REMOTE_VOL_UP:
                check_remote_protocol
                //delay(100);
                SendRemoteCode(CECDEVICE_AUDIOSYSTEM, CEC_USER_CONTROL_CODE_VOLUME_UP);
                break;
            case REMOTE_VOL_DOWN:
                check_remote_protocol
                //delay(100);
                SendRemoteCode(CECDEVICE_AUDIOSYSTEM, CEC_USER_CONTROL_CODE_VOLUME_DOWN);
                break;
            case REMOTE_1:
                check_remote_protocol
                powerOn();
                RequestPath(0x1100);
                RequestAudio(0x1100);
                break;
            case REMOTE_2:
                check_remote_protocol
                powerOn();
                RequestPath(0x1200);
                RequestAudio(0x1200);
                break;
            case REMOTE_3:
                check_remote_protocol
                powerOn();
                RequestPath(0x1300);
                RequestAudio(0x1300);
                break;
            case REMOTE_4:
                check_remote_protocol
                powerOn();
                RequestPath(0x1400);
                RequestAudio(0x1400);
                //DbgPrint("Done requesting\n");
                break;

            #ifdef DEBUG_IRCODES
            default:
                debugIRCode(&results);
            #endif
        }
        irrecv.resume(); // resume receiver
        //DbgPrint("resumed\n");
    }
}