Étape 3: Code pour 1 schématique
Programmation
Le code pour ce nouveau schéma dans son intégralité se trouve ici sur mon profil pastebin.com. Pour des raisons de ce tutoriel, nous allons couvrir la plupart des concepts-clés de la syntaxe que j’ai utilisé. Tout d’abord l’Arduino utilise un langage de programmation qui est orientée vers l’objet ; C++. Cette langue est assez puissante et alimente beaucoup de logique de site web modernes, micro-contrôleurs et bien plus encore !
Clavier
Tout d’abord, nous créons deux dimension tableau d’entiers que nous utilisons pour contenir les fréquences tel que spécifié par les chiffres de la page de Wikipedia Blue Box. Nous avons aussi mis une durée comme un tableau d’entiers non signés de typedef. Ces entiers sont lecture des périodes de durée.
Ensuite, nous créons une matrice en tableau de clés en tant que caractères. Ces caractères seront utilisés chaque fois que vous appuyez sur une touche du clavier. Nous avons mis aussi les lignes et les broches des tableaux d’entiers.
Ensuite, nous créons un objet clavier et un simple tableau de ton objets. Puisque nous jouons tons sur deux tiges en même temps, c’est tout simplifie nos vies plus simple lors de l’écriture et débogage du code.
Lire des boutons et jouer des tonalités
Dans la fonction setup() , nous devons définir les broches freq [0] et freq [1] pour la sortie. C’est simple. Aussi, nous avons mis le "mode pin» pour le bouton de 2600 et définir un écouteur d’événements, qui est un appel de fonction personnalisée procButton() traitement de bouton. Il s’agit de programmation événementielle. Cela signifie essentiellement que nous "écouter" pour les touches à presser, qui serait un "événement". La fonction principale loop() est ce qui gère les événements et les auditeurs pour nous.
Nous avons gardé notre méthode principale loop() simple, qui est bien car il est constamment appelé. La première ligne,
Fondamentalement, appelle la méthode getKey() de l’objet de clavier pour voir si et de quelle touche a été enfoncée. Le code,
tout simplement Ecoutes pour la tension sur la broche 10 et s’il le trouve, fois le 2600 hz fréquence en appelant la fonction super() signalisation surveillance personnalisée. Il s’agit de la toute première fonction définie juste en dessous de la fonction loop() . C’est également la première fonction à appeler la fréquence unique personnalisée, jouant la fonction sf() ,
Les arguments que nous passons à cette fonction sont la fréquence à jouer et la durée. Après lexicalement, affecte la fréquence et la durée à variables entières du même nom, la fonction personnalisée sf() n’appelle une méthode de lecture seule sur une seule broche
Il s’agit de notre premier aperçu de la méthode de lecture de la synthèse de ton de la bibliothèque de ton. Donc, si vous pouvez imaginer jouer deux tonalités, multifréquence bitonale devrait ressembler, mais avec deux broches, aussi,
Et c’est exactement ce que la fonction de mf() jeu personnalisé multifréquences.
Alors, comment traitons-nous chaque pression de touche dans la fonction procButton() ? À l’aide d’une logique d’affaire-interrupteur. Les constantes "libéré," "PRESSED," et "HOLD" (pas "HELD" pour une raison étrange), font partie de la bibliothèque de clavier et nous pouvons utiliser le dans un bloc de cas-commutateur logique comme,
Et c’est exactement ce que nous faisons. Étant donné que la fonction procButton() est un gestionnaire d’événements appelé par la fonction loop() , nous obtenons un objet de keypadevent passé à son gestionnaire procButton(). Cet objet peut être considéré comme un simple caractère - et nous faisons cela par simple soustraction l’entier 48 d’elle pour obtenir quelle touche a été enfoncée entre 0 et 9.
Maintenant, nous savons quelle touche a été enfoncée et passez-la à la fonction mf() qui utilise le tableau multidimensionnel bb [] que nous avons créé précédemment pour jouer les tonalités mf. Vous avez peut-être remarqué que le KP (*) et ST (#) ne sont pas 0-9. Cela est correct, comme ils viennent à travers et après la soustraction sont respectivement de -13 et -6. La fonction de mf() puis gère ces derniers comme,
Alors joue les tons qu’ils sont affectés dans le tableau multidimensionnel [bb] .
Nous ont maintenant couvert tous les concepts clés par programme avec ce schéma (1), passons le second schéma et comment nous pouvons jouer des fichiers WAV qui offrent un son complètement différent à nos boîtes bleues.
Fonctionnalités supplémentaires
Copiez le code suivant fournit une quantité massive de fonctionnalités supplémentaires, y compris l’enregistrement des chiffres en et tableau pour la lecture et les modes de fonctionnement différents. Le code est très franche Arduino C++. Appuyez longuement sur "A" pour faire défiler les différents modes. Chaque fois que nous changer de mode, que la fonction notifyMode() flashe sur un code de 440 hz bips pour nous faire savoir quel mode nous utilisons actuellement. Tous les modes sont décrits intégralement sur mon blog ici ou sur la page de Wikipedia pour les spécifications de la boîte bleue.