Spisu treści:

Dzwonek Arduino: 4 kroki
Dzwonek Arduino: 4 kroki

Wideo: Dzwonek Arduino: 4 kroki

Wideo: Dzwonek Arduino: 4 kroki
Wideo: Уроки Arduino #4 - функции времени 2024, Lipiec
Anonim
Dzwonek Arduino
Dzwonek Arduino

Dzisiaj pokażę wam jak zrobić dzwonek do drzwi za pomocą Arduino. Ten dzwonek odtwarza losową melodię z biblioteki piosenek. Możesz dostosować dzwonek do drzwi i dodać jeszcze więcej piosenek. Zainstaluj go poza sypialnią, klasą, biurem, a nawet drzwiami wejściowymi!

Kieszonkowe dzieci:

  • Arduino Uno (zrobi większość innych typów)
  • Komputer z Arduino IDE do programowania
  • Kabel USB-A na USB-B do programowania Arduino
  • Deska do krojenia chleba
  • 4x przewody połączeniowe
  • Przycisk lub inny przełącznik
  • Rezystor 10 kΩ
  • Brzęczyk pasywny (tj. głośnik piezoelektryczny)
  • Do instalacji stałej:

    • Zasilacz 9V DC lub bateria 9V do zasilania Arduino
    • 2x długie przewody do okablowania przycisku na zewnątrz drzwi

Krok 1: Konfiguracja sprzętu

Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu
Konfiguracja sprzętu

Najpierw skonfigurujemy sprzęt. Zaczniemy od brzęczyka pasywnego (tj. głośnika). Chcemy podłączyć dodatni koniec pasywnego buzzera (oznaczony znakiem „+”) do cyfrowego pinu 8 w Arduino. Podłączymy drugi koniec brzęczyka passize do masy.

Następnie zainstalujemy przycisk do dzwonka. Do przełącznika użyjemy zewnętrznego rezystora pulldown 10 kOhm, dzięki czemu na wejściu Arduino nie występuje napięcie ani niestabilny stan. Korzystając z rezystora pulldown, Arduino odczytuje napięcie jako 0 V, gdy przycisk nie jest wciśnięty i 5 V, gdy przycisk jest wciśnięty. Więcej informacji na temat rezystorów pullup lub pulldown można znaleźć w tym artykule:

Jedną stronę przycisku podłączymy do 5V. Druga strona przycisku zostanie podłączona do masy przez rezystor ściągający 10 kOhm. Pamiętaj: przyciski są połączone wewnętrznie poziomo. Są one połączone tylko w pionie po naciśnięciu. Więcej informacji znajduje się w tym artykule:

Krok 2: Konfiguracja oprogramowania

Cały kod jest załączony. Poniżej znajdują się opisy każdej z funkcji wraz z migawkami kodu.

Ustawiać:

W funkcji setup() chcemy skonfigurować piny cyfrowe dla naszego przycisku i głośnika. Chcemy skonfigurować pin 2 jako wejście dla naszego przycisku i chcemy skonfigurować pin 8 jako wyjście dla naszego głośnika.

Chcemy również „zasiać” nasz generator liczb losowych do losowego wybierania melodii, gdy ktoś zadzwoni do naszego dzwonka. Zaszczepienie naszego generatora liczb losowych oznacza podanie mu losowych danych wejściowych. Zasilimy nasz generator liczb losowych wartością napięcia na wejściu analogowym 0. Ponieważ nic nie jest podłączone do tego wejścia, na tym styku pojawi się „losowe”, zmienne napięcie, które zapewni naszemu generatorowi liczb losowych wiele różnych wartości. Gwarantuje to, że dla naszego dzwonka do drzwi będziemy mieć inną kolejność wyboru utworów. Więcej informacji na temat funkcji Arduino random() można znaleźć tutaj:

#include "smoły.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 /* konfiguracja funkcji */ void setup() { // włączenie pinów wejścia/wyjścia pinMode(BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, WYJŚCIE); // zainicjuj funkcję random(), aby otrzymać inną kolejność randomSeed(analogRead(0)); }

pętla:

W naszej funkcji loop() będziemy stale sprawdzać, czy przycisk jest wciśnięty (cyfrowy pin 2 jest wysoki). Jeśli pin jest wysoki, czekamy 50 ms i ponownie sprawdzamy, czy nadal jest wysoki. Gwarantuje to, że przycisk jest wciśnięty i nie było zabłąkanych szumów na pinie wejścia cyfrowego powodującego fałszywie dodatni wynik.

Po potwierdzeniu, że przycisk został wciśnięty, używamy naszego generatora liczb losowych, aby wybrać jeden z 5 utworów za pomocą instrukcji switch. Dane tych utworów są przechowywane w „songs.h”, a informacje o wysokości dźwięku są przechowywane w „pitches.h”. Po wybraniu utworu przekazujemy te informacje do funkcji play_song().

/* główna funkcja pętli while */

void loop() { // sprawdź, czy przycisk jest wciśnięty if (digitalRead(BUTTON_PIN) == HIGH) { //opóźnij 50 ms, aby upewnić się, że nadal jest wciśnięty // pozwala uniknąć zabłąkanych błędnych odczytów delay(50); if(digitalRead(BUTTON_PIN) == HIGH) { // losowo wybierz utwór int song_choice = random(5); // wybierz piosenkę do odtworzenia switch (song_choice) { case 0: play_song(strzyżenieDługość, strzyżenie, strzyżenieCzas trwania, strzyżenie Tempo); przerwa; przypadek 1: play_song(marioLength, mario, marioDurations, marioTempo); przerwa; przypadek 2: play_song(miiLength, mii, miiDurations, miiTempo); przerwa; przypadek 3: play_song(hpLength, hp, hpDurations, hpTempo); przerwa; przypadek 4: play_song(takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); przerwa; domyślnie: play_song(miiLength, mii, miiDurations, miiTempo); przerwa; } } } }

Graj piosenkę:

play_song() przyjmuje 4 argumenty: całkowitą liczbę nut w utworze, całkowitą tablicę wysokości tonów w melodii, całkowitą tablicę czasu trwania i całkowitą szybkość dla tej konkretnej piosenki. Musisz określić każdy z nich dla każdego utworu, który chcesz odtworzyć. Więcej informacji na temat korzystania z funkcji tonów Arduino można znaleźć w tym samouczku: https://www.arduino.cc/en/Tutorial/ToneMelody. Dodałem kilka funkcji do tego samouczka dla notatek z kropkami. Jeśli wartość w tablicy czasu trwania nuty jest ujemna, oznacza to, że jest to nuta z kropką (długość jest 1,5 raza większa).

/* odtwarza piosenkę */

void play_song(int num_notes, int melody, int noteDurations, int tempo) { // przejdź i zagraj wszystkie nuty for (int i=0; i 0) { duration = tempo / noteDurations; } // jeśli jest to liczba ujemna, oznacza nutę z kropką // zwiększa czas trwania o połowę dla nut z kropkami else if (noteDurations < 0) { duration = tempo / abs(noteDurations) * 1.5; } ton(SPEAKER_PIN, melodia, czas trwania); // aby odróżnić nuty, ustaw minimalny czas między nimi. // czas trwania nuty + 30% wydaje się działać dobrze: int pauseBetweenNotes = czas trwania * 1.30; opóźnienie(pauzaMiędzyNotatkami); // zatrzymaj odtwarzanie dźwięku: noTone(SPEAKER_PIN); } }

Przykładowe utwory.h:

Poniżej znajduje się próbka jednej z piosenek w "songs.h". Notatki są makrami zdefiniowanymi w "pitches.h". Liczby odpowiadają częstotliwościom nut w hercach (Hz). Czas trwania nut jest zdefiniowany jako: 1 = cała nuta, 2 = półnuta, 4 = ćwierćnuta, 8 = ósemka, -4 = ćwierćnuta z kropką, itd. Długość to całkowita liczba nut w utworze. Tempo jest dzielnikiem szybkości utworu (wyższa liczba oznacza wolniejsze tempo). Będziesz musiał bawić się tym numerem, aż uzyskasz tempo, które lubisz.

/* Harry Potter */

int hp = { NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4 }; int hpDurations = { 4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1 }; int hpLength = 14; int hpTempo = 1050;

Krok 3: Poprawki

Dodaj więcej piosenek! Postępuj zgodnie z formatem pokazanym w "songs.h" i skorzystaj z samouczka, aby uzyskać pomoc: https://www.arduino.cc/en/Tutorial/ToneMelody. Dla każdej nowej piosenki, którą dodasz, pamiętaj, aby dodać nową wielkość liter do instrukcji switch i zwiększyć maksymalną liczbę, jaką może wygenerować funkcja random(). Udanego kodowania!

Krok 4: Więcej projektów

Więcej projektów znajdziesz na moich stronach:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

Zalecana: