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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/3/24 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

touchRead(pin)

返回值 0~255. 觸摸強(qiáng)度
注意: 摸得越瓷實(shí),數(shù)值越小

void setup() {Serial.begin(9600); }void loop() {Serial.printf("touch:%d\n",touchRead(4)); }
touchAttachInterrupt(pin, TSR , threshold)

參數(shù):

  • TSR :中斷回調(diào)函數(shù), 不能帶參數(shù), 不能有返回值。
  • threshold:閾值, 達(dá)到該閾值會(huì)觸發(fā)此中斷
void TSR() {Serial.printf("我被按下了!\r\n");}void setup() {Serial.begin(9600);touchAttachInterrupt(4, TSR , 20); }void loop() {}

二. 霍爾傳感器

ESP32自帶霍爾傳感器 , 當(dāng)有磁場(chǎng)靠近時(shí),會(huì)顯示正負(fù)值

hallRead()

三. 外部中斷

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

參數(shù):

  • pin: 外部中斷引腳
  • function : 外部中斷回調(diào)函數(shù)
  • mode : 5種外部中斷模式, 見(jiàn)下表:
中斷觸發(fā)模式說(shuō)明
RISING上升沿觸發(fā)
FALLING下降沿觸發(fā)
CHANGE電平變化觸發(fā)
ONLOW低電平觸發(fā)
ONHIGH高電平觸發(fā)
void func1() {Serial.printf("按鍵中斷觸發(fā)");} void setup() {Serial.begin(9600);attachInterrupt(0,func1,FALLING); }void loop() {}

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

無(wú)返回值

四. 時(shí)間統(tǒng)計(jì)函數(shù)

1. 開機(jī)至今的毫秒數(shù) millis

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

2. 開機(jī)至今的微秒數(shù) micros

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

五. 阻塞延時(shí)

時(shí)間控制函數(shù)
????由于我們接下來(lái)的實(shí)驗(yàn)程序很多都用到延時(shí)函數(shù),那么這里就介紹幾個(gè):

delay() ----- 毫秒級(jí)延時(shí)
delayMicroseconds() ----- 微秒級(jí)延時(shí)

硬件定時(shí)器相關(guān)請(qǐng)見(jiàn)第六篇

六. 引腳脈沖信號(hào)檢測(cè) pulseIn()

pulseIn(pin,state)
pulseIn(pin,state,timeout)

參數(shù):

  • pin : 引腳
  • state : 脈沖類型, 可選高或者低
  • timeout : 超時(shí)時(shí)間, 默認(rèn)1秒鐘. 單位為微秒, 無(wú)符號(hào)長(zhǎng)整型.

返回值: 脈沖寬度, 單位微秒, 數(shù)據(jù)類型為無(wú)符號(hào)長(zhǎng)整型. 如果超時(shí)返回0

例: 使用SR04超聲波測(cè)距

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

#include <Arduino.h> 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āng)前距離是:%d cm",distance);delay(1000); }

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。