Générateur de sons joyeux anniversaire Arduino (3 / 4 étapes)

Étape 3: Code

Vous trouverez le code ci-dessous, vous pouvez copier et coller dans l’IDE Arduino.

 #include // requires an Atmega168 chip #define outpin 9 // audio out to speaker or amp int ptime; int k, x, dur, freq, t; int i, j;float ps; // variable for pow pitchShift routinefloat noteval;// note values for two octave scale // divide them by powers of two to generate other octaves float A = 14080; float AS = 14917.2; float B = 15804.3; float C = 16744; float CS = 17739.7; float D = 18794.5; float DS = 19912.1; float E = 21096.2; float F = 22350.6; float FS = 23679.6; float G = 25087.7; float GS = 26579.5; float A2 = 28160; float A2S = 29834.5; float B2 = 31608.5; float C2 = 33488.1; float C2S = 35479.4; float D2 = 37589.1; float D2S = 39824.3; float E2 = 42192.3; float F2 = 44701.2; float F2S = 47359.3; float G2 = 50175.4; float G2S = 53159; float A3 = 56320;//octaves - corresponds to piano octaves float oct8 = 4; float oct7 = 8; float oct6 = 16; float oct5 = 32; float oct4 = 64; float oct3 = 128; float oct2 = 256; float oct1 = 512; float oct0 = 1024;//rhythm values int wh = 1024; int h = 512; int dq = 448; int q = 256; int qt = 170; int de = 192; int e = 128; int et = 85; int dsx = 96; int sx = 64; int thx = 32;// major scale just for demo, hack thisfloat happyBirthday[] = { G, 0, G, A2, 0, 0, G, 0, 0, C2, 0, 0, B2, 0, 0, 0, 0, 0, G, 0, G, A2, 0, 0, G, 0, 0, D2, 0, 0, C2, 0, 0, 0, 0, 0, G, 0, G, G2, 0, 0, E2, 0, 0, C2, 0, 0, B2, 0, 0, A2, 0, 0, F2, 0, F2, E2, 0, 0, C2, 0, 0, D2, 0, 0, C2, 0, 0, 0, 0, 0, };void setup() { pinMode(10, OUTPUT); // sets the digital pin as output pinMode(11, OUTPUT); // sets the digital pin as output pinMode(12, OUTPUT); // sets the digital pin as output pinMode(8, INPUT); // sets the digital pin as output } void loop(){ for(i= 0; i<=11; i++){ int value = HIGH; while (digitalRead(8) == LOW) { digitalWrite(10, value); delay(100); value = !value; }; ps = (float)i / 12; // choose new transpose interval every loop for(x= 0; x<=12*6; x++){ noteval = (happyBirthday[x] / oct4) * pow(2,ps); // transpose scale up 12 tones // pow function generates transposition // eliminate " * pow(2,ps) " to cut out transpose routine dur = 100; digitalWrite(10+(x&3), HIGH); digitalWrite(10+((x+1)&3), LOW); digitalWrite(10+((x+2)&3), LOW); if ((int)noteval > 0) { freqout((int)noteval, dur); } else { delay(100); } } } } void freqout(int freq, int t) // freq in hz, t in ms { int hperiod; //calculate 1/2 period in us long cycles, i; pinMode(outpin, OUTPUT); // turn on output pin hperiod = (500000 / freq) - 7; // subtract 7 us to make up for digitalWrite overhead cycles = ((long)freq * (long)t) / 1000; // calculate cycles for (i=0; i<= cycles; i++){ // play note for t ms digitalWrite(outpin, HIGH); delayMicroseconds(hperiod); digitalWrite(outpin, LOW); delayMicroseconds(hperiod - 1); // - 1 to make up for digitaWrite overhead } pinMode(outpin, INPUT); // shut off pin to avoid noise from other operations} 

Articles Liés

Générateur de sons de moteur

Générateur de sons de moteur

dans ce instructable, je vais vous montrer comment faire un générateur de sons à l'aide de 6 composants électroniques discrets. Tout en faisant ce générateur de son, les élèves apprendront les concepts de base sur la vague comme fréquence, durée et c
Bannière joyeux anniversaire Rosetti

Bannière joyeux anniversaire Rosetti

SalutVoulez-vous célébrer la fête d'anniversaire de vos proches, de donner surprise avec bannière anniversaire fait maison.Voici belle bannière anniversaire vous permet d'ajouter des couleurs et fantaisie pour la fête d'anniversaire.Cette guirlande e
Carte de joyeux anniversaire

Carte de joyeux anniversaire

carte de joyeux anniversaire d'abeillefournitures de base.base de la carte, papier 1/2 pouces des bandes de différentes couleurs, feutre, colle, marquant le Conseil1. coller les bandes de papier avec la colle selon l'image2. Tracez le cercle et le co
Générateur de sons exotique

Générateur de sons exotique

Bonjour, si vous êtes curieux de savoir comment le son fonctionne avec circuits et bandes en cuivre, c'est pour vous.J'ai fait un « générateur de sons exotique » à l'aide d'un circuit simple !Nous allons donc commencer.vous aurez besoin...-Christian-
Joyeux anniversaire sur guitare (vidéo)

Joyeux anniversaire sur guitare (vidéo)

Voici moi jouer joyeux anniversaire à la guitare. Anniversaire de mon frère est à venir, donc je dois jouer ce pour lui. J'ai appris tout récemment, mais je ne pense pas que c'est dommage.
Joyeux anniversaire Sis

Joyeux anniversaire Sis

Parfois vous avez juste à chanter ton coeur à pour ta soeur...Édition, filmé, écrit, enregistré et interprété par : Shane Blair(Paroles ci-dessous... Si vous vraiment besoin d'eux)Joyeux anniversaire.. Joyeux anniversaire.. Chère soeur joyeux anniver
Joyeux anniversaire avec Arduino

Joyeux anniversaire avec Arduino

Tout d'abord, Merci à bonniee, pour son grand Illumaphone instructable : Instrument de musique à base de lumière avec Arduino.J'ai juste amélioré pour que ce soit, comme je l'entends.Cette instructable vous montrera comment jouer « Happy Birthday » a
Gâteau d’anniversaire Arduino

Gâteau d’anniversaire Arduino

Dans ce instructable, je vais faire un projet arduino très simple et basique : un gâteau d'anniversaire !Un gâteau d'anniversaire s'affiche sur l'écran d'écran UTFT sur l'arduino et un orateur joue la musique de « Happy birthday ».Lorsque vous souffl
L’amortissement de votre générateur de son

L’amortissement de votre générateur de son

Il s'agit de mon premier Instructable et donc j'apprécierais des commentaires sur les domaines à améliorer. Cela étant dit, permet de passer directement en.Comme un être humain moderne, je trouve que tout ce que j'utilise à la maison sur une base quo
GÉNÉRATEUR de son énergie

GÉNÉRATEUR de son énergie

un générateur d'énergie sonore produit des sons pouvant affecter certaines choses. Son parce que le son est une forme d'énergie et peut rendre les choses bouger ou secouer. Ce son est comme l'air éclate hors du trou de cet engin, cet « avion » se dép
Distributrice de générateurs de sons

Distributrice de générateurs de sons

distributrice produisant des sons (par Evaline, Laurens, Glen & Sven) - CMD2Projet Arduino-poweredVidéo :https://Vimeo.com/52416744(Remarque : nous avons édité les sons sur la vidéo réelle. La raison en est que lors de l'enregistrement et vérifier no
Linkit One comme un cadeau - joyeux anniversaire Tune

Linkit One comme un cadeau - joyeux anniversaire Tune

Si vous planifiez d'un Linkit One de cadeau pour vos amis ou la famille naissance jour, vous pouvez mettre en place ce projet et faire le Linkit tune un jeu le jour de naissance heureuse pour lui. Il s'agit d'un cadeau vraiment cool et j'ai effective
Générateur de lettre aléatoire Arduino

Générateur de lettre aléatoire Arduino

Bienvenue sur mon premier instructable. Cette petite affiche du dispositif, en pressant un bouton, une lettre majuscule générée de manière aléatoire sur une matrice de points LED 5 x 7 à l'aide d'une carte Arduino.J'ai construit pour mes enfants pour
Joyeux anniversaire lettres

Joyeux anniversaire lettres

Vous voulez donner un coup de pouce coloré à votre gâteau d'anniversaire ? Cette instructable est tellement simple, rapide et agréable que vous allez jamais acheter des lettres décoratives à nouveau pour anniversaire gâteaux !Je leur ai fait pour l'a