For my engineering project, my group and I are usiwng Arduino to calculate the frequency of a square wave and lighting certain LEDs depending on the value of the frequency. We are having trouble with the millis() function. We have the code so that when the Arduino detects a value of 1 on digitalpin2, millis() begins. When the Arduino detects a value of 0 on digitalpin2, we want it to divide 1/(difference in time) to calculate the frequency. We want this loop to be continuous and have the millis counter reset after after calculation. can anyone help us please?
Thank you,
Marc
We have the code so that when the Arduino detects a value of 1 on digitalpin2, millis() begins.
Which you didn't post, but is impossible. The value returned by millis() starts when the Arduino resets, and is not (supposed to be) ever reset.
When the Arduino detects a value of 0 on digitalpin2, we want it to divide 1/(difference in time) to calculate the frequency.
So, what is the problem?
We want this loop to be continuous and have the millis counter reset after after calculation. can anyone help us please?
What does "continuous" mean? You are either waiting for a change in the square wave or you are doing something while periodically looking for a change (possibly interrupt based). Which is it?
You shouldn't, and don't need to, reset millis(). You don't reset your watch 15 times a day, do you? Of course not. You learn early on how to use a watch to determine the interval between two events. You should be doing the same with the millis() value.
Posting what ever code you have so far, is a good start.
Another thing is to be familiar with state changes. If the pin is high, start a timer, when the pin changes state, store the time in a variable. Once you have done that twice, (HIGH and LOW), add them together and you will have your time.
Tip: Learn how to use interupts.
If the pin is high, start a timer
You mean "record the time". There is no need to use a timer.
Use pulseIn(). Measure the high time, measure the low time, add together, there's your period.
@PaulS
Yes, record the time.
My bad