SuperScope: Circuit Simulation through Arduino-Processing Interface

nto the program where you can physically manipulate them.
Arduino tests for the value of the component (a capacitor, inductor, resistor, or waveform of specific frequency) then sends the data to Processing.
Imported components can then be plugged into circuit schematics.
SuperScope builds upon the mission of Arduino, the interface between hardware and software, analog and digital.
SuperScope provides the user with three graphical representations of the circuit.
The first is the basic frequency-domain plot; graphing voltage vs. frequency.
The second is the vector diagram; depicting the phase and magnitude of the output.
The third is a phasor; a dynamic, analytical representation of the output’s phase and magnitude relative to the input’s.
Arduino SuperScope

Let’s get started on what you’ll need for this project.

Step 1: What You Will Need

*Arduino – Available @ RadioShack [Catalog #: 276-128]
*Resistors – Available @ RadioShack [Catalog #: 271-003]
*Capacitors – Available @ RadioShack [Catalog #: 272-802]
*Inductive Components (inductors, ferrite chokes, motors, transformers) – Available @ RadioShack [Catalog #: 273-102]
*SolderlessBreadBoard – Available @ RadioShack [Catalog #: 276-098]
*LM339 Comparator (probably my absolute favorite IC) – Available @ RadioShack [Catalog #: 276-1712]
*555 Timer (I recommend the TLC555) – Available @ RadioShack [Catalog #: 276-1718]

Step 2: Circuit Schematic

Wire it up like this.

If you are using an op-amp instead of the LM339 comparator you may need to add in the positive feed-back loop depicted in the schematic.
The component you are testing connects to the two open circles.

Step 3: 1523 lines of code on the wall…

The Processing Code:

The code is so large that instructables won’t let me upload it as text :p

A text file and the processing app file are attached.

Step 4: Whew… only 94 lines this time

//The Arduino Code:

#include <math.h>

byte chargePin = 9;
byte triggerPin = 8;
byte noninvertingPin = A0;
byte invertingPin = A1;
float constRes = 100;
unsigned long timeStart;
unsigned long timeEnd;
unsigned long timeDelta;
unsigned long capacitance;
unsigned long inductance;
unsigned long resistance;
unsigned long frequency;
String str;
char c;
void setup() {
pinMode(chargePin, OUTPUT);
pinMode(triggerPin, INPUT);
pinMode(noninvertingPin, INPUT);
pinMode(invertingPin, INPUT);
str = “”;
c = ‘\n’;

void loop() {
Schematic Arduino SuperScope
while((Serial.available() > 0)) {

c =;
if(!(c==’\n’)) {
str += c;
else {
if(str == “requestFarads”) {
else if(str == “requestHenrys”) {
else if(str == “requestOhms”) {
else if(str == “requestHertz”) {

[box color=”#985D00″ bg=”#FFF8CB” font=”verdana” fontsize=”14 ” radius=”20 ” border=”#985D12″ float=”right” head=”Major Components in Project” headbg=”#FFEB70″ headcolor=”#985D00″]*Arduino




For more detail: SuperScope: Circuit Simulation through Arduino-Processing Interface

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top