Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino中断功能_Arduino - Fatal编程技术网

Arduino中断功能

Arduino中断功能,arduino,Arduino,我想在方波脉冲的上升沿和下降沿调用一些函数。我使用了AttachinTerruptDigitalPintoInterruptPin,udara,上升为上升沿,AttachinTerruptDigitalPintoInterruptPin,blank,下降为下降沿。但我没有保守地获得《涨跌》的系列输出。这个问题的答案是什么?我的代码编写如下 enter code here const byte interruptPin = 2; void setup() { Serial.begin(9

我想在方波脉冲的上升沿和下降沿调用一些函数。我使用了AttachinTerruptDigitalPintoInterruptPin,udara,上升为上升沿,AttachinTerruptDigitalPintoInterruptPin,blank,下降为下降沿。但我没有保守地获得《涨跌》的系列输出。这个问题的答案是什么?我的代码编写如下

enter code here
const byte interruptPin = 2;

void setup() {
    Serial.begin(9600);
    pinMode(interruptPin, INPUT);

}

void loop() {
    attachInterrupt(digitalPinToInterrupt(interruptPin), udara, RISING);
    attachInterrupt(digitalPinToInterrupt(interruptPin), blank, FALLING);
}

void udara() {
    Serial.println("rise");

}`

void blank() {
    Serial.println("fall");
}
attachInterrupt应该是设置的一部分,而不是循环,因为它用于设置事件触发器和回调

const byte interruptPin = 2;

void setup() {
    Serial.begin(9600);
    pinMode(interruptPin, INPUT);
    attachInterrupt(digitalPinToInterrupt(interruptPin), udara, RISING);
    attachInterrupt(digitalPinToInterrupt(interruptPin), blank, FALLING);
}

void loop() {

}

void udara() {
    Serial.println("rise");
}

void blank() {
    Serial.println("fall");
}

串行使用中断来输出数据。这些中断在ISR期间被禁用。因此,最好避免在ISR中使用串行。更改代码以在ISR中设置标志,并根据标志执行“从循环打印”

为什么要在“循环”中附加?在“设置”中附加一次不是更有意义吗?更好的代码格式。非常感谢您的回答。因为循环中没有任何东西,所以代码只运行一个循环,输出可以看作是一次上升和连续下降。我需要答案,就像上升,下降,上升,下降一样。修改内容是什么?