使用中断,开关没按下时,为什么继电器一直闪!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2739|回复: 13

[未解决] 使用中断,开关没按下时,为什么继电器一直闪!

[复制链接]
发表于 2021-9-8 00:18 | 显示全部楼层 |阅读模式
int pbIn = 0;                  // 定义中断引脚为0,也就是D2引脚
int ledOut = 5;                // 定义输出继电器引脚
volatile int state = LOW;      // 定义默认输入状态
void setup()
{               
  // 继电器引脚为输出状态
  pinMode(ledOut, OUTPUT);
// 监视中断输入引脚的变化
  attachInterrupt(pbIn, stateChange, CHANGE);
}
void loop()                     
{
  // 模拟长时间运行的进程或复杂的任务。
  for (int i = 0; i < 100; i++)
  {
    // 什么都不做,等待10毫秒
    delay(10);
  }
}
void stateChange()
{
  state = !state;
  digitalWrite(ledOut, state);  
}

发表于 2021-9-8 09:17 | 显示全部楼层
pinMode(2, INPUT_PULLUP);
发表于 2021-9-8 04:26 | 显示全部楼层
我猜你的中断输入引脚没有接上/下拉电阻和滤波电容
悬空引脚收到的输入是不可预测的01序列;没有滤波措施的机械开关会产生振荡,导致中断错误触发。
发表于 2021-9-8 07:12 | 显示全部楼层
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) (recommended)

1.為什麼中斷腳位(PIN)指定你會用 0 而不是 2?
2.為避免中斷誤觸發,觸發電路你做了哪些措施(例如彈跳消除/拉高/濾雜訊...)?
 楼主| 发表于 2021-9-8 08:00 | 显示全部楼层
shouzama 发表于 2021-9-8 07:12
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) (recommended)

1.為什麼中斷腳位(PIN)指定你會 ...

参考 https://www.arduino.cn/forum.php ... =%E4%B8%AD%E6%96%AD


开关一边接GND,一边接PIN 2

点评

看上去是只有开关,没有设置保护电路  发表于 2021-9-8 09:11
 楼主| 发表于 2021-9-8 08:05 | 显示全部楼层
frankhan747 发表于 2021-9-8 04:26
我猜你的中断输入引脚没有接上/下拉电阻和滤波电容
悬空引脚收到的输入是不可预测的01序列;没有滤波措施的 ...

一直没搞明白上拉,下拉在什么情况下使用,直流电路也有震荡吗,不是交流才有吗?
 楼主| 发表于 2021-9-8 08:07 | 显示全部楼层
frankhan747 发表于 2021-9-8 04:26
我猜你的中断输入引脚没有接上/下拉电阻和滤波电容
悬空引脚收到的输入是不可预测的01序列;没有滤波措施的 ...

上拉,下拉电阻一般是多少欧姆的电阻,我看大家用的不统一.

点评

按理说1k、4.7k、10k都可以  发表于 2021-9-8 09:36
发表于 2021-9-8 09:28 | 显示全部楼层
rh902999 发表于 2021-9-8 08:05
一直没搞明白上拉,下拉在什么情况下使用,直流电路也有震荡吗,不是交流才有吗? ...

你的开关一头接输入一头接GND,当开关断开时GND和输入口并不接触。此时你的输入IO其实不与任何东西相连,这个状态叫悬空。为了克服悬空你需要一个上拉电阻。

上拉电阻一头连接输入口、另一端连接VDD(此为Adn板上的5V引脚),负责在开关断开时保证输入口和VDD电平相等,输入电平稳定在1(VDD)而不是随机0和1;开关接通时,输入口与GND相连,输入电平为0(GND),电流从VDD经上拉电阻流入GND

机械开关做单次接通/脱触动作时,其实际表现是短时间内高频率接通-断开-再接通-再断开,因此输入电平会有一个高频的0-1-0-1震荡。给开关并联一个电容就可以减轻振荡的危害
 楼主| 发表于 2021-9-8 13:34 | 显示全部楼层
frankhan747 发表于 2021-9-8 09:28
你的开关一头接输入一头接GND,当开关断开时GND和输入口并不接触。此时你的输入IO其实不与任何东西相连, ...

上拉电阻,阻值一般是多少,电容呢?

点评

点评都不带看的吗···  发表于 2021-9-9 01:02
 楼主| 发表于 2021-9-8 21:57 | 显示全部楼层
全部搞定,感谢各位大神的指教!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 18:39 , Processed in 0.104602 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表