Sortie Arduino Audio (2 / 10 étapes)

Étape 2: Configurer DAC et Test

j’ai construit mon DAC sur une maquette (voir fig. 1-3).  Le schéma est donné en figure 8.  Voici quelques morceaux d’exemples de code qui génèrent les formes d’onde montrés les figures 4-7.  Dans les pièces suivantes du code j’ai envoyer une valeur comprise entre 0 et 255 à « PORTD » quand je veux envoyer des données à la DAC, il ressemble à ceci :

PORTD = 125 ; //send données à CAD

Il s’agit d’aborder le port directement.  Sur l’Arduino, broches numériques 0-7 sont tous sur le port d de la puce Atmel328.  Le permet de commande PORTD nous raconte broches 0-7 aller haute ou basse en une seule ligne (au lieu de devoir utiliser digitalWrite() huit fois).  Non seulement c’est plus facile de coder, il est beaucoup plus rapide pour l’Arduino traiter et il provoque les broches à tout changement en même temps au lieu d’un (vous ne pouvez plus parler d’une broche à la fois avec digitalWrite()).  Depuis le port d comporte huit broches là-dessus (broches numériques 0-7) nous pouvons envoyer un des 2 ^ 8 = 256 valeurs possibles (0-255) pour contrôler les broches.  Par exemple, si nous avons écrit la ligne suivante :

PORTD = 0 ;

Il fixerait broches 0-7 faible.  Avec le DAC, mis en place sur les broches 0-7 cette sortie 0V.  Si nous avons envoyé ce qui suit :

PORTD = 255 ;

Il fixerait broches 0-7 haut.  Cela entraînera la DAC à sortie 5V.  Nous pouvons aussi envoyer des combinaisons de haute et basse États en sortie une tension comprise entre 0 et 5V de la DAC.   Par exemple :

PORTD = 125 ;
125 = 01111101 en binaire.  Ceci définit la broche 7 faible (l' octet le plus significatif est 0), pins élevé (les cinq bits sont 1) 6-2, broche 1 faible (le prochain bit est 0) et pin 0 élevé (le lsb est 1).  Vous pouvez en savoir plus sur comment cela fonctionne ici.  Pour calculer la tension que cela sortira de la DAC, nous utilisons l’équation suivante :

tension de sortie du DAC = [(valeur envoyée à PORTD) / 255] * 5V
donc pour PORTD = 125 :
tension de sortie du DAC = (125 / 255) * 5V = 2,45

Le code ci-dessous envoie plusieurs tensions comprises entre 0 et 5V et détient chacun pendant une courte période démontrer les concepts que j’ai décrit ci-dessus.  Dans la fonction loop() principal, j’ai écrit :

PORTD = 0; //send (0/255) * 5 = 0V sur DAC
retard (1); //wait 1ms
PORTD = 127 ; //send (127/255) * 5 = 2, 5V sur DAC
retard (2); //wait 2ms
PORTD = 51 ; //send (51/255) * 5 = 1V à CAD
retard (1); //wait 1ms
PORTD = 255 ; //send (255/255) * 5 = 5V dehors DAC
retard (3); //wait 3ms

La sortie est affichée sur un oscilloscope sur la Fig. 4.  La ligne horizontale centrale à travers l’oscilloscope représente 0V et chaque ligne horizontale représente une augmentation/diminution de tension de 2V.  Les notes de l’image sur la fig 4 affichent la sortie de chacune des lignes de code ci-dessus, cliquez sur l’image pour visualiser l’image.

 //Analog out //by Amanda Ghassaei 

Le code ci-dessous génère une rampe de 0 à 5V.  Dans la fonction loop(), la variable « a » est incrémenté de 0 à 255.  Chaque fois qu’elle est incrémentée, la valeur de « a » est envoyée au PORTD.  Cette valeur est maintenue pour 50us avant l’envoi d’une nouvelle valeur de « a ».  Une fois que « a » atteint 255, il obtient réinitialisé à 0.  Le temps pour chaque cycle de cette rampe (également appelée la période) prend :

période = (durée de chaque étape) * (nombre d’étapes)
période = 50us * 256 = 12800us = 0.0128s

Si la fréquence est :
fréquence de la rampe = 1/0.0128s = 78 Hz

La sortie de la DAC sur un oscilloscope peut être vu dans la figure 5.

 //Ramp out //by Amanda Ghassaei 

Le code ci-dessous génère une onde sinusoïdale, centrée autour de 2, 5V, oscillant jusqu'à un maximum de 5 v et un min de 0V.  Dans la fonction loop(), la variable « t » est incrémentée de 0 à 100.  Chaque fois qu’elle est incrémentée, l’expression :
127+127*Sin(2*3.14*t/100)
est envoyé à PORTD.  Cette valeur est maintenue pour 50us avant « t » est incrémentée à nouveau et une nouvelle valeur est envoyée à PORTD.  Une fois que le « t » atteint 100, il obtient réinitialisé à 0.  La période de cette onde sinusoïdale devrait être :

période = (durée de chaque étape) * (nombre d’étapes)
période = 50us * 100 = 5000us = 0.005s

Si la fréquence doit être :
fréquence de la rampe = 1/0.005s = 200 Hz

 //Sine out //by Amanda Ghassaei 

Mais ce n’est pas le cas, la sortie de la DAC est indiquée sur la Fig. 6.  Comme il est indiqué dans les notes de l’image, il n’a pas une fréquence de 200hz, sa fréquence est plus à 45hz.  C’est parce que la ligne :

PORTD = 127+127*sin(2*3.14*t/100) ;
prend beaucoup de temps à calculer.  Multiplication/division de nombres décimaux et la fonction sin() tient en général l’Arduino beaucoup de temps à effectuer.

Une solution consiste à calculer les valeurs de sinus avance et de les stocker dans la mémoire de l’Arduino.  Puis lorsque le sketch Arduino tourne tout l’Arduino vous devez faire est de rappel ces valeurs de la mémoire (une tâche très facile et rapide pour l’Arduino).  J’ai couru un simple script Python (ci-dessous) pour générer des 100 valeurs de 127+127*sin(2*3.14*t/100) :

importer des mathématiques
pour x dans l’intervalle (0, 100) :
impression str(int(127+127*math.sin(2*math.pi*x*0.01)),)+str(","),

J’ai stocké ces valeurs dans un tableau appelé "sine" dans le sketch Arduino ci-dessous.  Alors dans ma boucle, pour chaque valeur de « t » j’ai envoyé un élément des sinus [] à PORTD :

PORTD = sine [t] ;

La sortie de ce DAC pour ce sketch est indiquée sur la Fig. 7.  Vous pouvez voir qu’elle génère une onde sinusoïdale de 200Hz, comme prévu.

 //Sine out with stored array //by Amanda Ghassaei 

Articles Liés

Impulsions de sortie Arduino de mobile Android. Aucune programmation requise

Impulsions de sortie Arduino de mobile Android. Aucune programmation requise

IntroductionCe Instructable vous montre comment utiliser l'application gratuite, pfodDesigner, de concevoir un menu sur votre mobile Android qui flashe une sortie sur votre carte Arduino sans que vous ayez à écrire du code à tous. Le pfodDesigner gén
Shield Arduino Audio

Shield Arduino Audio

Dans cette vidéo nous montre les étapes simples pour le montage de votre dossier d'audio shield Arduino. Pour acheter un de ces cas, juste de retour mon projet kickstarter : Arduino Audio bouclierÉtape 1: Comment faire monter votre affaire de Shield
Entrée Arduino Audio

Entrée Arduino Audio

Envoyer son dans votre Arduino. Cet Instructable va vous montrer comment préparer audio afin qu'il peut être échantillonnée et traitée par un Arduino pour faire des projets de nature réactive sons et effets audio. (Cet article est un compagnon de Ins
Arduino Audio interrupteur déclenché

Arduino Audio interrupteur déclenché

Ever wanted votre divertissement à la maison ou le système de son pour mettre lui-même lors du branchement de votre iPod ou autre lecteur MP3 portable ?Regardez cette vidéo pour voir comment il fonctionne. Puis de parcourir les étapes pour savoir com
Facile Arduino Audio Annoyatron

Facile Arduino Audio Annoyatron

ce simple dispositif simple joue une petite mélodie à un intervalle aléatoire, entre 5 et 30 secondes, quand les lumières dans une pièce s'éteignent. Il peut être habilement dissimulé à l'intérieur d'une boîte de tissus, ou à l'intérieur ou sous n'im
Testeur de sortie Arduino à l’aide de LED #Xolcano

Testeur de sortie Arduino à l’aide de LED #Xolcano

il s'agit d'un simple et très utile projet chaque fois que vous travaillez sur un prototype, vous pouvez l'utiliser pour gagner du temps.. ! alors commencer le LannÉtape 1: Composants nécessaires 1) LED 3 mm-#72) 1 k résistance - #73) planche perforé
Boîte de sortie Arduino Home Automation

Boîte de sortie Arduino Home Automation

SON FAIT ! DÉCOUVREZ LA VIDÉO DANS LA DERNIÈRE ÉTAPE !Donc dans mon appartement, nous sommes censés pour avoir une prise commutée de sorte que vous pouvez allumer une lumière dès que vous entrez dans l'appartement. Je n'ai pu trouver ladite prise. Al
Log sortie Arduino pour jours avec un BeagleBone

Log sortie Arduino pour jours avec un BeagleBone

Voici un hack rapide pour le débogage des projets Internet of ThingsNous allons dire vous avez construit un gentil, connecté à Internet Arduino projet avec une interface Web fantaisie desservie par, par exemple l'Ethernet shield. Après un ou deux jou
Arduino Audio DSP bouclier

Arduino Audio DSP bouclier

Le bouclier de DSP Audio Arduino a modulation en anneau, echo, reverb, oscope, oscillateur, générateur de signaux arbitraires, etc.. C'est un système logiciel et matériel, un preneur de son, dans une boîte !Etape 1: Obtenir un bouclier audio arduinoL
Audio stéréo avec Arduino

Audio stéréo avec Arduino

Récemment j'ai été annonce beaucoup de projets qui utilisent un 8 bits échelle de résistanceconvertisseur numérique analogique (DAC) et un Arduino à faire sonner. (voir la boîte d'effets vocaux Arduino, l'échantillonneur de tambour Arduino et mon tut
Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Générateur de code pour des menus personnalisés Android/Arduino activer et désactiver les sorties de l’Arduino. Andriod/Arduino pour les débutants. Absolument aucune programmation requise

Mise à jour : un utilisateur invité pour sous-menu soutien. pfodApp a toujours soutenu des sous-menus, mais j'ai ajouté des sous-menus à pfodDesigner. L'instructable Design A Custom Menu System vous montre comment utiliser pfodDesigner pour générer u
Transmission de données de Android Arduino sur prise jack audio

Transmission de données de Android Arduino sur prise jack audio

Avec ce projet, vous pouvez envoyer octets d'android Arduino en utilisant uniquement un connecteur jack audio.Comment ça marche ?Fondamentalement, android envoie un signal audio « morse » arduino. Arduino en revanche décoder le code morse en un octet
Comment changer un Arduino sous et hors tension de sortie de votre mobile Android.  Arduino pour les débutants

Comment changer un Arduino sous et hors tension de sortie de votre mobile Android. Arduino pour les débutants

Mise à jour : Voir Andriod/Arduino pour débutants - Design Custom Andriod menus pour activer et désactiver les sorties de l'Arduino. Absolument aucun programmation requis pour une alternative qui ne nécessite aucune programmation à tous.Comment les d
Guide du débutant pour Arduino

Guide du débutant pour Arduino

Après quelques années d'expérimentations avec Arduino, j'ai décidé que le moment est venu de partager les connaissances que j'ai acquis. Donc j'ai ici, il va, un guide pour Arduino, avec les bases nues pour les débutants et quelques explications plus