我正在对Arduino进行编程,以了解从高到低或从低到高的时间。但是我正在从计时器中断值中获取恒定值。它是1246 * 10ms =12460。此代码出了什么问题。我正在用示波器跟踪信号。实际时间约为250毫秒。请帮帮我。
#include <TimerOne.h>
void setup(void)
{
pinMode(7, INPUT);
Timer1.initialize(100);//1000000=1s
Timer1.attachInterrupt(blinkLED);
Serial.begin(9600);
}
int ledState = LOW,T=0,state0=0,state1=0;
volatile unsigned long blinkCount = 0; variables
void blinkLED(void)
{
T++;
}
void loop(void)
{
state0=state1;
state1=digitalRead(7);
if(state0!=state1)
{
//Serial.print("state1=");
//Serial.print(state1);
//Serial.print(" T=");
Serial.println(T);
T=0;
}
}
答案 0 :(得分:0)
首先,请确保您发布的代码有效。我认为“变量”应该发表评论吗?另外,您的代码不是很可读(请添加一些注释)。
为了测量脉冲的长度,Arduino具有一个称为“ pusleIn()”的内置函数。看看他documentation。
如果要测量高脉冲和低脉冲,还应查看“ attachInterrupt()”,其模式设置为“ CHANGE”。
希望这对您有所帮助。