玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测
生活随笔
收集整理的這篇文章主要介紹了
玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一. 電容輸入 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. 觸摸強度
注意: 摸得越瓷實,數(shù)值越小
touchAttachInterrupt(pin, TSR , threshold)
參數(shù):
- TSR :中斷回調(diào)函數(shù), 不能帶參數(shù), 不能有返回值。
- threshold:閾值, 達到該閾值會觸發(fā)此中斷
二. 霍爾傳感器
ESP32自帶霍爾傳感器 , 當有磁場靠近時,會顯示正負值
hallRead()三. 外部中斷
1. 開啟外部中斷 attachInterrupt(pin,function,mode);
參數(shù):
- pin: 外部中斷引腳
- function : 外部中斷回調(diào)函數(shù)
- mode : 5種外部中斷模式, 見下表:
| RISING | 上升沿觸發(fā) |
| FALLING | 下降沿觸發(fā) |
| CHANGE | 電平變化觸發(fā) |
| ONLOW | 低電平觸發(fā) |
| ONHIGH | 高電平觸發(fā) |
2. 關閉引腳中斷 detchInterrupt(pin);
無返回值
四. 時間統(tǒng)計函數(shù)
1. 開機至今的毫秒數(shù) millis
millis() 返回值是unsigned long 類型, 大約50天溢出一次
2. 開機至今的微秒數(shù) micros
micros() 返回值是unsigned long 類型, 大約70分鐘溢出一次
五. 阻塞延時
時間控制函數(shù)
????由于我們接下來的實驗程序很多都用到延時函數(shù),那么這里就介紹幾個:
delay() ----- 毫秒級延時
delayMicroseconds() ----- 微秒級延時
硬件定時器相關請見第六篇
六. 引腳脈沖信號檢測 pulseIn()
pulseIn(pin,state)
pulseIn(pin,state,timeout)
參數(shù):
- pin : 引腳
- state : 脈沖類型, 可選高或者低
- timeout : 超時時間, 默認1秒鐘. 單位為微秒, 無符號長整型.
返回值: 脈沖寬度, 單位微秒, 數(shù)據(jù)類型為無符號長整型. 如果超時返回0
例: 使用SR04超聲波測距
板上接線方式,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 cm",distance);delay(1000); }總結(jié)
以上是生活随笔為你收集整理的玩转 ESP32 + Arduino (四) 电容按键 霍尔传感器 外部中断 延时 脉冲检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 缩略词含义(实习记录)
- 下一篇: 批量新建文件夹/文本文档