Menu
CoddyTech

Melodia z dwóch tablic

Część sekcji Wyjścia ścieżki Arduino w Coddy. Lekcja 14 z 24.

Dźwięki w melodii nie są jednakowej długości. Druga tablica może przechowywać czasy trwania, dopasowane do dźwięków: notes[i] i durations[i] tworzą parę.

int notes[] = {262, 262, 392, 392, 440, 440, 392};
int durations[] = {400, 400, 400, 400, 400, 400, 800};

Dwa jednakowe dźwięki zagrane jeden po drugim zlałyby się w jeden długi dźwięk. Krótka cisza po każdym z nich pozwala je rozdzielić, więc graj dźwięk przez czas jego trwania i odczekaj chwilę dłużej:

tone(8, notes[i], durations[i]);
delay(durations[i] + 50);

Czas trwania zatrzymuje dźwięk, a dodatkowe 50 ms to przerwa przed następnym dźwiękiem.

Gdy indeks przekroczy pozycję ostatniego dźwięku, melodia dobiega końca: odczekaj chwilę przed jej ponownym rozpoczęciem, aby nie nałożyła się na samą siebie.

challenge icon

Wyzwanie

Średni

Odtwórz pierwszą linijkę Twinkle Twinkle Little Star na pinie 8:

  • notes: 262, 262, 392, 392, 440, 440, 392
  • durations: 400 ms każda, a dla ostatniej nuty 800 ms
  • po każdej nucie odczekaj tyle, ile trwa, plus 50 ms
  • po ostatniej nucie odczekaj jeszcze jedną sekundę i zacznij od nowa

Naciśnij Run, a następnie Check.

Spróbuj swoich sił

const int buzzerPin = 8;
// utwórz tutaj tablice nut i czasów trwania oraz indeks

void setup() {
}

void loop() {
  // odtwórz jedną nutę, odczekaj czas jej trwania plus 50 ms, przejdź do następnej
  // po ostatniej nucie odczekaj sekundę i zacznij od nowa
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wyjścia

Poćwicz samodzielnie: Edytor online Arduino