Spremanje podataka s fotosenzora na microSD karticu i pregled log zapisa pomoću Microsoft Excel programa

Dependencies:   SDFileSystem mbed

Committer:
djdinko
Date:
Wed Jun 17 18:04:10 2015 +0000
Revision:
0:46e3920b5aab
Zavrsno stanje prezentacijskog rada - Dinko ?akovi?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djdinko 0:46e3920b5aab 1 /*
djdinko 0:46e3920b5aab 2 Program izradio: Dinko Djakovic
djdinko 0:46e3920b5aab 3 Datum: 17.06.2015.
djdinko 0:46e3920b5aab 4
djdinko 0:46e3920b5aab 5 Opis programa
djdinko 0:46e3920b5aab 6 Program ucitava vrijednosti analognog ulaza na pinu p20 i logira ih na microSD karticu.
djdinko 0:46e3920b5aab 7 Uzima se 100 uzoraka, a vrijednosti se uzorkuju u intervalima 100ms, tako da je ukupno vrijeme logiranja 10 sekundi.
djdinko 0:46e3920b5aab 8 Na microSD karticu zapisuje se log.csv datoteka koju je moguce dalje analizirati programom tipa Microsoft Excel, te izraditi grafikon vrijednosti ulaznog napona.
djdinko 0:46e3920b5aab 9 Na eksperimentalnoj plocici spojen je fotootpornik u seriju s 12k otpornikom, što čini naponsko djelilo za mjerenje intenziteta svjetla na fotootporniku.
djdinko 0:46e3920b5aab 10 Radi dodatne provjere, program u isto vrijeme ispisuje vrijednosti i na serijski port uz poruke o pocetku i zavrsetku logiranja.
djdinko 0:46e3920b5aab 11 */
djdinko 0:46e3920b5aab 12
djdinko 0:46e3920b5aab 13 #include "mbed.h"
djdinko 0:46e3920b5aab 14 #include "SDFileSystem.h" // ukljucivanje biblioteke potrebne za rad s SD memorijskim karticama
djdinko 0:46e3920b5aab 15
djdinko 0:46e3920b5aab 16 SDFileSystem sd(p5, p6, p7, p8, "sd"); // pinovi na ISP sucelju kontrolera microSD kartice: p5 - MOSI, p6 - MISO, p7 - SCK, p8 - CS
djdinko 0:46e3920b5aab 17 Serial pc(USBTX, USBRX); // kontrolne poruke prema serijskom portu
djdinko 0:46e3920b5aab 18
djdinko 0:46e3920b5aab 19 AnalogIn ulaz(p20); // analogni ulaz odabran za uzorkovanje ulazne vrijednosti
djdinko 0:46e3920b5aab 20 float vrijednost; // varijabla analogne vrijednosti
djdinko 0:46e3920b5aab 21
djdinko 0:46e3920b5aab 22 int main() {
djdinko 0:46e3920b5aab 23 /*while (1){ */ // Ako želimo da program konstantno upisuje vrijednosti potrebno je otkomentirati ovu petlju i njezinu zavrsnu viticastu zagradu
djdinko 0:46e3920b5aab 24 wait(3); // cekam 3 sekunde kako bi korisnik ukljucio Teraterm
djdinko 0:46e3920b5aab 25 pc.printf("Pisem 100 vrijednosti u SD karticu u intervalima od 100 ms...\r\n"); // poruka kojom započinje logiranje podataka
djdinko 0:46e3920b5aab 26
djdinko 0:46e3920b5aab 27 mkdir("/sd/mapa", 0777); // stvaranje mape na kartici u koju će se spremati log datoteka
djdinko 0:46e3920b5aab 28
djdinko 0:46e3920b5aab 29 FILE *fp = fopen("/sd/mapa/log.csv", "w"); // kreiranje i otvaranje datoteke log.csv
djdinko 0:46e3920b5aab 30 if(fp == NULL) {
djdinko 0:46e3920b5aab 31 error("Nemoguce otvoriti datoteku na kartici!\n"); // u slucaju greske s kreiranjem ili otvaranjem log.csv datoteke program ce ispisati gresku s odgovarajucom porukom
djdinko 0:46e3920b5aab 32 }
djdinko 0:46e3920b5aab 33 for(int i = 0; i < 100; i++) { // petlja u kojoj program ucitava vrijednost intenziteta svjetla
djdinko 0:46e3920b5aab 34 vrijednost=ulaz.read()*100; // osvježavanje vrijednosti ulaznog napona, odnosno intenziteta svjetla
djdinko 0:46e3920b5aab 35 fprintf(fp, "%3.f\r\n", vrijednost);
djdinko 0:46e3920b5aab 36 wait(0.1);
djdinko 0:46e3920b5aab 37 }
djdinko 0:46e3920b5aab 38 fclose(fp);
djdinko 0:46e3920b5aab 39
djdinko 0:46e3920b5aab 40 pc.printf("Zapisao!\r\n");
djdinko 0:46e3920b5aab 41 //wait(2);
djdinko 0:46e3920b5aab 42 //}
djdinko 0:46e3920b5aab 43 }