Náš čtenář Petr S. nám ke svému projektu zaslal schéma a Arduino kód. K úspěšnému přeložení je ještě nutné stáhnout tento soubor s uloženými melodiemi a poté cestu k němu změnit v kódu, viz komentář.
/*
Název: Tlacítko, bzucák a melodie
Autor: Petr Soudek
E-mail: spetr2050@gmail.com
*/
// nutné vyměnit za vlastní umístění
#include <D:\Arduino\examples\PETR_SOUDEK\sound\pitches\src\pitches.h>
#define TIME 200
int noteDuration = 1000 / 4; // delka noty
const int buttonPin = 2; // pin ke kterému je pripojeno tlacítko
int buttonState = 0; // soucasný stav tlacítka
int lastButtonState = 0; // predchozí stav tlacítka
void setup() {
// inicializujte pin tlacítka jako vstup:
pinMode(buttonPin, INPUT);
// inicializujte sériovou komunikaci:
Serial.begin(9600);
}
void loop() {
// prectete vstupní pin tlacítka:
buttonState = digitalRead(buttonPin);
// porovnejte buttonState (stav tlacítka) s predchozím stavem
if (buttonState != lastButtonState) {
// jestliže se stav zmenil, pust melodii
if (buttonState == HIGH) {
// jestliže je soucasný stav HIGH, tlacítko prešlo
//z off na on:
ovcaci();
Serial.println("on");
}
}
// uložte soucasný stav jako „poslední stav“,
//abyste ho mohli v príští smycce použít
lastButtonState = buttonState;
}
void ovcaci()
{
Serial.println("ovcaci");
for (int i=0; i <= 1; i++){
tone(10, NOTE_C4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_E4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_G4, noteDuration*4);
delay(noteDuration*4);
}
for (int i=0; i <= 1; i++){
tone(10, NOTE_E4, noteDuration);
delay(noteDuration);
tone(10, NOTE_E4, noteDuration);
delay(noteDuration);
tone(10, NOTE_D4, noteDuration);
delay(noteDuration);
tone(10, NOTE_E4, noteDuration);
delay(noteDuration);
tone(10, NOTE_F4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_D4, noteDuration*2);
delay(noteDuration*2);
}
tone(10, NOTE_E4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_D4, noteDuration*2);
delay(noteDuration*2);
tone(10, NOTE_C4, noteDuration*4);
delay(noteDuration*4);
}
// Autor: Petr Soudek