Arduino中上拉下拉电阻问题。。。

Arduino中上拉下拉电阻问题。。。,第1张

你不加这个电阻的话,开关上红色引线的电平是不确定的(电荷的积累会引起电平变世尘化),因为它是悬空的。你这情况,其实就是这个引脚,arduino检测到高激锋电平了,程序认为你已经按下按键,所以灯亮了。明返晌

使用pinMode(pin, mode)来设置GPIO口工作模式,mode可选比较多INPUT、OUTPUT、INPUT_PULLUP、INPUT_PULLDOWN模式(输入、输出悉明、上拉输入、下拉输入,另外还有开漏等模式),具体是否能设置对应模式还得参考技术规格书(一般的GPIO0 ~ 33可以设置为输出,基本上都可以设置为输入,GPIO6 ~ 11一般不推荐使用,因为这几个口接了存储程序用的Flash,不当使用可能引起程序崩溃);

使用digitalWrite(pin, value)来设置输出状态,value可选值为HIGH或LOW,即1和0;

使用digitalRead(pin)来读取GPIO口电平,返回值为HIGH或LOW,即1和0;

题外话:请注意ESP32的IO12,这个IO口上上电时的电平会决定外部flash(存放程序的那颗)的工作电压,上电时该脚为高则认为flash工作于1.8V,为低则认为flash工作于3.3V。常用的像是Wroom-32系列模块该脚内部已下拉,即flash是工作于3.3V的,若外部电路接强上拉则可能导致模块工作异常。

外部中断

外部中断使用方式如下:

使用attachInterrupt(uint8_t pin, void (*)(void), int mode)或attachInterruptArg(uint8_t pin, void (*)(void*), void * arg, int mode)来设置外部中断,输入参数有gpio号、中断触培陆蚂发时的回调函数、回调函数输入参数、外部中断触发模式(RISING、FALLING、CHANGE……上升沿、下配埋降沿、改变时、低电平、高电平等);

使用detachInterrupt(uint8_t pin)来关闭外部中断;

使用示例

使用下面代码进行测试:

// IO14 输出

// IO12 下拉输入模式 电平改变触发中断

// 使用导线连接 IO14 和 IO12

void callBack(void)

{

int lv = digitalRead(12)//读取加载到IO12上的电平

Serial.printf("触发了中断,当前电平是: %d\n", lv)

}

void setup()

{

Serial.begin(115200)

Serial.pr


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12398344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存