![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
DIC DAC Beispiel
Diff: main.cpp
- Revision:
- 0:2aca3f53fe79
- Child:
- 1:c8943c51b10d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Jan 13 09:22:46 2020 +0000 @@ -0,0 +1,46 @@ +#include "mbed.h" + +#define PI 3.14159 + +AnalogOut dacOutput(p18); // Ausgangs Pin 18 +Ticker valueTicker; +float voltageValues[100]; // 100 Punkte +int actualPoint; // Aktueller Punkt +int outputMode = 1; // 1 = Sägezahn, 2 = Rechteck, 3 = Sinus + +void outputToDAC() +{ + dacOutput.write(voltageValues[actualPoint]); + actualPoint++; + if(actualPoint >= 100) + { + actualPoint = 0; + } +} + +int main() +{ + actualPoint = 0; + + for(int i = 0; i < 100; i++) + { + switch(outputMode) + { + case 1: + voltageValues[i] = (float)i / 100.0f;; + break; + case 2: + voltageValues[i] = i <= 49 ? 1 : 0; + break; + case 3: + voltageValues[i] = 0.5f * sin(((float)i * PI) * 3.6f / 180) + 0.5f; // w = 6283 = 2 * PI * f + break; + } + } + + valueTicker.attach_us(&outputToDAC, 10); + + while(1) + { + } +}