首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino检测不到50 at方波信号的上升沿

Arduino检测不到50 at方波信号的上升沿
EN

Stack Overflow用户
提问于 2021-06-08 01:21:23
回答 4查看 456关注 0票数 1

我想要检测方波信号的所有上升沿,并通过串行监视器输出它们。为此,我使用了Arduino UNO,它应该使用中断引脚来检测边缘。信号来自信号发生器(信号是可调的(50 be是理想的))。我已经在下面写了这段代码,但它不起作用,因为如果我设置频率并启动代码,例如在f=1Hz 20处,中断就会被触发!

有没有人能告诉我,我应该用什么方法来实现Arduino的这种操作?

提前谢谢。

代码语言:javascript
复制
    volatile int counter = 0;
    const int interruptPin = 2;
   

    void setup() {

    Serial.begin(9600);
    attachInterrupt(digitalPinToInterrupt(interruptPin), interrupt_call, CHANGE);

    }
    void interrupt_call() {

     counter++;

    }

    void loop() {
       if(counter){
         Serial.println(counter);
         counter=0;
       }else{
         Serial.println(counter);
       }
     }
EN

回答 4

Stack Overflow用户

发布于 2021-06-08 13:04:54

如果要检测上升沿,请更改以下行:

代码语言:javascript
复制
attachInterrupt(digitalPinToInterrupt(interruptPin), interrupt_call, CHANGE);

至:

代码语言:javascript
复制
attachInterrupt(digitalPinToInterrupt(interruptPin), interrupt_call, RISING);

当计数器变量为零时,不要打印它,因此从loop函数中删除以下行:

代码语言:javascript
复制
   }else{
     Serial.println(counter);

您的中断引脚可能是浮动的。您是否将其配置为输入引脚?在包含attachInterrupt()的行之前,在setup函数中添加以下行

代码语言:javascript
复制
pinMode(interruptPin, INPUT_PULLUP);

现在,您应该可以看到在loop函数期间发生的上升沿的数量。将其设置为一个较高的值(例如,10秒),看看您的1 Hz方波是否获得了大约10。如果不起作用,也可以在这里发布main函数/完整代码。

票数 1
EN

Stack Overflow用户

发布于 2021-06-08 16:03:30

谢谢你的帮助!我已经改正了所有的错误。不幸的是,现在输出的是相同的错误。我在这里以图像的形式发布了输出。这是什么原因呢?中断通过了吗?

易失性int计数器= 0;常量int interruptPin = 3;

代码语言:javascript
复制
void setup() {

 Serial.begin(9600);
 pinMode(interruptPin, INPUT_PULLUP);
 attachInterrupt(digitalPinToInterrupt(interruptPin), interrupt_call, 
 RISING);

 }
 void interrupt_call() {
   counter++;
 }

 void loop() {
   if(counter){
    Serial.println(counter);

    counter=0;
    }
 }
票数 1
EN

Stack Overflow用户

发布于 2021-06-08 06:34:54

谢谢你的快速回复。我的意思是,如果我将信号发生器的频率设置为1 1Hz,然后启动代码,中断的上升沿将在每个周期的几次中被检测到,但实际上中断在每个时间周期只能触发一次,并在Serielen Monitor中输出。我已经将我的输出上传为图像。如果能给我一个建议或点子,我将不胜感激。

enter image description here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67876110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档