接ESP32 Arduino框架入門(一)介紹和工程創(chuàng)建(8條消息) ESP32 Arduino框架入門(一)介紹和工程創(chuàng)建_長谷深風(fēng)燈盞的博客-CSDN博客_arduino的esp32軟件系統(tǒng)架構(gòu)????????接下來繼續(xù)介紹ESP32-Wroom-32E的外部引腳、中斷、定時(shí)器等部分內(nèi)容
????????ESP32的外部引腳功能有ADC,GPIO,I2C,I2S,PWM,SDIO,SPI,UART等,同時(shí)還有8個(gè)觸摸電容引腳。
該圖為ESP32-Wroom-32E的引腳對應(yīng)功能關(guān)系:
一、外部中斷
ESP32有多種外部中斷形式,例如:低電平觸發(fā)、引腳由低電平變?yōu)楦唠娖接|發(fā)等。接下來介紹如何寫外部中斷的代碼,配置外部中斷需要兩部分:
?1.初始化中斷
?初始化中斷需要在setup函數(shù)里面寫入中斷初始化函數(shù):
attachInterrupt(0, Init_Key_LED, FALLING);//初始化中斷
//attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);
//pin:中斷引腳號(hào)
//ISR:中斷服務(wù)函數(shù)名
//mode:中斷觸發(fā)模式
函數(shù)內(nèi)填入中斷觸發(fā)引腳,自己定義的中斷服務(wù)函數(shù),中斷觸發(fā)方式。中斷觸發(fā)方式有以下幾種:(自行翻譯即可)
?2.書寫中斷服務(wù)函數(shù)
中斷服務(wù)函數(shù)就是自己定義一個(gè)函數(shù),函數(shù)內(nèi)書寫我們所需要執(zhí)行的任務(wù)的代碼,例如:
?此代碼就行聲明一個(gè)中斷服務(wù)函數(shù),當(dāng)中斷觸發(fā)時(shí),引腳2輸出低電平,并通過串口向電腦發(fā)送字符串。
二、TouchPad(電容觸摸引腳)
ESP32內(nèi)置多個(gè)電容觸摸引腳,即當(dāng)有物體接觸該引腳時(shí),可通過函數(shù)讀取出一系列變化的值。可通過touchRead(Pin)函數(shù)讀取此引腳的觸摸值
void setup(){
Serial.begin(115200); //初始化串口
}
void loop(){
int value; //用來記錄所觸摸引腳的電容值
value = touchRead(4); //讀取引腳4的電容值
Serial.printf(value); //串口顯示電容值
}
三、觸摸燈
上文已介紹了外部中斷和TouchPad,接下來做個(gè)小實(shí)驗(yàn),效果有兩種:
1.觸摸引腳后,使開發(fā)板上指示燈亮的效果;
2.按下開發(fā)板上的按鍵,使得LED燈亮,持續(xù)按下按鍵,燈持續(xù)亮
#include <Arduino.h>
int value, state; //value用來判斷Pin_4的狀態(tài)
void Init_Key_LED() //按鍵中斷服務(wù)函數(shù)
{
digitalWrite(2, LOW);
Serial.printf("KeyInit Event.\r\n"); //串口顯示
delay(100);
while (1); //持續(xù)按下后一直執(zhí)行服務(wù)函數(shù)
}
void TouchLED() //觸摸燈函數(shù)
{
digitalWrite(2, state); // Turn HIGH
Serial.printf("Touch Event.\r\n"); //串口顯示
delay(100); // Wait for a second
}
void setup()
{
Serial.begin(115200);
pinMode(2, OUTPUT);
attachInterrupt(0, Init_Key_LED, FALLING);//初始化中斷
}
void loop()
{
value = touchRead(4); //觸摸取值,在loop可以一直檢測
if (value <= 50)
{
state = HIGH; //觸摸狀態(tài)
TouchLED(); //亮燈
}
digitalWrite(2, !state); //無觸摸時(shí)滅燈
}
?setup函數(shù)中已經(jīng)初始化了中斷,在loop函數(shù)(相當(dāng)于while(1){}),持續(xù)不斷的檢測引腳4的電容觸摸值,當(dāng)觸摸值小于50時(shí),引腳2輸出高電平,燈亮。文章來源:http://www.zghlxwxcb.cn/news/detail-685507.html
至此,已介紹了ESP32的外部中斷和TouchPad,該系列接下來會(huì)繼續(xù)更新關(guān)于ESP32的內(nèi)容。文章來源地址http://www.zghlxwxcb.cn/news/detail-685507.html
到了這里,關(guān)于ESP32 Arduino框架入門(二)外部中斷和TouchPad(電容觸摸引腳)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!