Co będzie potrzebne:
Arduino UNO + kabel USB
płytka stykowa 400 punktów
brzęczyk bez generatora
przewody połączeniowe męsko-męskie
przewody połączeniowe żeńsko-żeńskie
3 x przycisk
3 x rezystor 10 k ohm
Brzęczyk
Jeden pin podłączony do pinu cyfrowego 9 na Arduino
Drugi pin podłączony do GND
Przyciski
Jeden pin każdego przycisku podłączony do pinów cyfrowych 2, 3, 4
Drugi pin każdego przycisku podłączony do GND
Rezystory 10kΩ między pinami cyfrowymi (2, 3, 4) a GND (jako podciągnięcie do masy).
kolejność Pin ⟶ przycisk ⟶ GND
Programujemy:
Skopiuj poniższy kod do Arduine IDE.
// Definicje pinów
const int buzzer = 9; // Pin brzęczyka
const int button1 = 2; // Pin przycisku 1
const int button2 = 3; // Pin przycisku 2
const int button3 = 4; // Pin przycisku 3
// Częstotliwości dla dźwięków
const int noteC = 262; // C (do)
const int noteD = 294; // D (re)
const int noteE = 330; // E (mi)
void setup() {
// Konfiguracja pinów
pinMode(buzzer, OUTPUT);
pinMode(button1, INPUT_PULLUP); // Wejścia z podciągnięciem do zasilania
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
}
void loop() {
// Sprawdzenie stanu przycisków
if (digitalRead(button1) == LOW) {
tone(buzzer, noteC); // Odtwórz dźwięk C
delay(200); // Czas trwania dźwięku
}
else if (digitalRead(button2) == LOW) {
tone(buzzer, noteD); // Odtwórz dźwięk D
delay(200);
}
else if (digitalRead(button3) == LOW) {
tone(buzzer, noteE); // Odtwórz dźwięk E
delay(200);
}
else {
noTone(buzzer); // Wyłącz dźwięk, gdy żaden przycisk nie jest wciśnięty
}
}
Zagraj!
1. "Wlazł kotek na płotek" 🎶
E - D - C - D - E - E - E
D - D - D - E - E - E
E - D - C - D - E - E - E
D - D - E - D - C
2. "Kurki trzy" 🐤
C - C - C - D - E - D - C
E - E - E - D - C - C
C - C - C - D - E - D - C
E - D - C - C - C
Przyciski podłączone do pinów cyfrowych Arduino wykrywają, który z nich jest naciśnięty.
Funkcja tone() generuje określoną częstotliwość na pinie, do którego podłączony jest brzęczyk (w naszym przypadku 9).
W zależności od przycisku:
Przycisk 1 odtwarza nutę C (262 Hz).
Przycisk 2 odtwarza nutę D (294 Hz).
Przycisk 3 odtwarza nutę E (330 Hz).
Jeśli żaden przycisk nie jest wciśnięty, dźwięk jest wyłączony za pomocą noTone().
Więcej przycisków – dodaj więcej przycisków, aby grać pełną gamę dźwięków.
Regulacja głośności – zastosuj potencjometr do zmiany głośności dźwięku.
Melodia – napisz kod, który odtwarza zapisane melodie po naciśnięciu przycisku.
LED-y – dodaj diody LED, które świecą się przy wciśnięciu przycisków.
Wszystkie dźwięki:
const int noteC4 = 262; // C4
const int noteD4 = 294; // D4
const int noteE4 = 330; // E4
const int noteF4 = 349; // F4
const int noteG4 = 392; // G4
const int noteA4 = 440; // A4
const int noteB4 = 494; // B4
const int noteC5 = 523; // C5
Przykład programu wykorzystującego brzęczyk bez generatora:
const int buzzer = 9; // Pin podłączony do brzęczyka
// Definicje częstotliwości dla nut w oktawie C-dur
const int noteC4 = 262; // C
const int noteD4 = 294; // D
const int noteE4 = 330; // E
const int noteG4 = 392; // G
// Funkcja do zagrania nuty o określonym czasie
void playNote(int frequency, int duration) {
tone(buzzer, frequency, duration);
delay(duration + 50); // Mała przerwa między nutami
}
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
// "Wlazł kotek na płotek"
playNote(noteE4, 300); // E
playNote(noteD4, 300); // D
playNote(noteC4, 300); // C
playNote(noteD4, 300); // D
playNote(noteE4, 300); // E
playNote(noteE4, 300); // E
playNote(noteE4, 600); // E (przytrzymane)
playNote(noteD4, 300); // D
playNote(noteD4, 300); // D
playNote(noteD4, 600); // D (przytrzymane)
playNote(noteE4, 300); // E
playNote(noteG4, 300); // G
playNote(noteG4, 600); // G (przytrzymane)
playNote(noteE4, 300); // E
playNote(noteD4, 300); // D
playNote(noteC4, 300); // C
playNote(noteD4, 300); // D
playNote(noteE4, 300); // E
playNote(noteE4, 300); // E
playNote(noteE4, 300); // E
playNote(noteD4, 300); // D
playNote(noteD4, 300); // D
playNote(noteE4, 300); // E
playNote(noteD4, 300); // D
playNote(noteC4, 600); // C (przytrzymane)
delay(2000); // Przerwa przed ponownym odtworzeniem melodii
}
const int buzzer = 9; // Pin, do którego podłączony jest brzęczyk
// Definicje częstotliwości nut
const int NOTE_C4 = 262; // C
const int NOTE_D4 = 294; // D
const int NOTE_E4 = 330; // E
const int NOTE_F4 = 349; // F
const int NOTE_G4 = 392; // G
const int NOTE_A4 = 440; // A
const int NOTE_B4 = 494; // B
const int NOTE_C5 = 523; // C (o oktawę wyżej)
const int NOTE_D5 = 587; // D
const int NOTE_E5 = 659; // E
const int NOTE_F5 = 698; // F
const int NOTE_G5 = 784; // G
void playNote(int frequency, int duration) {
tone(buzzer, frequency, duration); // Generuje dźwięk
delay(duration * 1.3); // Pauza między nutami
}
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
// "Last Christmas" – fragment głównej melodii
playNote(NOTE_A4, 400); // A
playNote(NOTE_A4, 400); // A
playNote(NOTE_F4, 400); // F
playNote(NOTE_A4, 400); // A
playNote(NOTE_G4, 800); // G
delay(200); // Pauza
playNote(NOTE_G4, 400); // G
playNote(NOTE_E4, 400); // E
playNote(NOTE_F4, 400); // F
playNote(NOTE_G4, 400); // G
playNote(NOTE_A4, 800); // A
delay(200); // Pauza
playNote(NOTE_A4, 400); // A
playNote(NOTE_F4, 400); // F
playNote(NOTE_A4, 400); // A
playNote(NOTE_G4, 400); // G
playNote(NOTE_E4, 800); // E
delay(1000); // Dłuższa pauza przed powtórzeniem melodii
}
const int buzzer = 9; // Pin podłączony do brzęczyka
// Definicje częstotliwości nut
const int NOTE_C4 = 262; // C
const int NOTE_D4 = 294; // D
const int NOTE_E4 = 330; // E
const int NOTE_F4 = 349; // F
const int NOTE_G4 = 392; // G
const int NOTE_A4 = 440; // A
const int NOTE_B4 = 494; // B
const int NOTE_C5 = 523; // C (o oktawę wyżej)
// Funkcja do odgrywania nuty
void playNote(int frequency, int duration) {
tone(buzzer, frequency, duration); // Generowanie dźwięku
delay(duration * 1.3); // Krótka przerwa między nutami
}
void setup() {
pinMode(buzzer, OUTPUT); // Ustawienie pinu jako wyjście
}
void loop() {
// Melodia "Pada śnieg"
playNote(NOTE_E4, 400); // E
playNote(NOTE_F4, 400); // F
playNote(NOTE_G4, 400); // G
playNote(NOTE_E4, 400); // E
playNote(NOTE_E4, 400); // E
playNote(NOTE_F4, 400); // F
playNote(NOTE_G4, 400); // G
playNote(NOTE_E4, 400); // E
delay(200); // Krótka pauza
playNote(NOTE_G4, 400); // G
playNote(NOTE_A4, 400); // A
playNote(NOTE_G4, 400); // G
playNote(NOTE_F4, 400); // F
playNote(NOTE_E4, 400); // E
playNote(NOTE_F4, 400); // F
playNote(NOTE_G4, 800); // G (dłuższa nuta)
delay(1000); // Pauza przed powtórzeniem melodii
}
const int buzzer = 9; // Pin podłączony do brzęczyka
// Definicje częstotliwości nut
const int NOTE_C4 = 262; // C
const int NOTE_D4 = 294; // D
const int NOTE_E4 = 330; // E
const int NOTE_F4 = 349; // F
const int NOTE_G4 = 392; // G
const int NOTE_A4 = 440; // A
const int NOTE_B4 = 494; // B
const int NOTE_C5 = 523; // C (o oktawę wyżej)
// Funkcja do zagrania nuty z pauzą
void playNote(int frequency, int duration) {
tone(buzzer, frequency, duration);
delay(duration * 1.3); // Przerwa między dźwiękami
}
void setup() {
pinMode(buzzer, OUTPUT); // Ustawienie pinu brzęczyka jako wyjścia
}
void loop() {
// Pierwsza część melodii
playNote(NOTE_C4, 300); // C
playNote(NOTE_E4, 300); // E
playNote(NOTE_G4, 600); // G (dłuższa nuta)
playNote(NOTE_C4, 300); // C
playNote(NOTE_D4, 300); // D
playNote(NOTE_F4, 600); // F (dłuższa nuta)
delay(200); // Pauza
// Druga część melodii
playNote(NOTE_E4, 300); // E
playNote(NOTE_G4, 300); // G
playNote(NOTE_C5, 600); // C5 (wyższe C)
playNote(NOTE_D4, 300); // D
playNote(NOTE_E4, 300); // E
playNote(NOTE_F4, 600); // F (dłuższa nuta)
delay(500); // Pauza przed ponownym odtworzeniem melodii
}
Nuty i częstotliwości: Zdefiniowane są częstotliwości nut od C4 (262 Hz) do C5 (523 Hz).
Melodia: Fragment piosenki zapisany jest w kolejnych funkcjach playNote().
Przerwy: Pauzy między dźwiękami zapewniają rytm, a dłuższe pauzy oddzielają powtórzenia melodii.