DIY: a 5 Minutes Arduino Voltmeter With an OLED Display




About: I am a dreamer, maker and an engineer making and sharing interesting projects here at Instructables. Follow me @ instagram: @the_gadget.boy

Hello !

I'm going to show you how to make a voltmeter* with Arduino UNO, an OLED display, 2 resistors and 9 jumpers for less than 5 minutes. With it you will be able to measure Voltage from 0 to 50V (if you exceed it you may damage your Arduino !). Lets begin !

*"A voltmeter is an instrument used for measuring electrical potential difference between two points in an electric circuit" - Wikipedia

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Parts and Software

For the voltmeter you will need:

  • An Arduino UNO board
  • An OLED display - 1.3' 132x64 with SH1106 controller
  • 2 resistors - 10 k and 100k
  • A breadboard
  • 9 jumper wires

You will need the Arduino IDE that you can get from:

and the U8glib library for the OLED that you can get from:


Step 2: Making the Voltmeter

I order to measure voltage we will a build a simple voltage divider, but first place the OLED board on the breadboard. Then connect pin 13 to CLK, pin 11 to DIN, pin 9 to CS, pin 8 to D/C and pin 7 to RES.

Pins: 13, 11, 9 are the SPI Bus of the Arduino UNO board.

Now we build the voltage divider, plug the resistors on the breadboard and connect them for each other, the other side of the 100k resistor connect to ground, the connection between both reistors to analog 0 and the other side of the 10k resistor to the source you wish to measure, like on the schematic above.

After that move to the next step.

Step 3: Code

In this step, we are going to see how to program the voltmeter that you just built. You can find the whole code for the voltmeter on the corresponding GitHub repository:

We are now going to program the board. The first step is to plug in the USB cable in the board and the other side in your PC.

Step 4: Done !

As final step you have to upload the code to the 'duino and, you now learned the basics on how to build a voltmeter with Arduino and OLED display.

1 Person Made This Project!


  • Made with Math Contest

    Made with Math Contest
  • Multi-Discipline Contest

    Multi-Discipline Contest
  • Robotics Contest

    Robotics Contest

19 Discussions


6 months ago

My display was showing 16v on a known 1.5v source (AAA battery). I changed line 29 to:
vin = (vout / (R2/(R1+R2))) / 10;



Question 6 months ago on Step 4

Have you written a U8g2lib version? My display doesn't work with Adafruit library or U8glib. I have a 1.3" ssd1306HW SPI version

1 answer

Question 10 months ago on Introduction

Hi thanks for sharing your meter design, I have built it but it keeps freezing after a couple of minutes, it works again after I reset the arduino, did you have any issues like this? Thanks chris


2 years ago

Thank you again .

One question .

How to add code in your own animation on boot.


2 years ago

Wrote some new code so that 'blinking' of WARNING LOW VOLTAGE happens when v<12.59 (for 14v lipo). Used u8g.firstPage(); to 'clearscreen' for two additional drawings. THX Konstantin, for an GREATprogram!!

sse vid at :


2 years ago

Excellent program. Thank you for posting!! Very robust. I modified the V minimum to 2v which which had less jitter when (vin < 2.0) . I am VERY new to C++ /Arduino. I am trying to make this IF work so that "LOWVOLT" flashes. I have tried variations of the IF statement, added void draw(void) drawStr's, seems to be a really simple operation for the page, but I can't get it to work, any help greatly appreciated! (PS: I could not find the link to post code in this box)

if (vin < 2.0)

u8g.setFont(u8g_font_profont17r); // select font

u8g.drawStr(18, 12, "LOWVOLT");

u8g.setPrintPos(33, 40);



3 years ago

Hi,is it ok to use other arduino products ? Is this will affect the arduino project ?


3 years ago

Hi, how can I modify this to allow for 50.4v? Thanks, I am fairly new to this stuff.


3 years ago

In your intro, you say your voltmeter can measure "current from 0-30V". I think you meant to say it can measure "*voltage* from 0-30V" or did you mean current and the units would be Amps?


3 years ago

Very cool. If I wanted to adapt this for my motorcycle, all I would need to do use a 12v - 5v USB charger to power the Arduino ?

1 reply