Ich will einen Arduino Uno als einfachen logger verwenden (mit
SD-shield).
Das schreiben auf die SD Karte funktioniert, nur der ADC ließt offenbar
Blödsinn.
1 | #include <SPI.h>
|
2 | #include <SD.h>
|
3 |
|
4 | const int chipSelect = 4;
|
5 | File dataFile;
|
6 |
|
7 | uint16_t *buff;
|
8 | uint8_t buffcnt;
|
9 | void setup() {
|
10 | // put your setup code here, to run once:
|
11 | buff=(uint16_t*)malloc(128);
|
12 | buffcnt=0;
|
13 | SD.begin(chipSelect);
|
14 |
|
15 |
|
16 |
|
17 | }
|
18 | void save(){
|
19 | dataFile=SD.open("log.dat", FILE_WRITE);
|
20 | for(int i=0;i<64;i++){
|
21 | dataFile.println(buff[i]);
|
22 | }
|
23 | dataFile.close();
|
24 | }
|
25 |
|
26 | void loop() {
|
27 | uint16_t voltage=analogRead(0);
|
28 | buff[buffcnt]=voltage;
|
29 | if(buffcnt=64){
|
30 | buffcnt=0;
|
31 | save();
|
32 | delay(10000);
|
33 |
|
34 | }
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | }
|
Zu Testzwecken habe ich A0 hart auf GND gelegt und erhalte recht
zufällig anmutende Werte zwischen 0 und 2^16 wobei 0 deutlich öfter
auftritt als durch eine Gleichverteilung zu erklären wäre, aber deutlich
<10% der Messwerte sind unter 128, exakt 0 vielleicht jeder 50.