Table des matières:

Sonnette Arduino : 4 étapes
Sonnette Arduino : 4 étapes

Vidéo: Sonnette Arduino : 4 étapes

Vidéo: Sonnette Arduino : 4 étapes
Vidéo: How to build an arduino based doorbell alarm system | Learn Coding and Electronics now ‎@EduroSom  2024, Juillet
Anonim
Sonnette Arduino
Sonnette Arduino

Aujourd'hui, je vais vous montrer comment faire une sonnette à l'aide d'un Arduino. Cette sonnette joue une mélodie aléatoire à partir d'une bibliothèque de chansons. Vous pouvez personnaliser votre sonnette et ajouter encore plus de chansons. Installez-le à l'extérieur de votre chambre, de votre salle de classe, de votre bureau ou même de votre porte d'entrée !

Fournitures:

  • Arduino Uno (la plupart des autres types feront l'affaire)
  • Ordinateur avec Arduino IDE pour la programmation
  • Câble USB-A vers USB-B pour programmer Arduino
  • Planche à pain
  • 4x cavaliers
  • Bouton poussoir ou autre interrupteur
  • Résistance de 10 kOhms
  • Buzzer passif (c'est-à-dire haut-parleur piézoélectrique)
  • Pour une installation permanente:

    • Alimentation 9V DC ou batterie 9V pour alimenter Arduino
    • 2x longs fils pour le bouton de câblage à l'extérieur de la porte

Étape 1: configuration du matériel

configuration materielle
configuration materielle
configuration materielle
configuration materielle
configuration materielle
configuration materielle

Tout d'abord, nous allons configurer le matériel. Nous allons commencer par le buzzer passif (c'est-à-dire le haut-parleur). Nous voulons connecter l'extrémité positive du buzzer passif (indiqué par le signe "+") à la broche numérique 8 de l'Arduino. Nous allons connecter l'autre extrémité du buzzer passize à la masse.

Ensuite, nous allons installer le bouton poussoir de la sonnette. Nous utiliserons une résistance pulldown externe de 10 kOhm pour le commutateur, il n'y a donc pas de tension flottante ou d'état instable sur l'entrée de l'Arduino. En utilisant la résistance pulldown, l'Arduino lit la tension comme 0V lorsque le bouton n'est pas enfoncé et 5V lorsque le bouton est enfoncé. Pour plus d'informations sur les résistances pullup ou pulldown, vous pouvez lire cet article:

Nous allons connecter un côté du bouton poussoir au 5V. L'autre côté du bouton-poussoir sera connecté à la terre via une résistance pulldown de 10 kOhm. N'oubliez pas: les boutons-poussoirs sont connectés horizontalement à l'intérieur. Ils ne sont connectés verticalement que lorsqu'ils sont pressés. Plus d'informations sont fournies dans cet article:

Étape 2: Configuration du logiciel

Tout le code est joint. Vous trouverez ci-dessous les descriptions de chacune des fonctions avec des instantanés du code.

mettre en place:

Dans la fonction setup(), nous souhaitons configurer les broches numériques de notre bouton et de notre haut-parleur. Nous voulons configurer la broche 2 comme entrée pour notre bouton, et nous voulons configurer la broche 8 comme sortie pour notre haut-parleur.

Nous voulons également "ensemencer" notre générateur de nombres aléatoires pour sélectionner au hasard une mélodie lorsque quelqu'un sonne à notre porte. Ensemencer notre générateur de nombres aléatoires signifie lui fournir une entrée aléatoire. Nous allons ensemencer notre générateur de nombres aléatoires avec la valeur de tension sur l'entrée analogique 0. Puisque rien n'est connecté à cette entrée, il y aura une tension "aléatoire" fluctuante sur cette broche fournissant à notre générateur de nombres aléatoires de nombreuses valeurs différentes. Cela garantit que nous aurons un ordre différent de sélections de chansons pour notre sonnette. Pour plus d'informations sur la fonction Arduino random(), rendez-vous ici:

#include "emplacements.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 /* configurer la fonction */ void setup() { // activer les broches d'entrée/sortie pinMode(BUTTON_PIN, INPUT); pinMode(SPEAKER_PIN, SORTIE); // seed random() pour obtenir un ordre différent randomSeed(analogRead(0)); }

boucle:

Dans notre fonction loop(), nous vérifierons en permanence si le bouton est enfoncé (la broche numérique 2 est haute). Si la broche est haute, nous attendons 50 ms et vérifions à nouveau pour nous assurer qu'elle est toujours haute. Cela garantit que le bouton est enfoncé et qu'il n'y avait pas de bruit parasite sur la broche d'entrée numérique provoquant un faux positif.

Une fois que nous avons confirmé que le bouton a été enfoncé, nous utilisons notre générateur de nombres aléatoires pour sélectionner l'une des 5 chansons à l'aide d'une instruction switch. Les données de ces chansons sont stockées dans « songs.h » et les informations de hauteur sont stockées dans « pitchs.h ». Une fois que nous avons choisi une chanson, nous passons cette information dans la fonction play_song().

/* fonction de boucle while principale */

void loop() { // vérifie si le bouton est enfoncé if (digitalRead(BUTTON_PIN) == HIGH) { // retard de 50 ms pour s'assurer qu'il est toujours enfoncé // évite toute erreur de lecture parasite delay(50); if(digitalRead(BUTTON_PIN) == HIGH) { // choisit au hasard une chanson int song_choice = random(5); // sélection de la chanson à jouer switch (song_choice) { case 0: play_song(haircutLength, haircut, haircutDurations, haircutTempo); Pause; cas 1: play_song(marioLength, mario, marioDurations, marioTempo); Pause; cas 2: play_song(miiLength, mii, miiDurations, miiTempo); Pause; cas 3: play_song(hpLength, hp, hpDurations, hpTempo); Pause; cas 4: play_song(takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); Pause; par défaut: play_song(miiLength, mii, miiDurations, miiTempo); Pause; } } } }

play_chanson:

play_song() prend 4 arguments: un nombre entier de notes dans la chanson, un tableau entier des hauteurs de la mélodie, un tableau entier de la durée et un tempo entier pour cette chanson particulière. Vous devez spécifier chacun d'eux pour chaque chanson que vous souhaitez jouer. Pour plus d'informations sur l'utilisation des fonctions de tonalité Arduino, vous pouvez consulter ce didacticiel: https://www.arduino.cc/en/Tutorial/ToneMelody. J'ai ajouté quelques fonctionnalités en plus de ce tutoriel pour les notes pointées. Si une valeur dans le tableau de durée de note est négative, cela signifie qu'il s'agit d'une note pointée (la longueur est 1,5 fois plus grande).

/* joue la chanson */

void play_song(int num_notes, int melody, int noteDurations, int tempo) { // parcourir et jouer toutes les notes pour (int i=0; i 0) { duration = tempo / noteDurations; } // si c'est un nombre négatif, signifie note pointée // augmente la durée de moitié pour les notes pointées else if (noteDurations < 0) { duration = tempo / abs(noteDurations) * 1.5; } tone(SPEAKER_PIN, mélodie, durée); // pour distinguer les notes, définissez un temps minimum entre elles. // la durée de la note + 30% semble bien fonctionner: int pauseBetweenNotes = duration * 1.30; delay(pauseBetweenNotes); // arrête la tonalité: noTone(SPEAKER_PIN); } }

Exemple de chansons.h:

Vous trouverez ci-dessous un échantillon de l'une des chansons de "songs.h". Les notes sont des macros définies dans "pitchs.h". Les nombres correspondent aux fréquences des notes en hertz (Hz). La durée des notes est définie comme: 1 = note entière, 2 = blanche, 4 = noire, 8 = croche, -4 = noire pointée, etc. La durée est le nombre total de notes dans le morceau. Le tempo est un diviseur pour la vitesse de la chanson (un nombre plus élevé signifie un tempo plus lent). Vous devrez jouer avec ce nombre jusqu'à ce que vous obteniez un tempo que vous aimez.

/* 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;

Étape 3: Ajustez

Ajoutez plus de chansons ! Suivez le format indiqué dans "songs.h" et utilisez le didacticiel pour obtenir de l'aide: https://www.arduino.cc/en/Tutorial/ToneMelody. Pour chaque nouvelle chanson que vous ajoutez, n'oubliez pas d'ajouter une nouvelle casse à l'instruction switch et d'augmenter le nombre maximum pouvant être généré par votre fonction random(). Bon codage !

Étape 4: Plus de projets

Pour plus de projets, visitez mes pages:

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

Conseillé: