Function generator is a rely useful tool in the lab, a simple version can be build at home, there's a lot of examples on the Internet, some are much more complex and powerful, but this one is intended to be really simple and cheap. It can be also built-in in some bigger projects that also requires a generator.
The generator can output (only) square signal with adjusted frequency and pulse width. The amplitude may be also modified by soldering different values on the voltage divider on the output, it's a bit laborious, but if it will be used in digital or microprocessor projects, then there isn't really need for amplitude adjustment.
The generator is built from two NAND gates (IC1A, IC1B), that's a classic configuration used in many other circuits. S1 and C1-C8 selects the frequency, there is an equitation for it, but the general rule is that the more capacity thy have, the lower frequency is generated. By adjusting witch one switch are set to ON state, we can select plugged capacitors and the output frequency. R2-R4, D1, D2 changes pulse width.
IC1C, IC1D make a buffer. Old trick.
A voltage divider R5+R6 can be used to reduce an amplitude of the signal.
Single layer PCB was used, some of the elements are SMD, but majority is THT.
On the o'scope it's visible, that the signal looks good, below images show the lowest and highest frequency signal that can be generated, but it could be expanded by using smaller/bigger C1-C8 and R2-R4.
Project was created in Eagle, you can download all of its files (including PCB images for home made etching) from my GitHub. Image of top side needs to be mirrored before printing.