Inspired by a project he found over on Instructables, Maker JoEtuuube has created an Arduino-based waveform generator using an 8-bit resistor ladder DAC that can precisely produce different common waveforms at frequencies between 1Hz and 20Khz in sine-wave, sawtooth, triangle and various ratios of square wave. It features a speaker and a small LCD display.
A neat thing about the LCD is that it’s actually a reverse-engineered display from a cheap pocket calculator. With his hack, JoEtuuube no longer punches each digit in directly; instead, he only taps the clear, +, = and 1 keys. He can then enter arbitrary numbers by typing in the right number of ones and adding them up. For example, 345 = 111 + 111 + 111 + 11 + 1.
The generator itself uses an Arduino Uno and runs off a 9V battery. In the video below, JoEtuuube provides a detailed walkthrough of the firmware and how everything works. You can also read more about it on Hackaday.