如何计算Arduino或C环境中的输入状态变化?

时间:2016-05-18 12:21:02

标签: arduino

我正在开发一个DIY转速计项目,我正在使用红外传感器模块来跟踪连接到电机的车轮上的黑色条带。只要传感器位于条带前面,就会从传感器模块向Arduino发送LOW输出,否则会发送HIGH输出。我的问题是,每当遇到黑色条带时,如何跟踪模块输入的状态变化?

例如,如果它发送1111110000011111100000(序列'0'是传感器遇到条带时),程序应该能够检测到2的计数(即,只有下降的输入变化应该由程序和计数器应增加1)。

我只想要最短的代码摘录,这将有效地进行计数。我是一个非常业余的程序员,所以我无法弄清楚如何去做。任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

我认为使用外部中断检测输入信号的两个边沿。

连接传感器的输出引脚和arduino的INTn。

答案 1 :(得分:0)

你只需要你已经拥有的代码,然后将你所扫描的“1”的灯光设为真,对于“0”则为假。这应该工作。如果没有回复此答案。我会尽力帮助你。

boolean lastscanned = false;
int counter = 0;
void setup() {
    Serial.begin(9600);
}
void loop() {
//do your Read code here:

boolean light;// = paste your result form Reading above here.It has to
// be a boolean (true/false)
if (light = lastscanned) {
//there was no change
}else {
//there was a change
lastscanned = light; //set the lastscanned to the new one.
counter += 1;
Serial.println(counter);
}
}