日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

esp32外部中断_玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测...

發布時間:2024/10/14 编程问答 113 豆豆
生活随笔 收集整理的這篇文章主要介紹了 esp32外部中断_玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 電容輸入 touchRead(pin) 及電容輸入中斷touchAttachInterrupt(pin, TSR , threshold)

ESP32專門提供了電容觸摸傳感器的功能, 共有T0,T2~T9 共 9個touch傳感器可用.分別對應引腳4、2、15、13、12、14、27、33、32. 無需設置PinMode

touchRead(pin)

返回值 0~255. 觸摸強度

注意: 摸得越瓷實,數值越小

void setup()

{

Serial.begin(9600);

}

void loop()

{

Serial.printf("touch:%d\n",touchRead(4));

}

touchAttachInterrupt(pin, TSR , threshold)

參數:

TSR :中斷回調函數, 不能帶參數, 不能有返回值。

threshold:閾值, 達到該閾值會觸發此中斷

void TSR()

{

Serial.printf("我被按下了!\r\n");

}

void setup()

{

Serial.begin(9600);

touchAttachInterrupt(4, TSR , 20);

}

void loop()

{

}

二. 霍爾傳感器

ESP32自帶霍爾傳感器 , 當有磁場靠近時,會顯示正負值

hallRead()

三. 外部中斷

1. 開啟外部中斷 attachInterrupt(pin,function,mode);

參數:

pin: 外部中斷引腳

function : 外部中斷回調函數

mode : 5種外部中斷模式, 見下表:

中斷觸發模式

說明

RISING

上升沿觸發

FALLING

下降沿觸發

CHANGE

電平變化觸發

ONLOW

低電平觸發

ONHIGH

高電平觸發

void func1()

{

Serial.printf("按鍵中斷觸發");

}

void setup()

{

Serial.begin(9600);

attachInterrupt(0,func1,FALLING);

}

void loop()

{

}

2. 關閉引腳中斷 detchInterrupt(pin);

無返回值

四. 時間統計函數

1. 開機至今的毫秒數 millis

millis() 返回值是unsigned long 類型, 大約50天溢出一次

2. 開機至今的微秒數 micros

micros() 返回值是unsigned long 類型, 大約70分鐘溢出一次

五. 阻塞延時

時間控制函數

由于我們接下來的實驗程序很多都用到延時函數,那么這里就介紹幾個:

delay() ----- 毫秒級延時

delayMicroseconds() ----- 微秒級延時

硬件定時器相關請見第六篇

六. 引腳脈沖信號檢測 pulseIn()

pulseIn(pin,state)

pulseIn(pin,state,timeout)

參數:

pin : 引腳

state : 脈沖類型, 可選高或者低

timeout : 超時時間, 默認1秒鐘. 單位為微秒, 無符號長整型.

返回值: 脈沖寬度, 單位微秒, 數據類型為無符號長整型. 如果超時返回0

例: 使用SR04超聲波測距

板上接線方式,VCC、trig(控制端)、 echo(接收端)、 out(空腳)、 GND

#include

int distance = 0;

void setup()

{

Serial.begin(115200);

pinMode(4, OUTPUT);

digitalWrite(4, LOW);

}

void loop()

{

digitalWrite(4, HIGH);

delayMicroseconds(20);

digitalWrite(4, LOW);

distance = pulseIn(18,HIGH)/58;

Serial.printf("當前距離是:%d cm",distance);

delay(1000);

}

總結

以上是生活随笔為你收集整理的esp32外部中断_玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。