Spisu treści:

Muzyczne bajki: 6 kroków (ze zdjęciami)
Muzyczne bajki: 6 kroków (ze zdjęciami)

Wideo: Muzyczne bajki: 6 kroków (ze zdjęciami)

Wideo: Muzyczne bajki: 6 kroków (ze zdjęciami)
Wideo: Bajka Muzyczna: Chatka Puchatka 2024, Listopad
Anonim
Image
Image

Autor: IanCummingŚledź Więcej autora:

Interwałometr Arduino
Interwałometr Arduino
Nie tylko godzinny zegar
Nie tylko godzinny zegar
Nie tylko godzinny zegar
Nie tylko godzinny zegar
Termometr jednopikselowy
Termometr jednopikselowy
Termometr jednopikselowy
Termometr jednopikselowy

O: Lubię robić rzeczy od rakiet po elektronikę. Więcej o IanieCumming »

Witajcie wszyscy

Zbliża się sezon świąteczny i wiele sklepów zaczęło wystawiać swoje świąteczne dekoracje, pomyślałem, że nadszedł właściwy czas na zbudowanie muzycznych bajek!

Krok 1: Używane części

Używane części
Używane części

Będę używał:

  • 12 diod LED
  • 12 Rezystory ograniczające prąd
  • 1 macierz tranzystorów Darlington ULN 2803
  • Niektóre przewody połączeniowe
  • Głośnik piezoelektryczny
  • Deska do krojenia chleba i
  • Arduino
  • Do wykonania sznurka lampek użyłem 5 przewodów z kabla Ethernet

Krok 2: Kodeks

//GLOBALNE ZMIENNE int barTime = 1200; // 8/8 = 1000ms bajt nrLEDS = 4; // 4 diody bazowe, można dodać wiele równoległych diod bajtowych = { 3, 4, 5, 6}; głośnik bajtowy = 11; długość wzoru bajtów = 64; // wzór Długość bajt songLength = 51; const byte song = { // Jingle Bells Data 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 3, 30, 1, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 29, 2, 27, 2, 27, 2, 29, 2, 27, 4, 32, 4, 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 2, 30, 2, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 32, 2, 32, 2, 30, 2, 27, 2, 25, 8 }; // Struktura ma numer nuty, a następnie // długość nuty we wzorcu ósmego bajtu stałego = { //Dane wzorca 0b0001, 0b0010, 0b0100, 0b1000, //Bity odpowiadają diodom LED w tablicy 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, 0b100b11001, 0011 0b0011, 0b1100, 0b0011, 0b1100, 0b0011, };

Najpierw deklaruję moje zmienne, z których interesujące to Song i Pattern.

  • Piosenka przechowuje melodię; w tym przypadku to Jingle bells.
  • Wzorzec przechowuje pozycje włączone i wyłączone w bitach wartości w tablicy.

Funkcje niestandardowe

//FUNCTIONS int noteToHz(int note) { // Konwertuj nutę Nr. to Frequency float freq = 440 * (pow(1.059463094359, note-21)); // -21 daje notatkę 1 w C3 (chyba) return int(freq); // Wyniki są z dokładnością do 1hz } void lightLEDs(byte PORT_X) { // Kontrolny stan diody LED dla (int q = 0;q

Dwie funkcje, które posiadam, wykonają następujące czynności:

  • Oblicz częstotliwość dla funkcji tonu w pętli
  • włączać lub wyłączać diody w zależności od wartości przekazanej do funkcji

Funkcja konfiguracji

void setup() { //ustaw piny OUTPUT pinMode(speaker, OUTPUT); for(int t = 0; t < nrLEDS; t++){ pinMode(leds[t], OUTPUT); } }

W funkcji setup ustawiłem wymagane piny na OUTPUT.

Funkcja pętli

void loop() { // Music Loop for (int t = 0; t < songLength; t++) { // Nuty, Długość i odtwórz melodię int note = noteToHz(song[t * 2]); int length = ((piosenka[(t * 2)+1] * barTime) / 8); ton(głośnik, nuta, długość - 50); // Migające światła! lightLEDs(wzór[t % długość wzoru]); opóźnienie(długość); } // Pętla ciszy int randomSilence = random(1000, 5000); dla (int t = 0;t

Mam 2 pętle w funkcji Main Loop. Pętla utworu i pętla ciszy

Pętla utworu odczyta dane z tablicy utworów, odtworzy nutę za pomocą funkcji tonu

Pętla piosenki

  • Odczytaj dane z tablicy utworów,
  • Następnie zagraj nutę za pomocą funkcji tonów
  • Zapal diody LED, tablicę wzorów odczytu.

W pętli ciszy

świecą się tylko diody LED

Podłącz Arduino i prześlij kod. (Następnie odłącz go)

Krok 3: Rozpoczęcie obwodu

Rozpoczęcie obwodu
Rozpoczęcie obwodu
Rozpoczęcie obwodu
Rozpoczęcie obwodu
Rozpoczęcie obwodu
Rozpoczęcie obwodu
Rozpoczęcie obwodu
Rozpoczęcie obwodu

Zacznę od sznurka świateł

  • Użyłem przewodu z kabla Ethernet i przylutowałem 3 diody LED równolegle cztery razy, upewniając się, że diody LED są rozstawione równomiernie na około 2 metry
  • Przylutowałem anodę każdego wyprowadzonego przewodu do jednego przewodu.
  • Następnie katoda każdej diody LED do 4 oddzielnych przewodów. Oczywiście z rezystorem
  • Powtórzyłem ten proces 3 razy, aby uzyskać ciąg 12 diod LED i umieściłem piny nagłówka na końcu 5 przewodów

Podłącz szyny dodatnie i uziemiające do płytki stykowej

Krok 4: ULN2803

ULN2803
ULN2803
ULN2803
ULN2803
ULN2803
ULN2803

Umieść chip ULN2308 na płytce stykowej

ULN2308 to układ scalony tranzystorowy; z karty danych, którą widzę

  • Ten pin 1 to wejście, które włącza pin 18 "ON"
  • Pin 2 włącza 17. Itp.
  • Pin 9 jest uziemiony
  • Podłącz pin 9 chipa do szyny uziemiającej
  • Podłącz szynę dodatnią do listwy zaciskowej, jeden pasek powyżej pinu 18. (Za chwilę zobaczysz dlaczego)
  • Podłącz pin 1 układu do pinu 3 Arduino
  • 2 idzie do 4
  • 3 żetonów idzie do 5 i
  • 4 idzie do pinu 6 Arduino
  • Umieść ciąg LED na płytce stykowej. Gdzie wspólny przewód anody jest podłączony do paska podłączonego do 5 woltów. Reszta pinów bajki powinna iść do pinu 18, 17, 16 i 15 chipa.

Krok 5: Dodawanie dźwięku

Dodawanie dźwięku
Dodawanie dźwięku
  • Podłącz głośnik piezo pomiędzy 2 listwy zaciskowe
  • Podłącz ujemny biegun elementu piezo do masy i
  • Drugi koniec głośnika do pinu 11

Krok 6: Wniosek

Wniosek
Wniosek
Wniosek
Wniosek

Mam sznur światełek, które będą losowo grać w dzwoneczki, aby przypomnieć mi, że jest sezon świąteczny.

Zalecana: