# How to make arduino GPIO to operate at 3.3v instead of default 5v

I am working on a project, I use arduino mega 2560 with system operating voltage of 5v, at the same time I have a Bluetooth module which operates at 3.3v is there any way to reduce my arduino output voltage without any external component such as resistor, ic etc I saw the following statement in arduino website but couldn't understand, "IOREF. This pin on the Arduino board provides the voltage reference with which the microcontroller operates. A properly configured shield can read the IOREF pin voltage and select the appropriate power source or enable voltage translators on the outputs for working with the 5V or 3.3V."

• – 0x6d64 Jun 25 '15 at 9:02
• I think the IOREF pin will just be at 5V in your case and a shield with a BT module would sense that and levelshift for you. But you use a separate module. From 5V to 3.3 V you can indeed use resisors. But if you have any signals going from 3.3 to 5V (and I think you do you also want to receive data from the BT module) then you need a "levelshifter", something like: ebay.nl/itm/… might do the job. – Bimpelrekkie Jun 25 '15 at 9:25

AVR 2560 output are not 3V3 tolerant (for input) and you cannot internally change voltage level (output) unless you reduce Vcc to 3V3 (which reduces max. crystal frequency). You need employ level shifters. I prefer 74LVC125, 74HCT125 ICs.