查看: 395|回复: 4

[未解决] 如何在Arduino UNO上实现开关控制一个固定频率的方波信号输出

[复制链接]

该用户从未签到

发表于 2021-7-25 11:59 | 显示全部楼层 |阅读模式
本帖最后由 warnerchang 于 2021-7-25 12:03 编辑

我想要使用上升沿触发信号1.我该如何将下面的代码改为输出固定频率方波信号呢?
2.大佬们可以解释下attachIterrupt函数吗?
下面是我找的一段代码:
  1. #define led 13
  2. #define button 0
  3. int state = LOW;
  4. void setup(){
  5. pinMode(led,OUTPUT);
  6. attachInterrupt(button,use,RISING);
  7. }
  8. void loop(){
  9. digitalWrite(led,state);
  10. }
  11. void use(){
  12. state=!state;
  13. }
复制代码




签到天数: 162 天

[LV.7]常住居民III

发表于 2021-7-26 08:19 | 显示全部楼层
  1. 设置中断函数
  2. attachInterrupt()

  3. void attachInterrupt (uint8_t interruptNum, void(*)(void)userFunc, int mode)

  4. 设置中断

  5. 指定中断函数. 外部中断有0和1两种, 一般对应2号和3号数字引脚.


  6. 参数:

  7.     interrupt 中断类型, 0或1
  8.     fun 对应函数
  9.     mode 触发方式. 有以下几种:

  10.         LOW 低电平触发中断

  11.         CHANGE 变化时触发中断

  12.         RISING 低电平变为高电平触发中断

  13.         FALLING 高电平变为低电平触发中断


  14. 注解:
  15. 在中断函数中 delay 函数不能使用, millis 始终返回进入中断前的值. 读串口数据的话, 可能会丢失. 中断函数中使用的变量需要定义为 volatile 类型.
  16. 下面的例子如果通过外部引脚触发中断函数, 然后控制LED的闪烁.

  17. int pin = 13;
  18. volatile int state = LOW;

  19. void setup()
  20. {
  21.   pinMode(pin, OUTPUT);
  22.   attachInterrupt(0, blink, CHANGE);
  23. }

  24. void loop()
  25. {
  26.   digitalWrite(pin, state);
  27. }

  28. void blink()
  29. {
  30.   state = !state;
  31. }
复制代码

该用户从未签到

 楼主| 发表于 2021-7-28 09:46 | 显示全部楼层

感谢您的回答,那么我想问一下,使用中断函数和使用delay函数哪个精度更高呢?

该用户从未签到

发表于 2021-7-28 16:07 | 显示全部楼层
中断和延时概念不同,用处也不同。

该用户从未签到

 楼主| 发表于 2021-7-29 09:55 | 显示全部楼层
奥巴牛 发表于 2021-7-28 16:07
中断和延时概念不同,用处也不同。

噢噢,好的,我再回去研究研究
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

arduino解码sbus
arduino解码sbus
市面上有很多sbus接收机,它只有一根线就可以实现很多通道的通信,其本质利用了串口通
程序编译通过,运行崩溃,请大家看看
程序编译通过,运行崩溃,
编译后的程序是这么多。我也不知道占了多少,不明白这个具体意思。 我用的是esp-01s
【Arduino】168种传感器模块系列实验(146)---64位WS2812点阵屏
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
原价299元【语音开发板套件】限时免费领!
原价299元【语音开发板套
如果NodeMcu上的GPIO引脚不够用怎么办?急!
如果NodeMcu上的GPIO引脚
我最近在做一个需要用到多个HC-SR04的项目,用Arduino IDE开发NodeMcu,参考的引脚图
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表