人体感应代码逻辑

 需求:

人靠近马上灯亮,人离开等待5s后灯灭,使用Theard和Hander

 private boolean isTurnONLed = false; //标志位,是否打开开关

    @Override
    public void onCreate() {
        super.onCreate();
		startDetectionTP();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    private void startDetectionTP(){
    Log.i(TAG, "startDetectionTP.....................");
                Handler mHandler=new Handler(){
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case 1:    //灯灭
                             Log.d(TAG,"------------Extinguish-------------------------------1");
                             isTurnONLed = false;
                         setNodeString("/sys/class/gpio/gpio1248/value","0");
                         setNodeString("/sys/class/gpio/gpio1249/value","0");
                         setNodeString("/sys/class/gpio/gpio1250/value","0");
                         setNodeString("/sys/class/gpio/gpio1251/value","0");
                         setNodeString("/sys/class/gpio/gpio1255/value","0");
                         setNodeString("/sys/class/gpio/gpio1229/value","0");
                         break;
                    case 2:    //灯亮
                    isTurnONLed = true;
                                Log.d(TAG,"-----------------light--------------------------2");
                            setNodeString("/sys/class/gpio/gpio1248/value","1");
                            setNodeString("/sys/class/gpio/gpio1249/value","1");
                            setNodeString("/sys/class/gpio/gpio1250/value","1");
                            setNodeString("/sys/class/gpio/gpio1251/value","1");
                            setNodeString("/sys/class/gpio/gpio1255/value","1");
                            setNodeString("/sys/class/gpio/gpio1229/value","1");
                            break;
                    }   //end switch
                }   //handleMessage
        };  //end handler
        

        new Thread(){
            UsbManager mUsbManager = (UsbManager) USBDetectionService.this.getSystemService(Context.USB_SERVICE);
            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void run() {
                super.run();
                // Log.i(TAG, "getUSBName().....................");
                while(true) {
			        String value=readFile("/sys/bus/iio/devices/iio:device0/in_voltage0_raw");
                    Log.d(TAG,"value--------------------------------------------------"+value);
                    int valueInt=Integer.parseInt(value);
                    if(valueInt>500){
                            Log.i(TAG_WP, ".....light......");
                            if(!isTurnONLed){
                            Log.i(TAG_WP, "light.....11......");
                             mHandler.removeMessages(1); //移除handle状态值
                             mHandler.sendEmptyMessage(2);
                             }
                    }//end if
                    else{
                            Log.i(TAG_WP, "Extinguish..............");
                            if(isTurnONLed){
                                isTurnONLed = false;    //此时设置开关状态,防止小于5s时候再次靠近操作
                                Log.i(TAG_WP, "Extinguish.......11.......");
                                mHandler.sendEmptyMessageDelayed(1,5000); //延迟5s发送
                            }
                        }//end else
                        try {
                            sleep(1000);    //1s check 1 time
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    ///
                } //end while
            }

        }.start();  //end Theard
    }

 

人体感应智能温控风扇,PWM调速概述: 本文以STC89C52单片机为核心,通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。 人体感应智能温控风扇,PWM调速系统框图: 人体感应智能温控风扇,PWM调速设计原理: 本文介绍了一种基于STC89C52单片机的智能电风扇调速器的设计,该设计巧妙利用红外线遥控技术、单片机控制技术、无级调速技术和温度传感技术,把智能控制技术应用于家用电器的控制中,将电风扇的电机转速作为被控制量,由单片机分析采集到的数字温度信号,再通过可控硅对风扇电机进行调速。从而达到无须人为控制便可自动调整风速的效果。 人体感应智能温控风扇,PWM调速视频演示: 人体感应智能温控风扇,PWM调速具体功能如下: (1)风速设为从低到高共2个档位,可由用户通过键盘设定。 (2)每当温度低于下限值时,则电风扇风速关闭。 (3)每当温度在下限和上限之间时,则电风扇转速缓慢。 (4))每当温度高于上限值时,则电风扇风速全速运转。 人体感应智能温控风扇,PWM调速实物图片: 人体感应智能温控风扇,PWM调速附件内容如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值