Table des matières:
- Étape 1: configuration du matériel
- Étape 2: Configuration du logiciel
- Étape 3: Ajustez
- Étape 4: Plus de projets
Vidéo: Sonnette Arduino : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
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
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é:
Comment faire une sonnette non tactile, détection de la température corporelle, GY-906, 433 MHz à l'aide d'Arduino : 3 étapes
Comment faire une sonnette non tactile, détection de la température corporelle, GY-906, 433 MHz à l'aide d'Arduino : Aujourd'hui, nous allons fabriquer une sonnette non tactile, elle détectera la température de votre corps. Dans la situation actuelle, il est très important de savoir si la température corporelle de quelqu'un est supérieure à la normale, lorsque quelqu'un frappe. Ce projet affichera une lumière rouge s'il en détecte
Sonnette Arduino Coronavirus : 6 étapes
Sonnette Arduino Coronavirus : En raison de l'épidémie mondiale de coronavirus, je souhaite créer une sonnette pour laquelle vous n'avez pas besoin d'appuyer sur des signaux pour indiquer aux personnes à l'intérieur que vous êtes ici et qu'elles doivent ouvrir la porte. Cette chose peut vous faire attraper le virus en touchant la sonnette d'autres personnes
Sonnette Arduino : 5 étapes
Sonnette Arduino : FOURNITURES-2 planches à pain-buzzer-cavalier fils-2 arduino/genuino avec câbles d'alimentation-émetteur rf et récepteur-bouton-poussoir-résistance de 100 ohms
Transformez votre sonnette filaire en sonnette intelligente avec IFTTT : 8 étapes
Transformez votre sonnette filaire en une sonnette intelligente avec IFTTT : la sonnette WiFi transforme votre sonnette filaire existante en une sonnette intelligente. https://www.fireflyelectronix.com/product/wifidoor
Transformez votre sonnette filaire en sonnette intelligente avec Home Assistant : 6 étapes
Transformez votre sonnette filaire en sonnette intelligente avec Home Assistant : transformez votre sonnette filaire existante en sonnette intelligente. Recevez une notification sur votre téléphone ou associez-la à votre caméra de porte d'entrée existante pour recevoir une alerte photo ou vidéo chaque fois que quelqu'un sonne à votre porte. En savoir plus sur : fireflyelectronix.com/pro