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.

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.
JoshK121 month ago

Am I mistaken or is there no schematic file included in the Eagle files zipped above? I see a picture of the schematic in the introduction though.

If anyone knows where I can find the schematic and would let me know I'd be appreciative. I wanted to look into making some modifications to the amplifier, and it would same me some time to not backtrack through eagle to re-create it.

jmrt1 year 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)  jmrt1 year ago

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

Hi amanda. So, the arduino can only generate about maximum of 16Mhz of frequency? What is the maximum amplitude that the arduino can produce?
Can it have a 24Vpp of amplitude?
Hoping for you response. Thanks a lot amanda.
amandaghassaei (author)  jmrt7 months ago

this version does 5V, you could add an additional amp for more voltage

Does shield work on arduino mega?
Thank you for answering.
not with the current code.
ddobrew1 year 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)  ddobrew1 year 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
wodiesan2 years 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)  wodiesan2 years ago
Any potentiometers are fine as long as they are the correct taper(linear/log) and the value is somewhere in the same range
theknurd2 years ago
Is there an image of the top and bottom traces? I want to print and etch this on my own.
amandaghassaei (author)  theknurd2 years ago
I've included the eagle files in the first step
nerd74732 years ago
does anyone know if I can get this assembled?
amandaghassaei (author)  nerd74732 years ago
no it's just a kit
Aw... I was wanting this shield but I don't want to do the work lol
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
mduarte42 years ago
Excellent ideal for teaching
Excelente ideal para enseñar
Lindie2 years ago
Great job!
Lindie2 years ago
Great job!
N.fletch2 years ago
This is awesome! What company did you have fabricate your pcb?
amandaghassaei (author)  N.fletch2 years ago
jameco made it for me
nerd74732 years ago
wow very cool
mmorlan622 years ago
Yes, Amanda's contributions are very good. And, in other news, her laser-cut record made it on wired.com.

mcmahanly2 years 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.
ronnykerr2 years ago
i should probably make one of these at some point.
amandaghassaei (author)  ronnykerr2 years ago
what are you doing here?
mmorlan622 years 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,

IamWe2 years 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.