I've done a bit of searching and not come across a way to do this, so I'll go ahead and post:
I'd like to have my program beep once when a switch is closed, then blink an LED continuously until the switch is opened. The bit I'm having trouble with is getting the beep to execute just once before going into the LED blink loop.
I feel like this should be fairly simply... just haven't succeeded yet. Might as well ask the experts right?
I will try having a variable change state once the beep has occurred:
pseudo-code:
int flag = 0;
if((switch == HIGH) && (flag == 0)) {
beep buzzer once
flag = flag + 1;
....now do I initiate another loop here (if or while statement) that blinks the green LED? }
else if (switch == LOW){
blink red LED
flag = flag - 1;}
You almost have it with the pseudo-code, but I don't see a check for when the switch is high and the flag is 1. You might want the check for the flag high to be an additional if statement within the switch high if statement.
Also remember that blinking an LED is an active action (not passive like setting a pin state and going on). That means you need to do something clever to check for the switch changing state while the LED is flashing. This can be done several ways, two that I can think of off the top of my head are:
A) incorporate the trick of the Blink without delay example at http://arduino.cc/en/Tutorial/BlinkWithoutDelay
B) external to the Arduino, make the LEDs blink. This can be done with the output pin of the Arduino activating a 555 timer, or a simple UJT oscillator toggling a flip flop. This takes the blink action away from your code, but reduces flexibility because the LED will always blink.