Arduino kóði fyrir Viðmótino
Skilyrði fyrir áfangalokum
//*********************************
// 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