Otra cosa que debes considerar es si realmente necesitas un cambio de nivel. Muchos chips tienen pines de entrada tolerantes a 5 V, incluso cuando se ejecutan a un voltaje menor, como 3.3. La CPU atmega también interpreta cualquier cosa por encima de 0.6 * Vcc o 3V para un arduino como una lógica alta, por lo que una señal de 3.3V puede conducir directamente un pin arduino sin cambio de nivel.
Suponiendo que está usando un arduino de 5V y necesita hablar con una parte de 3.3V, si la parte tiene entradas tolerantes de 5V (muchos lo hacen hoy en día), simplemente conéctelos y funcionará. Si su línea bidireccional es un diseño de colector abierto, como i2c, donde los dispositivos solo bajan la línea, simplemente conecte las resistencias de extracción a 3.3V en lugar de 5V y las cosas simplemente funcionarán.
De lo contrario, todo lo que debe hacer es asegurarse de que la línea no supere los 3,3 V, puede hacerlo con una resistencia y un zener, colocar una resistencia en la línea arduino y luego un zener para fijar la tensión a 3,3V. abrazadera de resistencia Zener http://repetae.net/zenerresistor.png
Puede sentirse tentado a vivir peligrosamente y simplemente usar la resistencia de 10k y nada más. La razón por la que esto (a veces!) Funciona es que hay un diodo de sujeción dentro del chip receptor que desvía el exceso de voltaje a vcc o 3.3V. Este diodo se quemará si intenta arrastrar toda la línea de 3.3V hasta 5V a través de ella (además del daño causado al tirar esa línea a 5V), sin embargo, con la resistencia no fluirá mucha corriente y supondrá su línea de 3.3V tiene una carga no trivial, no cambiará sustancialmente el nivel de su línea eléctrica, pero hay muchas advertencias. Entonces, en general, no haga esto a menos que tenga un bus local de 3.3 V aislado y realmente no pueda ahorrar los dos centavos adicionales para el Zener. Solo lo menciono porque lo verá en los esquemas de los tableros de ruptura baratos que obtiene en ebay y podría tener la tentación de copiarlo, pero no deje que se deslice más allá de la placa de pruebas hacia un diseño de producción. :)
Editar acabo de notar que estabas usando el nuevo arduino de 3.3 V, así que simplemente invierte lo que dije anteriormente, el truco de resistencia Zener seguirá funcionando aunque, aparentemente, algunas de las líneas de entrada / salida pueden vencer. Sea tolerante a 5v, parece haber algún desacuerdo en los foros. El teensy 3.1 es también una bonita y pequeña placa ARM que tiene todos los pines tolerantes a 5 V y es menos de la mitad del costo de la IMHO adecuada y mejor diseñada enlace