Mục lục:

Chuông cửa Arduino: 4 bước
Chuông cửa Arduino: 4 bước

Video: Chuông cửa Arduino: 4 bước

Video: Chuông cửa Arduino: 4 bước
Video: Arduino - Bước Đầu Làm Quen Lập Trình Arduino Với Arduino Nano 2024, Tháng bảy
Anonim
Chuông cửa Arduino
Chuông cửa Arduino

Hôm nay, tôi sẽ hướng dẫn bạn cách tạo chuông cửa bằng Arduino. Chuông cửa này phát một giai điệu ngẫu nhiên từ thư viện các bài hát. Bạn có thể tùy chỉnh chuông cửa của mình và thêm nhiều bài hát hơn nữa. Cài đặt nó bên ngoài phòng ngủ, lớp học, văn phòng hoặc thậm chí cửa trước của bạn!

Quân nhu:

  • Arduino Uno (hầu hết các loại khác sẽ làm được)
  • Máy tính có Arduino IDE để lập trình
  • Cáp USB-A đến USB-B để lập trình Arduino
  • Breadboard
  • 4x dây nhảy
  • Nút ấn hoặc công tắc khác
  • Điện trở 10 kOhm
  • Bộ rung thụ động (tức là loa áp điện)
  • Để cài đặt vĩnh viễn:

    • Nguồn điện 9V DC hoặc pin 9V để cấp nguồn cho Arduino
    • 2x dây dài cho nút đấu dây bên ngoài cửa

Bước 1: Thiết lập phần cứng

Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng

Đầu tiên, chúng tôi sẽ thiết lập phần cứng. Chúng ta sẽ bắt đầu với bộ rung thụ động (tức là loa). Chúng tôi muốn kết nối đầu dương của bộ rung thụ động (ký hiệu bằng dấu "+") với chân số 8 trên Arduino. Chúng tôi sẽ kết nối đầu kia của bộ rung kích thước với mặt đất.

Tiếp theo, chúng ta sẽ cài nút ấn cho chuông cửa. Chúng tôi sẽ sử dụng một điện trở kéo xuống bên ngoài 10 kOhm cho công tắc, vì vậy không có điện áp nổi hoặc trạng thái không ổn định trên đầu vào của Arduino. Bằng cách sử dụng điện trở kéo xuống, Arduino đọc điện áp là 0V khi không nhấn nút và 5V khi nhấn nút. Để biết thêm thông tin về điện trở pullup hoặc pulldown, bạn có thể đọc bài viết này:

Chúng tôi sẽ kết nối một bên của nút nhấn với 5V. Mặt còn lại của nút bấm sẽ được nối với đất thông qua một điện trở kéo xuống 10 kOhm. Hãy nhớ rằng: các nút bấm được kết nối theo chiều ngang bên trong. Chúng chỉ được kết nối theo chiều dọc khi được nhấn. Thông tin thêm được cung cấp trong bài viết này:

Bước 2: Thiết lập phần mềm

Tất cả các mã được đính kèm. Dưới đây là mô tả của từng chức năng với ảnh chụp nhanh của mã.

cài đặt:

Trong hàm setup (), chúng ta muốn định cấu hình các chân kỹ thuật số cho nút và loa của chúng ta. Chúng tôi muốn định cấu hình chân 2 làm đầu vào cho nút của chúng tôi và chúng tôi muốn định cấu hình chân 8 làm đầu ra cho loa của chúng tôi.

Chúng tôi cũng muốn "gieo" bộ tạo số ngẫu nhiên của mình để chọn ngẫu nhiên một giai điệu khi ai đó bấm chuông cửa của chúng tôi. Đưa trình tạo số ngẫu nhiên của chúng tôi có nghĩa là cung cấp cho nó một đầu vào ngẫu nhiên. Chúng tôi sẽ gieo bộ tạo số ngẫu nhiên của chúng tôi với giá trị điện áp trên đầu vào tương tự 0. Vì không có gì được kết nối với đầu vào này, sẽ có một điện áp dao động "ngẫu nhiên" trên chân này cung cấp cho bộ tạo số ngẫu nhiên của chúng tôi với nhiều giá trị khác nhau. Điều này đảm bảo rằng chúng tôi sẽ có một thứ tự lựa chọn bài hát khác nhau cho chuông cửa của chúng tôi. Để biết thêm thông tin về hàm Arduino random (), hãy truy cập tại đây:

#include "pitch.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * thiết lập chức năng * / void setup () {// kích hoạt các chân xuất nhập pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // hàm seed random () để chúng ta nhận được một thứ tự khác randomSeed (analogRead (0)); }

vòng:

Trong hàm loop () của chúng tôi, chúng tôi sẽ liên tục kiểm tra xem nút có được nhấn hay không (chân kỹ thuật số 2 ở mức cao). Nếu pin ở mức cao, chúng ta đợi 50 ms và kiểm tra lại để đảm bảo rằng nó vẫn ở mức cao. Điều này đảm bảo rằng nút được nhấn và nó không bị nhiễu trên chân đầu vào kỹ thuật số gây ra dương tính giả.

Khi chúng tôi đã xác nhận rằng nút đã được nhấn, chúng tôi sử dụng trình tạo số ngẫu nhiên để chọn một trong 5 bài hát bằng cách sử dụng câu lệnh chuyển đổi. Dữ liệu cho các bài hát này được lưu trữ trong "songs.h" và thông tin cao độ được lưu trữ trong "pitchhes.h". Khi chúng ta chọn một bài hát, chúng ta chuyển thông tin này vào hàm play_song ().

/ * hàm vòng lặp while chính * /

void loop () {// kiểm tra xem nút có được nhấn không if (digitalRead (BUTTON_PIN) == HIGH) {// trì hoãn 50 ms để đảm bảo rằng nó vẫn được nhấn // tránh bất kỳ sự chậm trễ đọc sai nào (50); if (digitalRead (BUTTON_PIN) == HIGH) {// chọn ngẫu nhiên một bài hát int song_choice = random (5); // chọn bài hát cần phát switch (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); nghỉ; case 1: play_song (marioLength, mario, marioDurations, marioTempo); nghỉ; case 2: play_song (miiLength, mii, miiDurations, miiTempo); nghỉ; case 3: play_song (hpLength, hp, hpDurations, hpTempo); nghỉ; case 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); nghỉ; default: play_song (miiLength, mii, miiDurations, miiTempo); nghỉ; }}}}

chơi nhạc:

play_song () nhận 4 đối số: một số nguyên các nốt trong bài hát, một mảng nguyên các cao độ trong giai điệu, một mảng nguyên thời lượng và một số nguyên nhịp độ cho bài hát cụ thể đó. Bạn phải chỉ định từng cái này cho mỗi bài hát bạn muốn chơi. Để biết thêm thông tin về cách sử dụng các chức năng âm Arduino, bạn có thể xem hướng dẫn này: https://www.arduino.cc/en/Tutorial/ToneMelody. Tôi đã thêm một số chức năng trên đầu hướng dẫn này cho các ghi chú dạng chấm. Nếu một giá trị trong mảng thời lượng nốt là số âm, điều đó có nghĩa là đó là một nốt chấm (độ dài lớn hơn 1,5 lần).

/ * phát bài hát * /

void play_song (int num_notes, int giai điệu , int noteDurations , int tempo) {// xem qua và chơi tất cả các nốt cho (int i = 0; i 0) {length = tempo / noteDurations ; } // nếu đó là một số âm, nghĩa là ghi chú có dấu chấm // tăng thời lượng lên một nửa cho các ghi chú có dấu chấm khác if (noteDurations <0) {length = tempo / abs (noteDurations ) * 1.5; } giai điệu (SPEAKER_PIN, giai điệu , thời lượng); // để phân biệt các ghi chú, hãy đặt thời gian tối thiểu giữa chúng. // thời lượng của ghi chú + 30% dường như hoạt động tốt: int pauseBetweenNotes = time * 1.30; trì hoãn (pauseBetweenNotes); // dừng phát âm báo: noTone (SPEAKER_PIN); }}

Mẫu bài hát.h:

Dưới đây là mẫu của một trong các bài hát trong "songs.h". Các ghi chú là các macro được xác định trong "pitch.h". Các con số tương ứng với tần số của các nốt tính bằng hertz (Hz). Thời lượng của các nốt được định nghĩa là: 1 = toàn bộ nốt, 2 = nửa nốt, 4 = nốt phần tư, 8 = nốt thứ tám, -4 = nốt phần tư có dấu chấm, v.v. Độ dài là tổng số nốt trong bài hát. Nhịp độ là vạch chia cho tốc độ của bài hát (số cao hơn có nghĩa là tiết tấu chậm hơn). Bạn sẽ phải chơi với con số này cho đến khi đạt được nhịp độ mà bạn thích.

/ * thợ gốm harry * /

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;

Bước 3: Chỉnh sửa

Thêm nhiều bài hát hơn! Làm theo định dạng hiển thị trong "songs.h" và sử dụng hướng dẫn để được trợ giúp: https://www.arduino.cc/en/Tutorial/ToneMelody. Đối với mỗi bài hát mới bạn thêm vào, hãy nhớ thêm một trường hợp mới vào câu lệnh switch và tăng số lượng tối đa có thể được tạo bởi hàm random () của bạn. Chúc bạn viết mã vui vẻ!

Bước 4: Dự án khác

Để biết thêm các dự án khác, hãy truy cập các trang của tôi:

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

Đề xuất: