/*Group T9_E
Our Project*/

int slideswitch = 2;
int button = 3;

int Green_LED = 5;
int Red_LED = 6;
int speaker = 9;

int PWMA = 11;
int AIN1 = 12;
int AIN2 = 13;

int switchval;

#define C4  262
#define D4  294
#define E4  330
#define F4  349
#define A4  440
#define B4  494
#define C5  523
#define E5  659
#define F5  698

#define U4  339
#define U8  169.5

int melody[] = {
  C5, B4, A4, A4, B4, A4, E4, C4, D4, E4, F4, E4, C4, E4, A4, B4, C5, 
  C5, C5, B4, A4, B4, C5, B4, B4, C5, B4, A4, A4, B4, A4, E4, C4, D4, 
  E4, F4, E4, C4, E4, A4, B4, C5, E5, F5, E5, C5, A4, B4, C5, B4, A4
};

int noteDurations[] = {
  U8, U8, U4, U8, U8, U8, U8, U8, U8, U8, U8, U8, U8, U4, U8, U8, U4, 
  U4, U8, U8, U8, U8, U4, U4, U4, U8, U8, U4, U8, U8, U8, U8, U8, U8, 
  U8, U8, U8, U8, U4, U8, U8, U8, U4, U8, U8, U8, U8, U8, U4, U4, U4,
};

void setup()
{
  pinMode(button, INPUT_PULLUP);
  pinMode(slideswitch, INPUT);
  
  pinMode(Green_LED, OUTPUT);
  pinMode(Red_LED, OUTPUT);
  pinMode(speaker, OUTPUT);
  
  pinMode(PWMA, OUTPUT);
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
}

void loop(){ 
  
  if (digitalRead(button) == LOW){
  digitalWrite(AIN1,HIGH);
  digitalWrite(AIN2,LOW);
  analogWrite(PWMA, 255); 
    
  digitalWrite(Green_LED, LOW);
  digitalWrite(Red_LED, HIGH);
    
  tone(speaker, 523, 1000);
  delay(1000);
  }
    

  while (digitalRead(slideswitch) == HIGH){
  digitalWrite(AIN1,HIGH);
  digitalWrite(AIN2,LOW);
  analogWrite(PWMA, 255);  
      
  digitalWrite(Green_LED, LOW);
  digitalWrite(Red_LED, HIGH);
  
    for (int Note = 0; Note < 51; Note++){
      tone(speaker, melody[Note], noteDurations[Note]);
      delay(noteDurations[Note]); 
      delay(20);

      if (digitalRead(slideswitch) == LOW){
        noTone(speaker);
        break;
      }
    }
  }
  
    if (digitalRead(button) == HIGH && switchval == LOW){
      digitalWrite(AIN1,LOW);
      digitalWrite(AIN2,LOW);
      analogWrite(PWMA, 0);
    
      digitalWrite(Green_LED, HIGH);
      digitalWrite(Red_LED, LOW);
    
      noTone(speaker);
   } 
}