const int spk = 7;
const int onOff = 2;
volatile int toggle;
boolean output;
int dot = 250;
//dot time 250 ms;
int dash = 750;
//dash is 3 dot times
int space = 750;
//space is 3 dot times
int newWord = 1750; //space between words is 7 dot times
void setup() {
pinMode (spk, OUTPUT);
pinMode (onOff, INPUT_PULLUP);
attachInterrupt(0, resetISR, LOW); //hardware
interrupt on pin 2
}
void loop() {
output = digitalRead
(onOff);
delay(150);//debounce
if (output == 0 && toggle == 0) {
toggle = 1;
}
while (toggle > 0) {
tone(spk, 2000, dot); //letter S
delay(dot + dot);
tone(spk, 2000, dot);
delay(dot + dot);
tone(spk, 2000, dot);
delay(dot +
space);
tone(spk, 2000, dash); //letter O
delay(dash + dot);
tone(spk, 2000, dash);
delay(dash + dot);
tone(spk, 2000, dash);
delay(dash +
space);
tone(spk, 2000, dot); //letter S
delay(dot + dot);
tone(spk, 2000, dot);
delay(dot + dot);
tone(spk, 2000, dot);
delay(newWord);
}
}
void resetISR()
{ //reset function, shuts off xmitter
if (toggle == 1) {
toggle = 0;
}
}