Das
Ziel ist eine möglichst schnelle Datenerfassung mit dem Calliope. Und
das Programm soll möglichst voll kompatibel zum Micro:bit sein. In Mbed
wird daher die Datei mbed.h eingebunden, nicht aber microbit.h, die
spezifische Details nur für den Micro:bit enthält. Außerdem war die
Hoffnung, dass damit mehr freier Speicher im RAM für Messdaten bleibt.
Tatsächlich konnten 1000 Float-Werte (32 Bit) gespeichert werden. Die
Daten stammen vom analogen Eingang an P2.
Hier der Quelltext zum Kopieren:
include "mbed.h"
DigitalOut col0(P0_4, 0);
DigitalOut myled(P0_13);
AnalogIn u2(p2);
int main() {
float d[1000];
uint16_t n=0;
for (n=0; n<1000;n++){
d[n]=(u2.read());
}
for (n=0; n<1000;n++){
//printf("%d\r\n",n);
printf("%f\r\n",255*d[n]);
}
myled = 1;
wait(0.2);
myled = 0;
wait(0.2);
}
Die
Daten werden mit maximaler Geschwindigkeit gemessen und dann mit 9600
Baud gesendet. Um sie leichter darstellen zu können, wird der
Messbereich auf 0...255 verschoben.
Für
die Ausgabe wurde der serielle Plotter in der aktuellen Arduino-IDE
verwendet. Die Messung zeigt die Störspannung, wenn ich mit dem Finger
den Eingang P2 berühre. Man sieht genau zwei volle 50 Hz-Schwingungen in
500 Messpunkten, verziert mit Oberwellen und Störsignalen, die
teilweise von einer Leuchtstoffröhre stammen. Man beachte die exakte
Übereinstimmung der Signale bei beiden Schwingungen. Zwei volle
50-Hz-Perioden bedeuten 40 ms, die Abtastzeit beträgt also 0,08 ms und
die Abtastrate 12,5 kHz. Gar nicht mal so schlecht für ein kleines
Oszilloskop.
Elektronik-Labor Projekte Microbit