Un'altra cosa che dovresti considerare è se hai davvero bisogno di cambiare livello. Molti chip hanno pin di ingresso tolleranti a 5 V anche quando funzionano a una tensione inferiore come 3.3. La CPU atmega interpreta anche qualsiasi cosa al di sopra di 0,6 * Vcc o 3V per un arduino come un livello logico alto, quindi un segnale 3.3V può guidare direttamente un pin Arduino senza spostamento di livello.
Supponendo che tu stia utilizzando un arduino a 5 V e abbia bisogno di parlare con una parte a 3,3 V, se la parte ha input tolleranti a 5 V (molti lo fanno al giorno d'oggi), collegali e funzionerà. Se la tua linea bidirezionale è un design a collettore aperto, come i2c in cui i dispositivi abbassano solo la linea, collega semplicemente le resistenze di pull up a 3,3 V anziché 5 V e le cose funzioneranno.
Altrimenti tutto ciò che devi fare è assicurarti che la linea non superi i 3,3 V, puoi farlo con un resistore e uno zener, mettere un resistore sulla linea arduino quindi uno zener per fissare la tensione a 3,3 V. (fonte: repetae.net )
Potresti essere tentato di vivere pericolosamente e usare solo la resistenza da 10k e nient'altro. La ragione per cui questo (a volte!) Funziona è che c'è un diodo di serraggio all'interno del chip ricevente che devia la tensione in eccesso a Vcc o 3,3 V. Questo diodo si esaurirà se si tenta di tirare l'intera linea da 3,3 V fino a 5 V attraverso di essa (oltre a qualsiasi danno causato dall'estrazione di tale linea a 5 V), tuttavia con il resistore non scorrerà molta corrente e assumendo la linea da 3,3 V ha un carico non banale su di esso non cambierà sostanzialmente il livello della linea elettrica ma ci sono molti avvertimenti. Quindi, in generale, non farlo a meno che tu non abbia un bus locale 3.3V isolato e davvero non puoi risparmiare i due centesimi in più per lo zener. Lo dico solo perché lo vedrai negli schemi per schede di breakout economiche sporche che ottieni su eBay e potresti essere tentato di copiarlo, semplicemente non lasciare che passi di soppiatto oltre la breadboard in un progetto di produzione. :)
Modifica ha appena notato che stavi usando il nuovo arduino 3.3V, quindi inverti quello che ho detto sopra, il trucco della resistenza zener funzionerà comunque anche se apparentemente alcune delle linee di I / O sul dovuto potrebbero essere tolleranti 5v, sembra esserci un disaccordo sui forum. Teensy 3.1 è anche una bella scheda ARM che ha tutti i pin tolleranti a 5 V ed è meno della metà del costo dell'IMHO dovuto e meglio progettato http://www.pjrc.com/store/teensy31.html