Audio stéréo avec Arduino (4 / 7 étapes)

Étape 4: Sortie Audio stéréo avec 8 Bit DAC et fréquence d’échantillonnage de 44,1 kHz

Dans ce code, je vous envoie un signal sinusoïdal sur DACA et une vague de scie sur DACB en même temps et à une vitesse de 44,1 kHz. Il s’agit d’audio stéréo, deux canaux audio distincts. Pour que cela fonctionne, j’ai combiné sine éléments et vu code mono à la dernière étape et les tiges de WR et DACA/DACB permettant de basculer entre les deux sorties DAC.

J’ai créé une interruption comme dans la dernière étape, mais cette fois j’ai mis en place à raison de 2 * 44,1 = 88,2 kHz. Puis chaque fois que l’interruption exécutée, j’ai alterné entre envoyer quelque chose à DACA et DACB, donc chacun a reçu un échantillon au cours de toute autre interruption. Ce qui rend la fréquence d’échantillonnage à la fois de la sorties de 44,1 kHz. Le contenu de la routine d’interruption est copié ci-dessous :

digitalWrite (WR, HIGH); //hold sorties-donc de nouvelles données DAC ne pas obtenir envoyées jusqu'à ce que nous sommes prêts
Si {(canal)
PORTD = sine [index]; //send sine à broches numériques 0-7
digitalWrite (outputSelector, LOW); //select DACA
index ++; valeur d’index de //increment par un
Si (indice == 100) {//reset index si elle atteint 100
index = 0 ;
}
}
else {}
PORTD = scie ; //send vu à broches numériques 0-7
digitalWrite (outputSelector, HIGH); //select DACB
scie ++; valeur de scie //increment par un
Si (vu == 255) {//reset vu si elle atteint 256 (sortie continue au sein de 0-255 toujours)
vu = 0 ;
}
}
digitalWrite (WR, LOW); //enable à nouveau de sortie
canal ^ = 1; //toggle canal

Au démarrage les interruptions, les ensembles d’Arduino le WR pin haute, cela temporairement détient les sorties DAC à leurs tensions actuelles et nous permet d’envoyer des données dans le CAD sans changer le courant de la sortie DAC sélectionné. La variable « canal » alterne entre les valeurs de 0 et de 1 chaque fois que l’interruption s’exécute, alternant le sinus et j’ai vu de la sortie. Quand le « canal » = 1, une valeur du tableau « sine » est définie à la DAC via PORTD. La ligne suivante définit l’outputSelector (DACA/DACB broche) bas, ce qui provoque la DACA d’être sélectionné. Puis WR a la valeur LOW, provoquant la nouvelle valeur de sinus de sortie via la DACA. Dans la routine d’interruption prochaine, une série similaire d’événements entraîne une valeur de scie à la sortie de DACB.

 <pre>//stereo audio out, sampling rate <=44.1kHz //by Amanda Ghassaei //Nov 2012 

Comme dans la dernière étape, mon taux d’échantillonnage n’était pas exactement 88,2 kHz, c’était en fait 88,398 kHz (légèrement mieux que 88,2), donc je vais utiliser ce nombre dans les calculs suivants :

durée de chaque échantillon = 2 * 1/fréquence d’échantillonnage
durée de chaque échantillon = 2 * 1/88398 Hz = 22.6us

comme dans la dernière étape, la période des sinus et scie sont les suivantes :

vu période = 22.6us * 256 = 5.8ms
période de sinus = 22.6us * 100 = 2.3ms

mais si vous regardez dans les figures 2 et 3, vous verrez que la durée de l’échantillon et la période des vagues sortie est beaucoup plus longue. C’est parce que le code dans la routine d’interruption est inefficace et prend plu de 22.6us à exécuter. Pour résoudre ce problème, j’ai eu à remplacer la commande de bibliothèque Arduino « digitalWrite » avec des commandes de manipulation directe pin beaucoup plus efficaces dans le code ci-dessous. Vous pouvez en savoir plus sur la façon dont ils travaillent ici, vous pouvez également lire les commentaires j’ai mis dans le code ci-dessous. Figures 4 et 5 montrent les résultats de ce code optimisé, vous pouvez voir que les durées de période et l’échantillon sont ce que nous attendons des calculs.

 <pre>//stereo audio out with 44.1kHz sampling rate //by Amanda Ghassaei //Nov 2012 

Je vais note également ici, que depuis le CS doigt est maintenu bas pendant la durée de ce code (réglage il désactivera haut écrit les nouvelles données à chaque sortie), vous pourriez libérer un Arduino supplementaire en fixation CS au sol en permanence et en supprimant les instances de CS dans le code de l’Arduino.

Articles Liés

Contrôlez votre système Audio, Dvd et Tv avec Arduino et Android

Contrôlez votre système Audio, Dvd et Tv avec Arduino et Android

Salut tout le monde, c'est mon deuxième instructable et mon premier en anglais, oui, Désolé pour les fautes.Je tiens à partager ce projet qu'il s'agit de comment vous pouvez contrôler votre Tv, de DVD et de votre système Audio avec Arduino et un app
Streaming Audio et la reconnaissance vocale avec Arduino sans fil

Streaming Audio et la reconnaissance vocale avec Arduino sans fil

dans ce projet j'ai connecter ma carte Arduino à un WiFly module (https://www.sparkfun.com/products/10822) de Roving Networks et de flux audio pour le PC, alors que BitVoicer (http://www.bitsophia.com/BitVoicer.aspx) peut exécuter la reconnaissance v
Commande d’un moteur DC avec Arduino et Visual Basic

Commande d’un moteur DC avec Arduino et Visual Basic

Bonjour amis c'est mon premier post dans instructables.com où je vais essayer de mettre plus des nouveauté souvent.Aujourd'hui, le thème est avec Arduino et Visual Basic.Le projet que nous voyons aujourd'hui est un moteur à courant continu contrôleur
Motorisé, Sound réagissant à-St Star Wars modèle de Bandai, avec Arduino.

Motorisé, Sound réagissant à-St Star Wars modèle de Bandai, avec Arduino.

Issus de Star Wars à-St modèle Bandai.Réagit aux sons et tourne la tête vers elle.Fait avec Arduino Nano, un composant personnalisé 3dprinted, microphones, micro servo.Cette instructable est faite pour partager les modifications nécessaires pour acqu
Comment utiliser WTV020SD - 16p avec Arduino

Comment utiliser WTV020SD - 16p avec Arduino

WTV020SD-16p est un excellent module pour ajouter de la musique électronique projets. Le module peut être utilisé avec ou sans l'Arduino.Il y a plusieurs choses à considérer lorsque vous travaillez avec ce module. Par exemple, il fonctionne avec la s
* mise à jour * LED-tour « Hello », Vu-mètre avancé de détection musique sans qu’avec Arduino et l’interfaçage d’IC avec le logiciel PC Windows !

* mise à jour * LED-tour « Hello », Vu-mètre avancé de détection musique sans qu’avec Arduino et l’interfaçage d’IC avec le logiciel PC Windows !

LED-tour « Hello », Vu-mètre avancé de détection musique sans qu'avec Arduino d'ICet l'interfaçage avec le logiciel PC Windows ! Salut, tout le monde.Ce qui rend ce projet cool c'est le fait, que sa musique de télédétection, contrairement aux traditi
Jouer des sons sur pc avec arduino et progduino

Jouer des sons sur pc avec arduino et progduino

Aujourd'hui je vais vous montrer comment il est facile de construire un lecteur simple et exécutez-le sur l'ordinateur avec arduino et progduino.En savoir plus sur progduino : http://www.progduino.comÉtape 1: Code Arduino - player sur votre pc.Copiez
2RM voix contrôlée Robot avec Arduino et serveur BitVoicer

2RM voix contrôlée Robot avec Arduino et serveur BitVoicer

Dans ce Instructable je vais montrer comment construire un robot de commande vocale 2RM . Même si je suis contrôle uniquement les moteurs à courant continu pour déplacer le robot, la même approche peut servir à la voix-contrôle de moteurs pas à pas e
Untethered la reconnaissance vocale et la synthèse vocale avec Arduino

Untethered la reconnaissance vocale et la synthèse vocale avec Arduino

MOVI signifie « Ma propre voix Interface » et est un Arduino Shield adossés kickstarter qui le rend très facile de créer vos propres boîtes de dialogue discours aux dispositifs de contrôle au sein de l'IDE Arduino. Cette rapide instructable vous mont
La reconnaissance vocale et la synthèse avec Arduino

La reconnaissance vocale et la synthèse avec Arduino

Dans mon précédent Instructable, j'ai montré comment contrôler quelques LEDs à l'aide d'une carte Arduino et le Serveur BitVoicer. Dans ce Instructable, je vais rendre les choses un peu plus compliqués. Je vais également à synthétiser la parole en ut
Bronze USB cloche horloge saisissante (avec Arduino)

Bronze USB cloche horloge saisissante (avec Arduino)

agacer vos collègues de travail : conduire dans la mendicité vous désactiver votre horloge de PC spécial !Cette petite plate-forme enfait interfaces via le port USB à l'horloge de votre PC et génère des heures et des demi-heures bosses sur une cloche
Le streaming vidéo à partir de carte SD sur Nokia LCD avec Arduino

Le streaming vidéo à partir de carte SD sur Nokia LCD avec Arduino

Pendant longtemps, j'ai pensé que la lecture de vidéo avec l'audio n'a pas été possible sur l'Arduino. Puis un jour j'ai décidé de lui donner un coup de feu et il s'est avéré pour être plus simple que je pensais.J'ai décidé d'écrire les étapes dans u
Éclairage LED avec Arduino vocale

Éclairage LED avec Arduino vocale

Ce projet est une extension pour la reconnaissance de la parole avec Arduino par leandro4b (). Cependant, au lieu d'utiliser 3 LEDs de couleur distinctes, j'ai utilisé un émetteur de LED multicolor 4 canaux RVB + blanc. J'ai eu l'occasion de travaill
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