Arduino Oscilloscope Under 5 $ - 3 Channel

Introduction: Arduino Oscilloscope Under 5 $ - 3 Channel

About: Hi , folks i am Aman and i like to make electronics projects and robots. I also like to make aero models like a plane and quadcopters are one of my favorites .I am a 10th class student and i am very much dev...

Oscilloscopes are used by electronics enthusiasts , hobbyists and it is one of the common tools on a workbench . But buying one can get expensive so finally i decided that why not to make one using an arduino. So this basic project will help you increase your skill and in the end you will end up having a nice DIY tool for you bench which will make some things easy for you .

Arduinos are great , they use 8-bit microcontroller which has digital inputs outputs , SPI , I2C lines , Serial Communication , ADC etc . So using arduino for this project would be a nice idea .

Step 1: Materials Required

As i would like to keep things simple and cheap all you need is :

A laptop x1

An Arduino x 1 (UNO,PRO MINI anyone would work i used NANO ) Except MEGA

Jumper Cables x 2

Breadboard x 1

Alligator Clips x 2

Male to Male 3.5 mm cable x 1

An audio source or a signal source of whose waveform you want to see.

Step 2: The Code and the Oscilloscope Program

After you have plugged in the arduino just upload the provided Code in the zip file .

What code does is it just simply reads the analouge voltage on arduino's analouge pin A0 to A5 or A7 (depending upon the board) and then covert that analogue voltage into a value ranging between 0-1023 and then that value is sent to the computer through the usb port .

Pins A0 - A5 or A7(depending upon the board) acts as 6 or 8 channels of the oscilloscope but the software is designed to display only 3 channels at once .

Then when you open up the oscilloscope program after uploading the sketch select the baud rate and COM port then just open up the channels

The oscilloscope program is designed to take the values form the arduino and plot it on a graph and just join those points with a line which gives you a nice looking waveform just like an oscilloscope .

Step 3: Code of Conduct

Step 1 : Plug in your arduino

Step 2 : Upload the code

Step 3 : Put the signal through arduino's pin A0 - A5 or A7 (depending upon the board) in my case i choosed an audio signal coming out from my phone via male to male 3.5mm jack .

Its one end was connected to the phone and on the other end i connected its ground to arduino's ground and the other alligator clip was connected to one of the audio channels (in my case the right channel of the audio signal) .

Step 4 : Open up the oscilloscope program

Step 5 : Select the COM port and select the baud rate

Step 6 : Open up the channels and THERE U GO !!!!!


Step 4: Features:


This oscilloscope has a resolution of about : .0049 volts (4.9 mV) per unit.

Refresh Rate - 1Khz

Baud Rate :115200

Voltage Range : 0 - 5v DC

It can display 3 channels at a time

NOTE : Do not exceed the 5v limit on the oscilloscope or else you will fry the arduino .


1. Voltage range cannot be exceeded its lies between 0-5V DC ONLY

2. Any signal above 1kHz would not be detected by the arduino or either it will show garbage values

3. Don't try to measure the AC signals as Analouge pins of arduino are not designed to do so , so at the end you will end up by either damaging the arduino or either it will only show the positive half of the arduino.

Step 5: Well There You Have It !!

So i think that was pretty simple how we can make a simple arduino based Ocillosocpe as this was my first experience with arduino oscilloscopes let me know if i did a mistake . Hope you like it . If you guys have any question post it in the comments section down below .Now you can easily hack into small electronics and can easily find out what kind of wave is going at what voltage level in short you've got a great tool

Have Fun ! and do consider voting me ....



  • Creative Misuse Contest

    Creative Misuse Contest
  • Metalworking Contest

    Metalworking Contest
  • Tiny Home Contest

    Tiny Home Contest

36 Discussions


3 months ago

Can I make it with the smaller bread board?


Question 3 months ago

Can I make it with the smaller bread board?

сделайте Частота обновления - 200 Khz . пожалуйста. и как его калибровать . рассчитать делитель на 400 вольт . пожалуйста.

How do you read the oscilloscope on the graph? I want to get readings in voltage but I'm getting 1000.

2 replies

To answer that you can change the arduino code to take the analog read multiplied by the scalar of the arduino's analog input. This means:

analogRead(A0) * (5.0 / 1023.0)

This is because there is a 5v range and 1023 data points the arduino fits it into. You could also make your own program to handle this on the pc side, but that is your choice.

If you need more info on this:

I have a python program that is graphing and scaling the numbers which comes out as such:

osciliscope python.PNG

I read 12v with a circuit consisting of a couple resistors, an npn transistor and a diode. See the diagram I included. The npn transistor acts as a switch triggered by the 12v signal to read the arduino's own 5v. Very handy for automotive applications ;)


I got the code loaded onto my Uno, however when I connected gnd from the board to gnd on the aux cable and A0 to the tip of the aux cable nothing showed up in Serial Oscilloscope. It was set to the correct com port and baud 9600 with the channels set to 1,2,3 just like in the video and it still didn't work. I don't know what I'm doing wrong, and I would love it if you could tell me what I'm doing wrong.

can you show me the block diagram of this project?

please I really need that .

What if I want to do this on tablet? Is it possible ? my project is tablet-interfaced arduino based oscilloscope. And I need to know the correct block diagram of my project? please help me.

Hello my friend, I have a question, how do you setup arduino code and hardware to use more than one channel at time?

Will it work for waves with both positive and negative values?

1 reply


when i try to use the SERIAL OSCILLOSCOPE.EXE program it opens a window and says that "serial oscilloscope has stoped working. windows is collecting more information about the problem.this might take several minutes..."

do you know how can i fix this?

2 replies

nevermind i fixed it.

but i wanted to ask if there is a way to make the arduino an order to set a digital pin to HIGE or LOW whenever the oscilloscope program triggerd?

i mean to make the oscilloscope send or write information to the arduino and by that make the arduino do stuff automaticlly like move a stepper motor or turn on a LED.


Yes of course there is a method for it . All you need to do is edit the code in such a way that whenever a particular value hits the analog pin a particular digital pin goes high . Please inbox me or write an email on if you are not able to do it .

I am really sorry for that ill try to make it OSx compatible if i could get my hands on a MacBook