Une autre chose que vous devriez considérer est de savoir si vous avez réellement besoin d'un changement de niveau. De nombreuses puces ont des broches d'entrée tolérantes à 5 V même lorsqu'elles fonctionnent à une tension inférieure à 3,3. Le CPU atmega interprète également tout ce qui est supérieur à 0,6 * Vcc ou 3V pour un arduino comme un niveau logique élevé, donc un signal de 3,3 V peut directement piloter une broche arduino sans changement de niveau.
En supposant que vous utilisez un arduino 5V et que vous devez parler à une partie 3,3V, si la partie a des entrées tolérantes 5V (beaucoup le font de nos jours), connectez-les simplement et cela fonctionnera. Si votre ligne bidirectionnelle est une conception à collecteur ouvert, comme i2c où les appareils ne tirent que la ligne basse, attachez simplement les résistances de traction à 3,3 V au lieu de 5 V et les choses fonctionneront simplement.
Sinon, tout ce que vous devez faire est de vous assurer que la ligne ne dépasse pas 3,3 V, vous pouvez le faire avec une résistance et un zener, mettre une résistance sur la ligne Arduino puis un Zener pour fixer la tension à 3,3 V. (source: repetae.net )
Vous pourriez être tenté de vivre dangereusement et d'utiliser simplement la résistance 10k et rien d'autre. La raison pour laquelle cela fonctionne (parfois!) Est qu'il y a une diode de serrage à l'intérieur de la puce de réception qui dérive la tension excessive à vcc ou 3,3 V. Cette diode s'éteindra si vous essayez de tirer toute la ligne 3,3 V jusqu'à 5 V à travers elle (en plus des dommages causés en tirant cette ligne à 5 V), mais avec la résistance, pas beaucoup de courant ne circulera et en supposant que votre ligne 3,3 V a une charge non triviale, cela ne changera pas substantiellement le niveau de votre ligne électrique, mais il y a beaucoup de mises en garde. Donc, en général, ne faites pas cela sauf si vous avez un bus 3,3 V local et isolé et que vous ne pouvez vraiment pas épargner les deux cents supplémentaires pour le zener. Je ne le mentionne que parce que vous le verrez dans les schémas des panneaux de dérivation bon marché que vous obtenez sur ebay et pourriez être tenté de le copier, ne le laissez pas passer la planche à pain dans une conception de production. :)
Edit vient de remarquer que vous utilisiez le nouvel arduino 3.3V, alors inversez simplement ce que j'ai dit ci-dessus, l'astuce de résistance zener fonctionnera toujours bien qu'apparemment certaines des lignes d'E / S sur la raison puissent être tolérantes à 5v, il semble y avoir un désaccord sur les forums. Le teensy 3.1 est également une jolie petite carte ARM qui a toutes les broches tolérantes 5V et est moins de la moitié du coût de l'IMHO dû et mieux conçu http://www.pjrc.com/store/teensy31.html