A simple sinewave generator with adjustable amplitude and frequency over potentiometers.

Dependencies:   mbed

Committer:
tbjazic
Date:
Thu Dec 18 08:39:42 2014 +0000
Revision:
0:ea6a4849f64a
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tbjazic 0:ea6a4849f64a 1 #include "mbed.h"
tbjazic 0:ea6a4849f64a 2
tbjazic 0:ea6a4849f64a 3 AnalogOut out(p18);
tbjazic 0:ea6a4849f64a 4 AnalogIn pot1(p19);
tbjazic 0:ea6a4849f64a 5 AnalogIn pot2(p20);
tbjazic 0:ea6a4849f64a 6
tbjazic 0:ea6a4849f64a 7 int main() {
tbjazic 0:ea6a4849f64a 8 float A, f, T; // sine peak-to-peak amplitude, frequency and period
tbjazic 0:ea6a4849f64a 9 float Ts; // sampling time
tbjazic 0:ea6a4849f64a 10 const float PI = 3.14159265;
tbjazic 0:ea6a4849f64a 11 int numberOfPoints = 100;
tbjazic 0:ea6a4849f64a 12 while(1) {
tbjazic 0:ea6a4849f64a 13 A = pot1; // amplitude in range 0 to 3.3 V
tbjazic 0:ea6a4849f64a 14 f = 10 + 10 * pot2; // frequency in range 10 to 20 Hz
tbjazic 0:ea6a4849f64a 15 T = 1/f;
tbjazic 0:ea6a4849f64a 16 Ts = T / numberOfPoints;
tbjazic 0:ea6a4849f64a 17 for (int i = 0; i < numberOfPoints; i++) {
tbjazic 0:ea6a4849f64a 18 out = 0.5 + A/2 * sin(2 * PI * f * i * Ts);
tbjazic 0:ea6a4849f64a 19 wait(Ts);
tbjazic 0:ea6a4849f64a 20 }
tbjazic 0:ea6a4849f64a 21 }
tbjazic 0:ea6a4849f64a 22 }