我正在做一个DIY转速表项目,我正在使用一个红外传感器模块来跟踪一个连接在电机上的轮子上的黑色条带。当传感器出现在带材前面时,传感器模块将低输出发送到Arduino,否则将发送高输出。我的问题是,当模块的输入每次遇到黑色条带时,我如何跟踪它的状态变化?
例如,如果它发送1111110000011111100000 ( '0‘序列是传感器穿过条带时),程序应该能够检测到计数为2(即,程序应该只检测到下降的输入变化,并且计数器应该加1)。
我只想要尽可能短的代码摘录,这将有效地进行计数。我是一个相当业余的程序员,所以我不知道该怎么做。任何帮助都将受到高度的感谢。
发布于 2016-05-18 22:45:31
我认为使用外部中断来检测输入信号的两个边沿。
连接传感器的输出引脚和arduino的INTn。
发布于 2016-05-19 23:10:16
你只需要你已经拥有的代码,然后让轻量布尔值对你扫描的"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);
}
}https://stackoverflow.com/questions/37299474
复制相似问题