Arduino binaire réveil (12 / 16 étapes)

Étape 12 : Signal d’alarme

Il est assez facile de générer le son sur l’arduino en utilisant juste digitalWrite() et delay() pour activer/désactiver l’état de la broche du haut-parleur dans la bonne fréquence. Mais pour ce projet, j’ai besoin de constamment vérifier les boutons, mettre à jour l’horloge et mettre à jour l’affichage, même lorsque le signal d’alarme se joue. C’est pourquoi la génération sonore doit être non-bloquant, ce qui signifie que vous n’avez pas à attendre pour les tons à la fin avant que vous pouvez faire autre chose.

C’est pourquoi j’ai utilisé la bibliothèque de ton écrit par Brett Hagman générer son. C’est une bibliothèque très agréable qui le rend facile à jouer des tonalités différentes, et le meilleur de tous, il est non-bloquante.

Parce que la la mélodie devrait être non bloquant je ne pouvais pas juste utiliser une boucle pour parcourir les tons. Au lieu de cela j’ai utilisé des instructions if. chaque fois que la fonction de mélodie est appelé vérifie si le ton dernier a cessé de jouer, si elle a il recommencera à celle qui suit. La « mélodie », j’ai utilisé est juste, C, D, E, F, G, A, B, C d’abord joué un après l’autre, puis tous les autres, puis chaque troisième et ainsi de suite.
_______________________________________________________________________

La fonction play_melody() :

FONCTION DE VARIABLES « INTERNE » POUR PLAY_MELODY :
la mélodie d’int [] = {NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5} ;
int melody_length = sizeof(melody) / 2 ; Longueur de la mélodie, pour une boucle.
sizeof() renvoie la taille du tableau en octets et parce que
int est de 2 octets, sizeof retourne 2 * (nombre d’éléments du tableau)

int i = 0 ;        variable de boucle
Boolean reset_loop = true ;
int saut = 1 ;     Combien de notes de sauter dans le tableau de la mélodie
int position = 0 ; position dans le tableau de mélodie

Sub play_melody()
{
Si (! () tone_maker.isPlaying())) / / si le ton dernier n’a cessé
{
if(i {
tone_maker.Stop() ;
tone_maker.Play (mélodie [position], 300) ;
Une pause entre les notes...
Delay(300) ; remplacer par non bloquant.
si (déboguer)
{/ / Si le débogage, rapport boucle, ton, rythme et la durée
Serial.Print(position) ;
Serial.Print(":") ;
Serial.Print(Melody[position]) ;
Serial.Print("\n") ;
}
position += saut ;
Si la position est plus grande que le tableau, démarrer à partir début du tableau :
Position = position % melody_length ;
i ++ ;
}
d’autre
{
saut ++ ;
i = 0 ;
}
}
}
_______________________________________________________________________

Articles Liés

Rise and Shine ! -Arduino LDR réveil

Rise and Shine ! -Arduino LDR réveil

Cette instructable a été créée dans l'accomplissement de l'exigence de projet de la MakeCourse à l'Université de Floride du Sud (www.makecourse.com).Principe de fonctionnementCe réveil est conçu pour vous laisser lever avec le soleil. Lorsque la lumi
Arduino binaire 7 Segment affichage horloge & calendrier

Arduino binaire 7 Segment affichage horloge & calendrier

Contrairement à la plupart des autres horloges binaires cette horloge affiche la date et binaire sur 3 rangées de 8 sept segments affiche un et zéro plutôt que de quelques rangées de LEDs.Tous les détails sur ce mon site web ici.Un microprocesseur de
NESBot : Arduino alimenté Robot battre Super Mario Bros de la NES

NESBot : Arduino alimenté Robot battre Super Mario Bros de la NES

ce guide vous emmènera à travers les étapes pour construire un NDA jeu robot.Vous aurez besoin :Un Arduino Duemilanove (autres conseils fonctionnera probablement, mais vous devrez ajuster les étapes de votre appareil)Travail de Console NESSuper Mario
Radio-réveil avec Tetris pour prouver vous êtes éveillé

Radio-réveil avec Tetris pour prouver vous êtes éveillé

il s'agit d'un Arduino alimenté réveil qui, après avoir frappé, répéter deux fois l'alarme ne s'annulent pas jusqu'à ce que l'utilisateur a supprimé 4 lignes dans le jeu Tetris. Vous transformer physiquement l'horloge sur le côté, afin que l'écran so
Arduino congélateur alarme

Arduino congélateur alarme

J'ai commencé ce projet pour remédier à un défaut de conception dans notre congélateur. Son commutateur d'alarme de porte se trouve à proximité des charnières et exige que la porte s'ouvrir grand avant que l'alarme se déclenche. Notre porte de congél
Contrôler n’importe quel appareil électrique ou lumineux avec vous tablette ou smartphone (wifi)

Contrôler n’importe quel appareil électrique ou lumineux avec vous tablette ou smartphone (wifi)

Contrôler n'importe quel appareil électrique ou lumineux avec vous tablette ou smartphone (wifi) à l'aide d'arduino, Billy et un wemos / ESP8266 ConseilDans ce tutoriel nous allons faire quelque chose j'ai appeler un wifi contrôlée ac switch. (Mais i
Capteur infrarouge pour appareil photo reflex numérique

Capteur infrarouge pour appareil photo reflex numérique

Longue histoire courte : il était nécessaire de prendre des photos en plein air chaque fois quand un animal s'approchait un reflex numérique, donc j'ai construit une boîte avec un capteur PIR et un petit Arduino Pro Mini pour contrôler la caméra.Les
Arbre de Noël, lumières contrôlée par téléphone ? Un simple Internet of Things hack.

Arbre de Noël, lumières contrôlée par téléphone ? Un simple Internet of Things hack.

Mon fils voulait être en mesure de tourner l'arbre de Noël avec son téléphone sous et hors tension. Nous avons creusé autour dans le laboratoire de montagne secrète (AKA le sous-sol) et est venu avec le projet suivant, qui utilise un Arduino pour rév
Gazouillis Laser Tripwire avec Webcam Capture

Gazouillis Laser Tripwire avec Webcam Capture

Cette instructable va vous montrer comment construire un tripwire laser peut twitter et saisir une image à partir d'une webcam, aussi bien qu'exécuter toute commande que vous pouvez mettre dans un script bash.Cette instructable est en fait assez simp
Le Robot 4Omni CHAMPION de Soccer roue !

Le Robot 4Omni CHAMPION de Soccer roue !

Ses un Bluetooth contrôlée 4 Wheel drive omni roue robot basé sur Arduino Mega 2560 (vous pouvez utiliser n'importe quel arduino UNO ou régulière ou tout autre, vous voulez), ce n'est pas un robot ordinaire c'est un Robot de Soccer et il a participé
Lampe de 12V Neopixel RV

Lampe de 12V Neopixel RV

... ou, fabricants de combien faut-il pour changer une ampoule ?Une 12V lumière LED dans notre camping-car grillée sans raison évidente. Je suis seulement à apprendre comment utiliser mon nouveau bureau machine CNC et voulait essayer de fraisage des
Ada Robotic Hand - Open Bionics

Ada Robotic Hand - Open Bionics

Il s'agit d'un guide étape par étape sur comment faire une main robotique Open bionique Ada. Il est dérivé de la main robotique Dextrus, par le Projet de main ouverte. Il suppose que vous avez soit ordonné l' Ada robotique main kit ou avez accès à un
RomoBOT - Robot animatronique Face

RomoBOT - Robot animatronique Face

Il s'agit de mon premier instructable, alors soyez gentil. Le RomoBOT est un projet de la mine dans la dernière année de mes études de génie mécanique. C'était une étude indépendante et axé sur la robotique. Le projet a changé plusieurs fois et le pl
Comment faire un chauffage et une veste de refroidissement

Comment faire un chauffage et une veste de refroidissement

projet étudiants CU Boulder GEEN 1400 projets d'ingénierie :Diana George, Jenna Sobieray, Alex Cossoff et Chris Francklyn Vous avez toujours rêvé d'avoir une veste qui a gardé l'équilibre?Eh bien, aujourd'hui est votre jour de chance ! Maintenant pré