Πίνακας περιεχομένων:

Arduino Doorbell: 4 Βήματα
Arduino Doorbell: 4 Βήματα

Βίντεο: Arduino Doorbell: 4 Βήματα

Βίντεο: Arduino Doorbell: 4 Βήματα
Βίντεο: Amazing arduino project 2024, Ιούλιος
Anonim
Arduino Doorbell
Arduino Doorbell

Σήμερα, θα σας δείξω πώς να φτιάξετε ένα κουδούνι πόρτας χρησιμοποιώντας ένα Arduino. Αυτό το κουδούνι της πόρτας παίζει μια τυχαία μελωδία από μια βιβλιοθήκη τραγουδιών. Μπορείτε να προσαρμόσετε το κουδούνι της πόρτας σας και να προσθέσετε ακόμη περισσότερα τραγούδια. Τοποθετήστε το έξω από το υπνοδωμάτιο, την τάξη, το γραφείο ή ακόμα και την μπροστινή πόρτα σας!

Προμήθειες:

  • Arduino Uno (οι περισσότεροι άλλοι τύποι θα κάνουν)
  • Υπολογιστής με Arduino IDE για προγραμματισμό
  • Καλώδιο USB-A σε USB-B για τον προγραμματισμό του Arduino
  • Breadboard
  • 4x καλώδια βραχυκυκλωτήρων
  • Κουμπί ή άλλος διακόπτης
  • Αντίσταση 10 kOhm
  • Παθητικός βομβητής (δηλαδή πιεζοηλεκτρικό ηχείο)
  • Για μόνιμη εγκατάσταση:

    • Τροφοδοτικό 9V DC ή μπαταρία 9V για τροφοδοσία του Arduino
    • 2x μακριά σύρματα για κουμπί καλωδίωσης έξω από την πόρτα

Βήμα 1: Ρύθμιση υλικού

Ρύθμιση υλικού
Ρύθμιση υλικού
Ρύθμιση υλικού
Ρύθμιση υλικού
Ρύθμιση υλικού
Ρύθμιση υλικού

Αρχικά, θα ρυθμίσουμε το υλικό. Θα ξεκινήσουμε με τον παθητικό βομβητή (δηλ. Ηχείο). Θέλουμε να συνδέσουμε το θετικό άκρο του παθητικού βομβητή (συμβολίζεται με το σύμβολο "+") στην ψηφιακή ακίδα 8 στο Arduino. Θα συνδέσουμε το άλλο άκρο του βομβητή passize με τη γείωση.

Στη συνέχεια, θα εγκαταστήσουμε το κουμπί για το κουδούνι της πόρτας. Θα χρησιμοποιήσουμε μια εξωτερική αντίσταση αναδίπλωσης 10 kOhm για τον διακόπτη, οπότε δεν υπάρχει κυμαινόμενη τάση ή ασταθής κατάσταση στην είσοδο του Arduino. Χρησιμοποιώντας την αντίσταση αναδίπλωσης, το Arduino διαβάζει την τάση ως 0V όταν δεν πατάτε το κουμπί και 5V όταν πατάτε το κουμπί. Για περισσότερες πληροφορίες σχετικά με τις αντιστάσεις pullup ή pullldown, μπορείτε να διαβάσετε αυτό το άρθρο:

Θα συνδέσουμε τη μία πλευρά του κουμπιού σε 5V. Η άλλη πλευρά του κουμπιού θα συνδεθεί με τη γείωση μέσω μιας αντίστασης αναδίπλωσης 10 kOhm. Θυμηθείτε: τα κουμπιά συνδέονται εσωτερικά οριζόντια. Συνδέονται κάθετα μόνο όταν πιέζονται. Περισσότερες πληροφορίες παρέχονται σε αυτό το άρθρο:

Βήμα 2: Ρύθμιση λογισμικού

Όλος ο κωδικός επισυνάπτεται. Παρακάτω είναι οι περιγραφές κάθε μιας από τις συναρτήσεις με στιγμιότυπα του κώδικα.

ρύθμιση:

Στη συνάρτηση setup (), θέλουμε να διαμορφώσουμε τις ψηφιακές ακίδες για το κουμπί και το ηχείο μας. Θέλουμε να διαμορφώσουμε το pin 2 ως είσοδο για το κουμπί μας και θέλουμε να διαμορφώσουμε τον pin 8 ως έξοδο για το ηχείο μας.

Θέλουμε επίσης να "σπείρουμε" τη γεννήτρια τυχαίων αριθμών μας για τυχαία επιλογή μιας μελωδίας όταν κάποιος χτυπά το κουδούνι μας. Η σπορά της γεννήτριας τυχαίων αριθμών σημαίνει ότι τροφοδοτούμε με τυχαία είσοδο. Θα τοποθετήσουμε τη γεννήτρια τυχαίων αριθμών με την τιμή τάσης στην αναλογική είσοδο 0. Δεδομένου ότι τίποτα δεν συνδέεται με αυτήν την είσοδο, θα υπάρχει μια "τυχαία", κυμαινόμενη τάση σε αυτόν τον πείρο παρέχοντας στη γεννήτρια τυχαίων αριθμών μας πολλές διαφορετικές τιμές. Αυτό διασφαλίζει ότι θα έχουμε διαφορετική σειρά επιλογών τραγουδιών για το κουδούνι μας. Για περισσότερες πληροφορίες σχετικά με τη συνάρτηση Arduino random (), μεταβείτε εδώ:

#include "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8/ * set up function */void setup () {// enable pin/input pin pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // σπόρος random () συνάρτηση έτσι ώστε να έχουμε μια διαφορετική σειρά randomSeed (analogRead (0)); }

βρόχος:

Στη λειτουργία βρόχου (), θα ελέγχουμε συνεχώς για να δούμε αν πατάμε το κουμπί (ο ψηφιακός πείρος 2 είναι ψηλός). Εάν η καρφίτσα είναι υψηλή, περιμένουμε 50 ms και ελέγχουμε ξανά για να βεβαιωθούμε ότι είναι ακόμα ψηλά. Αυτό διασφαλίζει ότι το κουμπί είναι πατημένο και ότι δεν ήταν αδέσποτος θόρυβος στην ψηφιακή ακίδα εισόδου προκαλώντας ψευδώς θετικό.

Μόλις επιβεβαιώσουμε ότι πατήθηκε το κουμπί, χρησιμοποιούμε τη γεννήτρια τυχαίων αριθμών για να επιλέξουμε ένα από τα 5 τραγούδια χρησιμοποιώντας μια εντολή switch. Τα δεδομένα για αυτά τα τραγούδια αποθηκεύονται στο "songs.h" και οι πληροφορίες βήματος αποθηκεύονται στο "pitches.h". Μόλις επιλέξουμε ένα τραγούδι, περνάμε αυτές τις πληροφορίες στη συνάρτηση play_song ().

/ * κύρια λειτουργία βρόχου ενώ */

void loop () {// ελέγξτε εάν πατάτε το κουμπί εάν (digitalRead (BUTTON_PIN) == HIGH) {// καθυστερήστε 50 ms για να βεβαιωθείτε ότι είναι ακόμα πατημένο // αποφεύγει τυχόν καθυστέρηση ακατάλληλων λανθασμένων αναγνώσεων (50). εάν (digitalRead (BUTTON_PIN) == HIGH) {// επιλέξτε τυχαία ένα τραγούδι int song_choice = τυχαίο (5); // επιλέξτε ποιο τραγούδι θα παίξει διακόπτης (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); Διακοπή; θήκη 1: play_song (marioLength, mario, marioDurations, marioTempo); Διακοπή; θήκη 2: play_song (miiLength, mii, miiDurations, miiTempo); Διακοπή; περίπτωση 3: play_song (hpLength, hp, hpDurations, hpTempo); Διακοπή; θήκη 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); Διακοπή; προεπιλογή: play_song (miiLength, mii, miiDurations, miiTempo); Διακοπή; }}}}

play_song:

Το play_song () παίρνει 4 επιχειρήματα: έναν ακέραιο αριθμό νότες στο τραγούδι, έναν ακέραιο πίνακα των τόνων της μελωδίας, έναν ακέραιο πίνακα της διάρκειας και ένα ακέραιο τέμπο για το συγκεκριμένο τραγούδι. Πρέπει να καθορίσετε καθένα από αυτά για κάθε τραγούδι που θέλετε να παίξετε. Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης των λειτουργιών τόνου Arduino, μπορείτε να δείτε αυτό το σεμινάριο: https://www.arduino.cc/en/Tutorial/ToneMelody. Πρόσθεσα κάποια λειτουργικότητα πάνω από αυτό το σεμινάριο για τις διακεκομμένες σημειώσεις. Εάν μια τιμή στον πίνακα διάρκειας της σημείωσης είναι αρνητική, αυτό σημαίνει ότι είναι μια σημειακή σημείωση (το μήκος είναι 1,5 φορές μεγαλύτερο).

/ * παίζει το τραγούδι */

void play_song (int num_notes, int melody , int noteDurations , int tempo) {// περάστε και παίξτε όλες τις νότες για (int i = 0; i 0) {duration = tempo / noteDurations ; } // εάν είναι αρνητικός αριθμός, σημαίνει σημειακή σημείωση // αυξάνει τη διάρκεια στο μισό για τις διακεκομμένες σημειώσεις αλλιώς εάν (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } τόνος (SPEAKER_PIN, μελωδία , διάρκεια); // για να διακρίνετε τις σημειώσεις, ορίστε έναν ελάχιστο χρόνο μεταξύ τους. // η διάρκεια της σημείωσης + 30% φαίνεται να λειτουργεί καλά: int pauseBetweenNotes = διάρκεια * 1,30; καθυστέρηση (pauseBetweenNotes); // διακοπή της αναπαραγωγής του τόνου: noTone (SPEAKER_PIN); }}

Δείγμα τραγουδιών.h:

Παρακάτω είναι ένα δείγμα ενός από τα τραγούδια στο "songs.h". Οι σημειώσεις είναι μακροεντολές που ορίζονται σε "pitches.h". Οι αριθμοί αντιστοιχούν στις συχνότητες των σημειώσεων σε hertz (Hz). Η διάρκεια των νότες ορίζεται ως: 1 = ολόκληρη νότα, 2 = μισή νότα, 4 = νότα τέταρτου, 8 = όγδοη νότα, -4 = σημείωση τέταρτου με κουκκίδες, κλπ. Το μήκος είναι ο συνολικός αριθμός νότες στο τραγούδι. Το τέμπο είναι διαχωριστικό για την ταχύτητα του τραγουδιού (υψηλότερος αριθμός σημαίνει πιο αργό τέμπο). Θα πρέπει να παίξετε με αυτόν τον αριθμό μέχρι να αποκτήσετε ένα τέμπο που σας αρέσει.

/* Χάρρυ Πόττερ */

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;

Βήμα 3: Τροποποιήσεις

Προσθέστε περισσότερα τραγούδια! Ακολουθήστε τη μορφή που εμφανίζεται στο "songs.h" και χρησιμοποιήστε το σεμινάριο για βοήθεια: https://www.arduino.cc/en/Tutorial/ToneMelody. Για κάθε νέο τραγούδι που προσθέτετε, θυμηθείτε να προσθέσετε μια νέα περίπτωση στη δήλωση διακόπτη και να αυξήσετε τον μέγιστο αριθμό που μπορεί να δημιουργηθεί από την τυχαία συνάρτηση (). Καλή κωδικοποίηση!

Βήμα 4: Περισσότερα έργα

Για περισσότερα έργα, επισκεφθείτε τις σελίδες μου:

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

Συνιστάται: