Arduino ESP32
阿新 • • 發佈:2020-12-26
參考:https://blog.csdn.net/finedayforu/article/details/108465009
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)); }
引數:
- 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 <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);