Paso 10: Consejos adicionales
Si quieres hacer de la comunicación serial: Serial de software es una librería de Arduino que permite convertir cualquiera de los pines de Arduino en pines seriales. Generalmente cuando haces un proyecto de Arduino que requiere una comunicación serial, se evite el uso de pines digitales 0 y 1 porque necesitan estar libres enviar datos en serie. Me gusta utilizarlos para el DAC de 8 bits porque pins 0-7 son parte de PORTD en viruta de Atmel328 de Arduino, esto me permite abordar todos ellos en una sola línea de código. PORTB solo tiene 6 pines (pins digitales 8-13) y PORTC solo tiene 6 pines (pernos analógicos 0-5), por lo que no puede construir un DAC de 8 bits con estos puertos solo.
Si usted necesita usar los pines PWM, o de lo contrario utilice alfileres diferentes como el CAD: Si usted debe usar los pines PWM puede utilizar bit manipulación para liberar los pines 3, 5 y 6 y reemplazarlos con los pernos de 8, 12 y 13. Dices que quieres enviar el número 36 al PORTD. Puede utilizar las siguientes líneas:
definir las variables:
boolean bit3state;
bit5state Boolean;
bit6state Boolean;
en el loop() principales:
bit3state = (36 y B00001000) >> 3; //get el tercer bit de 36
bit5state = (36 y B00100000) >> 5; //get el quinto bit del 36
bit6state = (36 y B01000000) >> 6; //get el sexto bit de 36
enviar datos a portd sin interrumpir los pines 3, 5 y 6
PORTD | = (36 y B10010111); //set pernos altos alta con el número 36 ceros reemplazo de brocas de 3, 5 y 6
PORTD & = (36| B01101000); //set pins baja baja con el número 36 de los reemplazo de brocas de 3, 5 y 6
enviar datos a portb sin interrumpir los pines 9, 10 y 11
PORTB | = 0 | (bit3state) | (bit5state << 4) | (bit6state << 5); //set pernos altos
PORTB & = 255 & ~(1-bit3state) & ~((1-bit5state) << 4) & ~((1-bit6state) << 5); //set pernos bajo
Asegúrese de mantener estas líneas PORTD y PORTB justo al lado del otro en el código, desea que los pines en el puerto d y Puerto b para cambiar en lo más cerca al mismo tiempo como sea posible.
Aquí está el código del paso anterior, editado para que no utiliza las patas PWM. Como veis en la figura 1, la salida no filtrada de la DAC tiene muchas discontinuidades causadas por la diferencia entre enviar datos al puerto d y Puerto b como división los comandos de ajuste de pernos de alta y baja. Usted puede deshacerse de la mayoría de estas discontinuidades con el filtro de paso bajo (Fig. 2). Si desea utilizar esta técnica podría considerar aumentar la frecuencia de corte del filtro paso bajo. Si desea hacer esto muy bien, podría enviar sus 5 bits más significativos al puerto d y sus 3 bits menos significativos al puerto b. Esto podría disminuir la amplitud de algunas de las discontinuidades, reduciendo la magnitud del ruido. Voy a dejar adivinar que uno por su cuenta.
//Sine out, 40kHz sampling rate, w/o using PWM pins //by Amanda Ghassaei
Si te quedas sin pines digitales y necesita más: Recuerde que siempre puede usar sus pines analógicos como E/S digitales. Probar las siguientes funciones, trabajan al igual que se trata de un pin digital regular.
digitalWrite (A0, alto); //set pin A0 alta
digitalWrite (A0, baja); //set pin A0 baja
digitalRead (A0); //read datos digitales del pin A0
De lo contrario, pruebe a utilizar un multiplexor. Si necesitas mas salidas digitales, el 74HC595 le permite hacer tres pines digitales del Arduino de 8 salidas. Usted puede incluso encadenar múltiples 595 de juntos para crear muchas más salidas de pines. Puede configurar su CAD todo en uno de estos chips si desea (aunque tendría unas pocas líneas de código para abordarla y podría demorar demasiado para tasas de muestreo). La Página Web de Arduino es un buen lugar para aprender acerca de cómo utilizar la 595.
Si necesita más entradas digitales, el 74HC165 o CD4021B permiten convertir tres de los pines digitales del Arduino en 8 entradas. Una vez más, la Página Web de Arduino es un buen lugar para empezar a aprender a usar estos chips.
Si desea utilizar la información en este Instructable con otras tablas o la Mega: En este Instructable he hablado exclusivamente sobre la Arduino Uno con Atmel328. El mismo código se ejecuta bien en cualquier placa con un chip Atmel328 o Atmel168 en él. También puede utilizar las mismas ideas con un Mega. Debe tratar de fijar su DAC a cualquier puerto que tiene 8 pines disponibles, de esa manera usted puede abordar su DAC con una línea de código ("PORTD =") en la ONU, el único puerto que tiene 8 pines disponibles es puerto d.
cuadro indica que el Mega tiene varios puertos con 8 pernos: los puertos a, b, c, y l son las opciones obvias. Si no importa perder pines analógicos también puede usar puertos f o k.