A simple sinewave generator with adjustable amplitude and frequency over potentiometers.
Dependencies: mbed
main.cpp@0:ea6a4849f64a, 2014-12-18 (annotated)
- Committer:
- tbjazic
- Date:
- Thu Dec 18 08:39:42 2014 +0000
- Revision:
- 0:ea6a4849f64a
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |