I am wanting to create a little LED Strobe, however, really need to be able to precisely set it.
My intention is using it to tune the tension of a ribbon for a ribbon microphone.
I was thinking maybe up and down buttons to increase/decrease the frequency.
And a digital display (like a small LCD)
I know how to program the outputs using a delay, can wire in a MOSFET or driver transistor for the LEDS (I really don't need many LEDS) and could sort out reading the buttons to decrease/increase the delay. But how do I turn this into Hz and then display it on the LCD panel?
I only need a range between 10 and 30Hz
Is the arduinio a good candidate for this type of project.
Could anyone provide some guidance on where I could get some help.
Here is a quick and dirty demo of the time/frequency conversion math that Larry showed above. It uses the built-in led, a trim pot with one end grounded and the wiper on pin A2, and it reports the frequency via the serial monitor:
#define ledPin 13 // built-in led
#define dial A2 // pin --> 10K ohm pot > gnd
unsigned long startPulseMicros = micros();
long pulseInterval = 106000L; // 9.4Hz
int frequency = 10;
boolean ledOn = false;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(dial, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
if (micros() - startPulseMicros >= pulseInterval) {
startPulseMicros += pulseInterval;
ledOn = !ledOn;
digitalWrite(ledPin, ledOn);
frequency = map (analogRead(dial), 0, 227, 5, 50); // trial and error calibration
pulseInterval = 500000L / frequency; // each interval is 1/2 the period
Serial.println(frequency);
}
}