<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

      1. 基于ESP8266的溫濕度檢測程序

        作者:新紀元 | 更新時間:2016-04-02 | 瀏覽量:3778

            應網友要求,奉上自己編寫的一份基于AM2320溫濕度傳感器的源代碼!希望能起到舉一反三的效果。希望各位大神們輕笑、輕拍!

            AM2320,我采用的是單總線通信方式,具體電路圖如下:

        QQ圖片20160402232102.png

            采用ESP8266的GPIO0管腳 ,打開GPIO0的外部中斷功能,部分代碼如下:

        void ICACHE_FLASH_ATTR
        AM2320_interrupt(void){/*GPIO0管腳 外部中斷處理函數*/
        	unsigned int tmp = 0xFF;
        	static unsigned int index = 0;
        	static unsigned int timer[1] = {0};
        	static unsigned int AM2320_index = 0xFF;
        	static unsigned char data[5] = {0,0,0,0,0};
        
        
        	if(!index){
        		timer[0] = system_get_time();
        		index ++;
        	}else{
        		index = system_get_time();/*暫存*/
        		timer[0] = index - timer[0];
        		if(__timer_cmp(150,170,timer[0])){
        			/*響應時間*/
        			tmp = 3;
        		}else if(__timer_cmp(65,100,timer[0])){
        			/*0*/
        			tmp = 0;
        		}else if(__timer_cmp(110,145,timer[0])){
        			/*1*/
        			tmp = 1;
        		}
        
        		timer[0] = index;
        		index = 1;
        	}
        
        	switch(tmp){
        	case 3: /*響應*/
        		AM2320_index = 0;
        		break;
        	case 0: /*0*/
        	case 1: /*1*/
        		if(AM2320_index < 0xFF){
        			__Ecode(data,AM2320_index,tmp);
        			AM2320_index++;
        			if(AM2320_index == 40){
        				AM2320_index = 0;
        				for(tmp = 0;tmp < 4;tmp++){
        					AM2320_index += data[tmp];
        				}
        				if((AM2320_index & 0xFF) == data[4]){
        					for(tmp = 0;tmp < 5;tmp++)
        					{
        						Sensor_Data[tmp] = data[tmp];
        					}
        				}
        				AM2320_index = 0xFF;
        			}
        		}
        		break;
        	}
        }
        
        
        /*獲取數據 刷新函數 通過調用此函數 來觸發一次am2320溫濕度傳感器的通信*/
        void ICACHE_FLASH_ATTR
        AM2320_upData(void){/*獲取溫濕度數據  每隔3毫秒調用一次*/
        	static unsigned int timer_counter = 0;
        	static unsigned int index = 0;
        //	Read_Sensor();
        	timer_counter++;
          if(((timer_counter * AM2320_UPDATA_TIMER) >= AM2320_GETDATA_TIMER)
        		|| (index)){
        		if(!index){
        			timer_counter = 0;
        			index++;
        
        			PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U);/*使能上拉*/
        			GPIO_OUTPUT_SET(GPIO_ID_PIN(0), 0);
        		}else{
        			index = 0;
        		  GPIO_OUTPUT_SET(GPIO_ID_PIN(0), 1);
        		  GPIO_DIS_OUTPUT(GPIO_ID_PIN(0));/*配置為輸入*/
        		}
        	}
        
        }


            本人語言水平有限,就直接奉上源碼了

        am2320.zip




        評論:共3條

        貝殼物聯 評論于:2016-04-03 09:48:44
        多謝分享!慢慢學習。
        WECAN 評論于:2017-08-27 16:01:56
        感謝樓主的分享啊!
        zjnbzm 評論于:2020-01-07 11:36:57
        謝謝分享。。。。。。。。。。
        返回頂部

        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频