Arduino Waveform Generator Shield

Picture of Arduino Waveform Generator Shield
main copy copy.jpg
Waveform generators (also called function generators) are useful for testing and debugging circuits. They can be used to test the frequency response of electronic components like op amps and sensors or to characterize and troubleshoot audio effects boxes and pedals. This waveform generator shield is powered by an Arduino. It outputs four waveforms: sine, triangle, pulse, and saw, each waveform ranges in frequency from 1Hz-50 kHz. The frequency, pulse width, and overall amplitude (gain) of the waveforms is controlled by three potentiometers. Four indicator LEDs let you know which type of wave is currently being sent to the output.  This Instructable describes how to put together the Arduino Waveform Generator Shield Kit I designed, if you're interested you can also check out my original post about the Arduino Waveform Generator.

Parts List:

(x4) momentary push buttons Jameco 119011
(x3) linear taper 10kOhm potentiometer Jameco 286273
(x3) 0.25" knobs Jameco 136241
(x4) white LED Jameco 334502
(x4) 220Ohm 1/4Watt resistors Jameco 2157183
(x1) female header sockets Jameco 70755
(x4) male header pins Jameco 103393
(x1) LM386 op amp Jameco 24133
(x1) 8 pin socket Jameco 51626
(x11) 10kOhm 1/4Watt resistor Jameco 2157167
(x10) 20kOhm 1/4Watt resistor Jameco 691171
(x2) 220uF capcitor Jameco 606820
(x1) 2.2kOhm 1/4Watt resistor Jameco 2160981
(1x) Arduino Uno (Duemilanove is fine, but make sure it is ATMEL328P) Jameco 2151486
(1x) Shield PCB (Buy the shield and all the components here)

Additional Materials:
battery snap Jameco 109154
9V battery Jameco 198731
9V battery and battery snap or other power supply

This Instructable will show you how to put the Waveform Generator Shield together, if you want a more detailed description of the circuit check out my Arduino Waveform Generator Instructable.
Remove these adsRemove these ads by Signing Up

Step 1: Header Pins

Picture of Header Pins
IMG_1299 copy.jpg
IMG_1300 copy.jpg
IMG_1302 copy.jpg
IMG_1303 copy.jpg
Solder two groups of 8 and two groups of 6 header pins to the PCB.  Make sure to solder the header pins to the bottom of the board (the side that does not have any words).  Here are some tips to keep the pins straight while soldering them down.  The shield should fit nicely on an Arduino.
jmrt19 days ago
hey amanda. :) can i change the maximum frequency to 20Mz? is it possible? im making a project about waveform generator that generates from 20Hz-20Mhz can u help me? thanks good day.
amandaghassaei (author)  jmrt17 days ago

arduino only runs at 16Mz, you will need something faster.

Does shield work on arduino mega?
Thank you for answering.
amandaghassaei (author)  jolivera santiago5 months ago
not with the current code.
ddobrew6 months ago
Is it ok if the buttons stay closed all the time because i want to make it with one of thoose rotary type switches i forgot their names?
amandaghassaei (author)  ddobrew6 months ago
yeah, you'll have to change the code where you digitalRead() from the pins, change it to if (digitalRead(pin)==0) for a selected state
wodiesan9 months ago
Quick question: Could you use the potentiometers in this build in place of the ones for the protoboard-based one? I'm following along the protoboard build (didn't realize that this build existed until now), and the 50k linear-taper and 10K audio-taper that are linked (in the parts list) are too large to fit inside your enclosure. Could I use the potentiometers listed on this parts list? Also, would I change out the 2 that doesn't fit, or should I change out all 3 potentiometers? Thanks!
amandaghassaei (author)  wodiesan9 months ago
Any potentiometers are fine as long as they are the correct taper(linear/log) and the value is somewhere in the same range
theknurd10 months ago
Is there an image of the top and bottom traces? I want to print and etch this on my own.
amandaghassaei (author)  theknurd10 months ago
I've included the eagle files in the first step
nerd747311 months ago
does anyone know if I can get this assembled?
amandaghassaei (author)  nerd747311 months ago
no it's just a kit
Aw... I was wanting this shield but I don't want to do the work lol
Insonicbloom11 months ago
since my last comment was deleted which should be totally against the whole open source concept given the nature of my post -  which was offering a DIY waveform generator that anyone can make on stripboard and not have to spend loads + figure out how to use all the programming stuff I am going to post it again. bad show Instructables, bad show.
here is the stripboard waveform generator
mduarte411 months ago
Excellent ideal for teaching
Excelente ideal para enseñar
Lindie11 months ago
Great job!
Lindie11 months ago
Great job!
N.fletch11 months ago
This is awesome! What company did you have fabricate your pcb?
amandaghassaei (author)  N.fletch11 months ago
jameco made it for me
nerd747311 months ago
wow very cool
mmorlan6211 months ago
Yes, Amanda's contributions are very good. And, in other news, her laser-cut record made it on
mcmahanly11 months ago
Sales pitch? Commercial ad? I disagree with both of those comments. It's well written and thorough, complete with links for materials. What's commercial about it? Is it the high quality photos? is it the precision and attention to detail? Where's the sales pitch? Are you referring to the link for purchasing materials? Sure you could go out and buy a simple function generator for the same price as the bill of materials but that wouldn't be DIY, now would it... yeesh. If there is ANYTHING to complain about... somebody will find it.
Marvelous instructable, Amanda.
ronnykerr11 months ago
i should probably make one of these at some point.
amandaghassaei (author)  ronnykerr11 months ago
what are you doing here?
mmorlan6211 months ago
I always like a ready-to-build kit and your detailed instructable upon which this is based is quite excellent. However, this post feels like a sales pitch which is somewhat frowned upon at instructables.

$65 for the kit plus the cost of an Arduino and an enclosure. While this may have a nice DIY vibe, I could simply buy a capable function generator outright for that. If I'm feeling the need for a DIY build, I could construct my own 1Mhz generator from an Elenco kit for $45 total (although, admittedly, it would not look nearly as cool as your laser-cut wood case.)

One can find a dozen choices half the price of this solution with a simple "function generator" search on Amazon. Perhaps, you might tone down the "Buy this kit!" message and explain the build with the same attention to detail you did the original.

Kind regards,

IamWe11 months ago
I don't have any problem that Instructables is selling this in a kit. Many people like a project, but are not in the situation to get the parts together. I am glad to use my (unused) Arduino for this project. Thank you!
This is pushing the edge of being a commercial ad. Instructables is not about this no matter how good the project.

Get More Out of Instructables

Already have an Account?


PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!