// MIDI manager for door with Hall Sensor const int door = 2, speaker = 3; const int E4=330,F4=349,G4=392,a4=440,D4=294,C4=262,E5=659,REST=0,C5=523,G5=784,F5=698,D5=587; int prevdoor, currdoor; void setup() { pinMode(door,INPUT_PULLUP); pinMode(speaker,OUTPUT); pinMode(LED_BUILTIN,OUTPUT); prevdoor = digitalRead(door);} //performCloseAction();delay(500);performOpenAction();} void loop() {currdoor = digitalRead(door); delay(50); if (currdoor != prevdoor) { if (currdoor==HIGH) {performOpenAction();} if (currdoor==LOW) {performCloseAction();} prevdoor = currdoor; delay(200);} } void performOpenAction() {digitalWrite(LED_BUILTIN,LOW); int marioTheme[] = { E5, E5, REST, E5, REST, C5, E5, REST, G5}; int duration[] = { 200, 200, 200, 200, 200, 200, 200, 200, 200}; for (int i = 0; i < sizeof(marioTheme) / sizeof(marioTheme[0]); i++) { if (marioTheme[i] != REST) { tone(speaker, marioTheme[i], duration[i]);} delay(duration[i] * .7); noTone(speaker); delay(duration[i] * 0.05);} digitalWrite(LED_BUILTIN,HIGH);delay(100);} void performCloseAction() {digitalWrite(LED_BUILTIN,LOW); int twinkleSequence[] = { C4, C4, G4, G4, a4, a4, G4, F4, F4, E4, E4, D4, D4, C4 }; int duration[] = { 300, 300, 300, 300, 300, 300, 600, 300, 300, 300, 300, 300, 300, 600 }; for (int i = 0; i < sizeof(twinkleSequence) / sizeof(twinkleSequence[0]); i++) { tone(speaker, twinkleSequence[i], duration[i]); delay(duration[i] * .8); noTone(speaker); delay(duration[i] * 0.05);} digitalWrite(LED_BUILTIN,HIGH); delay(100);}