Arduino - Play le Piezo

jouer le Piezo !
Ce projet vise à générer de la musique par le biais de mouvement grâce à des accéléromètres.

-1 accéléromètre 3 axes
-1 carte arduino
-1 haut-parleur
-1 chanson en mesure de contester le son de merde de l’enceinte

Le code est basique : le rythme de la chanson est mise en œuvre et devant chaque pas de temps, le gant détecte la direction de la gravité et choisit l’un des trois notes de la chanson.

Le code est ci-dessous.

Vous pouvez regarder la vidéo sur Youtube.

Recevez les nouvelles et mises à jour sur ma page. Actuellement, je collecte des fonds contre le Cancer, s’il vous plaît faire un don !

/*
28 décembre 2012 - Sebastien RUBRECHT
Essayez de jouer une musique cool avec un haut-parleur de merde, en espérant que le « cool » compensera la « merde ».
La musique est « where is my mind » de The Pixies, qui est vraiment facile à jouer.
*/

#define AUTO 0 / / automatique mode : si 1, la musique se joue automatiquement.

Broches
const int analogInPinX = 0 ;  Broche d’entrée analogique qui les premières broches de l’accéléromètre est attaché à
const int analogInPinY = 1 ;  Broche d’entrée analogique qui les deuxième goupille de l’accéléromètre est attaché à
const int analogInPinZ = 2 ;  Broche d’entrée analogique qui revêt la troisième broche de l’accéléromètre
const int tone1Pin = 9 ;  signal de sortie de ton

const int highPin1 = 11 ;  5 alimentation V
const int highPin2 = 12 ;  5 alimentation V
const int lowPin1 = 5 ; au sol pour l’un de le 2 accéléromètre GND
const int lowPin2 = 6 ; au sol pour l’un de le 2 accéléromètre GND

const int ledOKPinGnd = 8 ;  motif de Pin OK
const int ledOKPinH = 10 ; 5 alimentation V pour broche OK
const int ledNOKPinGnd = 2 ; motif de Pin NOK
const int ledNOKPinH = 4 ;  5 alimentation V pour broche NOK

valeurs constantes
const float freq_rediese0 = 38.9;//frequency d’une forte Re en Hz, pour octave 0
const float freq_mi0 = 41.2;//frequency d’un Mi en Hz, pour octave 0
const float freq_soldiese0 = 51.9;//frequency d’un Sol pointu en Hz, pour octave 0

paramètres définis par l’utilisateur constante
const int octave = 4; //octave nombre. Attention, sous 2(low) et supérieur à 6 (aigu), il est très laid
const int temps = 380 ; //number de millisecondes pour 1 note de musique. 380 le rythme réel, mais commençant par 600 est plus facile à apprendre

variables
float freq_rediese = freq_rediese0 * pow (2, octave) ; fréquence d’une forte Re en Hz, pour l’octave retenu
float freq_mi = freq_mi0 * pow (2, octave); //frequency d’un Mi en Hz, pour l’octave retenu
float freq_soldiese = freq_soldiese0 * pow (2, octave); //frequency d’un Sol pointu en Hz, pour l’octave retenu

int noire ; //time d’une note noire
int croche ; //temps d’une note croche
fréquence de flotteur ; //frequency joué

int sensorValue1 ;        valeur lue de goupille de première de l’accéléromètre
int sensorValue2 ;        valeur lue de goupille de seconde de l’accéléromètre
int sensorValue3 ;        valeur lue de goupille de seconde de l’accéléromètre

void setup() {}
pinMode (tone1Pin, sortie) ;

pinMode (highPin1, sortie) ;
pinMode (highPin2, sortie) ;
pinMode (lowPin1, sortie) ;
pinMode (lowPin2, sortie) ;

pinMode (ledOKPinGnd, sortie) ;
pinMode (ledOKPinH, sortie) ;
pinMode (ledNOKPinGnd, sortie) ;
pinMode (ledNOKPinH, sortie) ;

digitalWrite (lowPin1, basse) ;
digitalWrite (lowPin2, basse) ;
digitalWrite (highPin1, HIGH) ;
digitalWrite (highPin2, HIGH) ;

digitalWrite (ledOKPinGnd, basse) ;
digitalWrite (ledNOKPinGnd, basse) ;
}

void loop() {}
noire = temps ;
croche = temps/2 ;

« where is my mind » est 4 * (1 mi + 1sol #) ; 2 * (1re # + 1sol #) ; 2 * (1 mi + 1/2 mi + 1 / 2re #).
pour (int j = 0; j < 4; j ++) //4 * (1 mi + 1sol #)
{
fréquence = acqNote(freq_mi) ; Obtient la direction de l’accélération plus élevée du capteur et retourne l’assofrequency. Le bon théorique est un Mi.
Note (fréquence, noire); / / joue la fréquence renvoyée à la ligne précédente pendant 1 heure « noire ».
fréquence = acqNote(freq_soldiese) ;
Note (fréquence, noire) ;
}
pour (int j = 0; j < 2; j ++) //2 * (1re # + 1sol #) ;
{
fréquence = acqNote(freq_rediese) ;
Note (fréquence, noire) ;
fréquence = acqNote(freq_soldiese) ;
Note (fréquence, noire) ;
}
pour (int j = 0; j < 2; j ++) / / 2 * (1 mi + 1/2 mi + 1 / 2re #)
{
fréquence = acqNote(freq_mi) ;
Note (fréquence, noire) ;
fréquence = acqNote(freq_mi) ;
Note (fréquence, croche) ;
fréquence = acqNote(freq_rediese) ;
Note (fréquence, croche) ;
}
}

note Sub (flotteur freq, int durée)
{
La « note » de la fonction joue une note selon une périodicité "freq" (Hz) au cours de la "durée" (ms)

conversion de la fréquence dans une période de semi
double semiperiod_micros =1/(double(freq)) * 1000000 * 0,5 ;

long duree=long(duration) ;
unsigned long un = millis() ;
tandis que (millis() < (duree a +))
{
digitalWrite (tone1Pin, HIGH) ;
delayMicroseconds(int(semiperiod_micros)) ;
digitalWrite (tone1Pin, basse) ;
delayMicroseconds(int(semiperiod_micros)) ;
}
Afin de séparer les notes (ça sonne mieux), un bref retard.
Si (durée > 300)
{delay(15);}
d’autre
{delay(7);}
}

flotteur acqNote(float freq_ref) {}

« acqNote » obtient l’accélération dans les 3 directions de la sonde, sélectionne la plus élevée et retourne la fréquence associée.
Si elle correspond à la fréquence théorique bonne « freq_ref », il bascule sur le vert, sinon le rouge led.

flotteur freq ;

lit les deux valeurs d’entrée analogiques :
sensorValue1 = analogRead(analogInPinX) ;
sensorValue2 = analogRead(analogInPinY) ;
sensorValue3 = analogRead(analogInPinZ) ;

retourne l’index de la max de 3 valeurs
Si ((max(max(sensorValue1,sensorValue2),sensorValue3))==sensorValue1) {}
FREQ = freq_rediese ;
}
else if ((max(max(sensorValue1,sensorValue2),sensorValue3))==sensorValue2) {}
FREQ = freq_mi ;
}
else {}
FREQ = freq_soldiese ;
}

bascule sur le green led si la fréquence trouvée est celle bien théorique, d’autre celui rouge.
Si (freq == freq_ref) {}
digitalWrite(ledOKPinH,HIGH) ;
digitalWrite(ledNOKPinH,LOW) ;
}
else {}
digitalWrite(ledOKPinH,LOW) ;
digitalWrite(ledNOKPinH,HIGH) ;
}
Si {(AUTO)
Return freq_ref ;
}
else {}
retour freq ;
}

};

Articles Liés

Arduino, capteurs et MIDI

Arduino, capteurs et MIDI

Maintenant que vous êtes au courant sur l'utilisation des intrants et des extrants de l'Arduino, ce Instructable vous donnera tout ce dont vous avez besoin pour commencer à utiliser des capteurs pour déclencher des notes MIDI d'Arduino. Ce poste est
Animation sur un Arduino et K.K. Bossa chanson

Animation sur un Arduino et K.K. Bossa chanson

Que fait-elle ?Joue la chanson K.K. Bossa de Animal Crossing et une animation à l'aide d'un Arduino Uno, un piezo et un 16 X 2 LCD.L'animation est basée sur des Animal Crossing New Leaf.Le top vidéo est avec les villageois masculins et bas vidéo avec
Intelligent Arduino Uno & Mega Tic Tac Toe (morpion)

Intelligent Arduino Uno & Mega Tic Tac Toe (morpion)

J'ai décidé de créer le classique jeu de morpion (ou Tic Tac Toe, telle qu'elle est également connu) sur l'Arduino après demande par ma fille si nous pourrions construire un jeu ensemble. Voici une vidéo à son jeu de la version finale sur l'Arduino M
Arduino joue Piano tuiles

Arduino joue Piano tuiles

Vous êtes-vous déjà demandé si votre téléphone peut jouer jeux par lui-même. Oui, c'est possible. Vous pouvez construire un circuit pour jouer Piano tuiles sur votre smartphone.La vidéo montre la démonstration du projet.Étape 1: Composants requis Et
Arduino fois collent héros

Arduino fois collent héros

Vous êtes un maniaque du jeu ? Veulent vers le haut le haut score liste ? Si votre réponse est oui, vous êtes au bon endroit.Tout cela est possible avec vous assis inactif et votre téléphone faisant toute la conversation ? Oui c'est possible et nous
Faible coût capteur de débit d’eau et affichage ambiant

Faible coût capteur de débit d’eau et affichage ambiant

l'eau est une ressource précieuse. Des millions de personnes n'ont pas accès à une eau potable, et que 4 000 enfants meurent de maladies de l'eau contaminée chaque jour. Pourtant, nous continuons d'être inutiles avec nos ressources. L'objectif global
Table miroir infini

Table miroir infini

Ce tutorial va vous apprendre comment faire une Table de miroir infini. Ce tableau s'allume des objets qui sont placés, en vous donnant une magnifique toile de fond pour vos objets, mais aussi la force vous pour nettoyer tout avant de quitter la sall
Démystifiant 4 broches, adressable RGB LEDS

Démystifiant 4 broches, adressable RGB LEDS

Si vous avez vu mon précédent Instructable sur LED RGB, alors vous avez une assez bonne base sur la capacité de mettre trois sources lumineuses distinctes en un seul colis dans vos versions.Temps est en marche, et fait la technologie ! Un des plus in
Enceintes DIY Whoopie Cushion

Enceintes DIY Whoopie Cushion

Tournez votre haut-parleur DIY dans un Arduino alimenté Whoopie cushion avec ceci facile de faire le circuit. En ajoutant un capteur de pression pour déclencher 8 bits des fichiers audio les possibilités pour s'amuser sont infinies. Placer sous les c
Relais à distance Plug-And-Play (framboise et Arduino et lecture des capteurs)

Relais à distance Plug-And-Play (framboise et Arduino et lecture des capteurs)

L'objectif était de créer le contrôle facile à utiliser de bout en bout sur des prises de courant à l'aide de relais, y compris (et peut-être surtout) Web GUI et automatisation.Comme toujours, j'essaie d'utiliser les solutions existantes et s'appuien
Arduino DRV 2667 haptique Piezo Driver Control

Arduino DRV 2667 haptique Piezo Driver Control

Lors d'un projet, que je travaillais pour ma maîtrise à la RCA - Innovation Design Engineering, je cherchais un moyen de contrôler les transducteurs Piezo pour créer avancée rétroaction haptique et effets.J'ai découvert TI ont une grande variété de p
Comment conduire un Piezo avec un Arduino

Comment conduire un Piezo avec un Arduino

Salut à tous ! J'ai lutté avec faisant un buzzer piézo forte de 5volts. J'ai pensé à elle. C'est super simple et aussi fort que votre alarme incendie. Si vous avez lutté avec ce problème... donner vous-même une pause... il n'y a nulle bonne informati
Aider avec mon projet arduino. (2, 7 segment avec buzzer piezo et relais)

Aider avec mon projet arduino. (2, 7 segment avec buzzer piezo et relais)

Salut, j'ai besoin d'aide avec mon projet arduino.J'ai 2, 7 segments affiche qui compte à rebours de 20 à zéro fr puis le piezo buzzer beebs pendant un certain temps.Ma question est :Je veux un relais allumé pendant 20 secondes en même temps avec le
Saisir à l’aide de l’alarme arduino + LDR + piezo buzzer

Saisir à l’aide de l’alarme arduino + LDR + piezo buzzer

Ce petit projet va vous apprendre, comment faire une ponction simple d'alarme à l'aide d'une LDR (légère résistance dépendante). Lorsque vous essayez de déplacer votre main sur le LDR, il y a une alarme stridente qui se passe, et l'alarme s'arrête dè