What you have is technically correct, but you just need to look at the signal with an interesting spectrogram. To do this, you need a frequency over time. (And for this, you need a lot of oscillation, since it takes a few oscillations to set the frequency, and then you need many of them to be able to change the frequency over time in an interesting way.)
Below I have changed the code as little as possible to get a frequency that does something interesting ( fscale just increases the frequency over time). I am sending all the code to make it work, but I only change three of the four top lines.

Also, note that only the spectrogram is useful. If you see a good waveform or spectra, then spectrograms probably will not be interesting: 1) if the waveform is clear, you probably do not have enough data and time during which the frequency is determined and changed enough to be interesting; 2) if the full spectra are clear, you probably do not have a sufficient change in frequency for the spectrogram, since the spectrum is basically just the average of what you see over time in the spectrogram.
If you really want to see the spectrogram of your original signal, you just need to increase the y axis to see the expected peaks (note that the y axis of the spectrograms is 2.5e8, it should be larger than in your spectrum): 
tom10 source share