//*********************************
// Prufuforrit fyrir Viðmótino
// V1 - 18.02.22
// Ari Baldursson
//*********************************

int A_inn_1 = A0;
int A_inn_2 = A1;
int A_inn_3 = A2;
int A_inn_4 = A3;
int A_inn_5 = A4;

int D_inn_1 = 2;
int D_inn_2 = 4;
int D_inn_3 = 7;
int D_inn_4 = 8;
int D_inn_5 = 12;

int pwm_pin_1 = 10;
int pwm_pin_2 = 5;
int pwm_pin_3 = 6;
int pwm_pin_4 = 9;
int buzzer_pin = 13;
//int pwm_pin_5 = 10;

int pot_val_1, pot_val_2, pot_val_3, pot_val_4, pot_val_5;
int sw_val_1, sw_val_2, sw_val_3, sw_val_4, sw_val_5;
int FF;

int melody[] = {262, 196, 196, 220, 196, 0, 247, 262, 0};
int noteDurations[] = {4, 8, 8, 4, 4, 4, 4, 4, 4};

void setup() {
  pinMode(D_inn_1, INPUT);
  pinMode(D_inn_2, INPUT);
  pinMode(D_inn_3, INPUT);
  pinMode(D_inn_4, INPUT);
  pinMode(D_inn_5, INPUT);
  pinMode(buzzer_pin, OUTPUT);
  pinMode(pwm_pin_1, OUTPUT);
  pinMode(pwm_pin_2, OUTPUT);
  pinMode(pwm_pin_3, OUTPUT);
  pinMode(pwm_pin_4, OUTPUT);
  //pinMode(pwm_pin_5, OUTPUT);
}

void readInput() {
  // read digital input from switches
  sw_val_1 = digitalRead(D_inn_1);
  sw_val_2 = digitalRead(D_inn_2);
  sw_val_3 = digitalRead(D_inn_3);
  sw_val_4 = digitalRead(D_inn_4);
  sw_val_5 = digitalRead(D_inn_5);
  // read analog input from potentiometers
  pot_val_1 = analogRead(A_inn_1);
  pot_val_2 = analogRead(A_inn_2);
  pot_val_3 = analogRead(A_inn_3);
  pot_val_4 = analogRead(A_inn_4);
  pot_val_5 = analogRead(A_inn_5);
}

void writeOutput() {
  if (sw_val_1)
    digitalWrite(pwm_pin_1, sw_val_1);
  else
    analogWrite(pwm_pin_1, pot_val_1 / 4);
  if (sw_val_2)
    digitalWrite(pwm_pin_2, sw_val_2);
  else
    analogWrite(pwm_pin_2, pot_val_2 / 4);
  if (sw_val_3)
    digitalWrite(pwm_pin_3, sw_val_3);
  else
    analogWrite(pwm_pin_3, pot_val_3 / 4);
  if (sw_val_4)
    digitalWrite(pwm_pin_4, sw_val_4);
  else
    analogWrite(pwm_pin_4, pot_val_4 / 4);
}

void PlayMelody() {
  for (int thisNote = 0; thisNote < 9; thisNote++) {
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(buzzer_pin, melody[thisNote], noteDuration);
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    noTone(buzzer_pin);
  }
}

void buzzer() {
  FF = !FF;
  digitalWrite(buzzer_pin, FF);
  delay(map(pot_val_5, 0, 1023, 0, 10));
}

void loop() {
  readInput();
  writeOutput();
  if (sw_val_5)
    PlayMelody();
  else
    buzzer();
}
Síðast breytt: miðvikudagur, 15. október 2025, 7:13 PM