Hi Guys,
I'm trying to get interrupts working without much success on a Firecricket (similar to a Zero - Cortex M0+ uC). What I'm ultimately trying to do is use this board as a lightsaber sound card, i.e. I want Hum to play after Open plays, based on a switch pulling pin 1 low, and have Close interrupt Hum when the switch is reset by playing and then stopping all sound output.
Can anyone be of any assistance with this? This is my code:
SdFat SD;
SamdAudio AudioPlayer;
const unsigned int sampleRate = 22050;
const int LEDpin = 26;
const int buttonpin = 1;
int startSound = 0;
void setup() {
pinMode(LEDpin, OUTPUT);
pinMode(buttonpin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(buttonpin), turnon, FALLING);
attachInterrupt(digitalPinToInterrupt(buttonpin), turnoff, RISING);
Serial.begin(9600);
if (!SD.begin(10)) {
digitalWrite(LEDpin, HIGH);
delay(250);
digitalWrite(LEDpin, LOW);
}
}
void loop() {
if (startSound == 1) {
digitalWrite(LEDpin, HIGH);
AudioPlayer.begin(sampleRate);
AudioPlayer.play("Hum.wav", 0);
delay(95000);
}
}
void turnon() {
Serial.println("Turn On");
startSound = 1;
digitalWrite(LEDpin, HIGH);
AudioPlayer.begin(sampleRate);
AudioPlayer.play("Open.wav", 0);
}
void turnoff() {
Serial.println("Turn Off");
AudioPlayer.begin(sampleRate);
AudioPlayer.play("Close.wav", 0);
digitalWrite(LEDpin, LOW);
startSound = 0;
AudioPlayer.end();
}
Cheers!