From 52f2260c5375fdc7a2e99da68be85e7f24848bc0 Mon Sep 17 00:00:00 2001 From: Luca Tringali Date: Sat, 15 Feb 2020 23:22:04 +0100 Subject: Ultime lezioni --- 6-allarme.ino | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 6-allarme.ino (limited to '6-allarme.ino') diff --git a/6-allarme.ino b/6-allarme.ino new file mode 100644 index 0000000..211ca30 --- /dev/null +++ b/6-allarme.ino @@ -0,0 +1,64 @@ +// nota, frequenza (Hz). +#define Do4 261 +#define Re4 294 +#define Mi4 329 +#define Fa4 349 +#define Sol4 392 +#define La4 440 +#define Si4 493 +#define Do5 523 + +// Una pausa è una nota con frequenza zero +#define P 0 + + +const int buttonPin = 2; +// Il buzzer deve essere collegato a un pin PWM +int speakerOut = 9; + +void setup() { + pinMode(buttonPin, INPUT); + pinMode(speakerOut, OUTPUT); +} + +// melody[] è l'array con le varie note da suonare +// beats[] è l'array con la durata di ciascuna nota da suonare in frazioni di semibreve +int melody[] = { La4, La4, Si4, Do5, Do5, Si4, La4, Sol4, Fa4, Fa4, Sol4, La4, La4, Sol4, Sol4, P }; +int beats[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 8, 2, 1 }; +int MAX_COUNT = sizeof(melody) / 2; // Calcoliamo la dimensione degli array + +//Tempo della nota semibreve in millesimi di secondo +long tempo = 4000; +// Pausa tra le note in milionesimi di secondo +int pause = 1000; + + +int tone_ = 0; +int beat = 0; +long duration = 0; +int volume = 1023; + + +void loop() { + if (digitalRead(buttonPin) == LOW) { + // Scorriamo tutte le note e le rispettive durate + for (int i=0; i 0) { + if (digitalRead(buttonPin) == HIGH) break; + noTone(speakerOut); + tone(speakerOut,tone_,duration); + delay(duration); + // Piccola pausa dopo la nota + delayMicroseconds(pause); + + } else { + delay(duration); + } + } + } +} -- cgit v1.1