我正在开发一个DIY转速计项目,我正在使用红外传感器模块来跟踪连接到电机的车轮上的黑色条带。只要传感器位于条带前面,就会从传感器模块向Arduino发送LOW输出,否则会发送HIGH输出。我的问题是,每当遇到黑色条带时,如何跟踪模块输入的状态变化?
例如,如果它发送1111110000011111100000(序列'0'是传感器遇到条带时),程序应该能够检测到2的计数(即,只有下降的输入变化应该由程序和计数器应增加1)。
我只想要最短的代码摘录,这将有效地进行计数。我是一个非常业余的程序员,所以我无法弄清楚如何去做。任何帮助将受到高度赞赏。
答案 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);
}
}