Étape 10 : Conseils supplémentaires
Si vous voulez faire de communication série : Logiciel Serial est une bibliothèque d’Arduino qui permet de transformer les broches de l’Arduino en broches de la série. Habituellement quand vous faites un projet Arduino nécessitant une communication sérielle, vous évitez d’utiliser des broches numériques 0 et 1 parce qu’ils doivent être libres d’envoyer des données en série. J’aime s’en servir pour le 8 bit DAC parce que les broches 0-7 font tous partie du PORTD sur puce Atmel328 de l’Arduino, cela me permet d’aborder tous dans une seule ligne de code. PORTB n’a que 6 broches (broches numériques 8-13) et PORTC a seulement 6 broches (broches analogiques 0-5), donc vous ne pouvez pas construire un 8 bit DAC avec ces ports seuls.
Si vous devez utiliser les broches PWM, ou autrement utiliser différentes broches comme le CAD : Si vous devez utiliser les broches PWM, vous pouvez utiliser manipulation de bits pour libérer broches 3, 5 et 6 et remplacez-les par des broches, 8, 12 et 13. Que vous voulez envoyer le numéro 36 de PORTD. Vous pouvez utiliser les lignes suivantes :
définir des variables :
boolean bit3state ;
Boolean bit5state ;
Boolean bit6state ;
dans votre principal loop() :
bit3state = (36 & B00001000) >> 3; //get le troisième bit de 36
bit5state = (36 & B00100000) >> 5; //get le cinquième bit de 36
bit6state = (36 & B01000000) >> 6; //get le sixième peu de 36
Envoyer des données vers portd sans perturber les broches 3, 5 et 6
PORTD | = (36 & B10010111); //set broches haute haute en utilisant le numéro 36 de zéros remplace les bits 3, 5 et 6
PORTD & = (36| B01101000); //set broches faible faible en utilisant le numéro 36 par d’autres morceaux 3, 5 et 6 de remplacement
Envoyer des données au port sans perturber les broches 9, 10 et 11
PORTB | = 0 | (bit3state) | (bit5state << 4) | (bit6state << 5); //set broches haute
PORTB & = 255 & ~(1-bit3state) & ~((1-bit5state) << 4) & ~((1-bit6state) << 5); //set broches faible
n’oubliez pas de garder ces lignes PORTD et PORTB juste à côté de l’autre dans votre code, vous voulez les broches sur le port d et port b pour passer au plus près le même temps que possible.
Voici le code de l’étape précédente, édité afin qu’il n’utilise pas des broches PWM. Comme vous le voir dans la figure 1, la sortie non filtrée de la DAC a plusieurs discontinuités provoquées par le décalage entre l’envoi de données au port d et port b, mais aussi de scinder les commandes pour le réglage des broches haute et basse. Vous pouvez vous débarrasser de la plupart de ces discontinuités avec le filtre passe-bas (Fig. 2). Si vous souhaitez utiliser cette technique vous pouvez envisager d’augmenter la fréquence de coupure du filtre passe-bas. Si vous vouliez faire cela vraiment bon, vous pouvez envoyer vos 5 bits les plus significatifs au port d et vos 3 bits les moins significatifs sur le port b. Cela diminuerait l’amplitude de certaines des discontinuités, réduire l’amplitude du bruit. Je vous laisse comprendre qu’un seul.
//Sine out, 40kHz sampling rate, w/o using PWM pins //by Amanda Ghassaei
Si vous exécutez hors broches numériques et ont besoin de plus : N’oubliez pas que vous pouvez toujours utiliser vos broches analogiques comme les e/s numériques. Essayez les fonctions suivantes, ils travaillent tout comme vous faites affaire avec une broche numérique ordinaire.
digitalWrite (A0, HIGH); //set broches A0 haute
digitalWrite (A0, faible); //set broches A0 faible
digitalRead (A0); //read de données numériques de broches A0
Dans le cas contraire, essayez d’utiliser un multiplexeur. Si vous avez besoin de plus de sorties numériques, 74HC595 vous permet de transformer trois broches numériques de l’Arduino en 8 sorties. Vous pouvez même guirlande 595 multiples d’ensemble pour créer des broches de sorties plus nombreuses. Vous pouvez configurer votre DAC ensemble sur l’un de ces jetons si vous vouliez (bien qu’il prendrait quelques lignes de code pour y remédier et pourrait vous ralentir trop pour des taux d’échantillonnage plus élevés). Le site de l’Arduino est un bon endroit pour commencer à apprendre sur la façon d’utiliser le 595.
Si vous avez besoin de plus d’entrées numériques, le 74HC165 ou CD4021B vous permettent de transformer trois broches numériques de l’Arduino en 8 entrées. Encore une fois, le site de l’Arduino est un bon endroit pour commencer à apprendre comment utiliser ces puces.
Si vous souhaitez utiliser l’info dans ce Instructable avec le méga ou autres conseils : Dans ce Instructable j’ai parlé exclusivement l’Arduino Uno avec Atmel328. Le même code fonctionnera très bien sur n’importe quel planche avec une puce Atmel328 ou Atmel168 à ce sujet. Vous pouvez également utiliser les mêmes idées avec un méga. Vous devriez essayer d’attacher votre DAC à n’importe quel port qui possède 8 broches disponibles, de cette façon, vous pouvez adresser votre DAC avec une ligne de code (« PORTD = ") sur le Uno, le seul port qui possède 8 broches disponibles est port d.
image indique que le méga possède plusieurs ports dotée de 8 broches : ports a, b, c, et l sont les choix évidents. Si vous ne se souciez gaspiller des broches analogiques vous pouvez également utiliser les ports f ou k.