David Johnson-Davies build a tiny function generator based on ATtiny85 microcontroller. He writes:
This article describes a simple function generator based on an ATtiny85. It can generate triangle, sawtooth, square, and rectangular waves, a pulse train, and noise. The frequency can be adjusted using a rotary encoder between 1Hz and 5kHz in steps of 1Hz, and the selected waveform and frequency is displayed on an OLED display.
This project really puts the ATtiny85 through its paces; it’s generating 8-bit samples at a 16kHz sampling rate, decoding the rotary encoder, switching between waveforms, and updating the OLED display via I2C.
ATtiny85 Function Generator – [Link]