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

Dependencies:   SDFileSystem mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*
00002 Program izradio: Dinko Djakovic
00003 Datum: 17.06.2015.
00004 
00005 Opis programa
00006 Program ucitava vrijednosti analognog ulaza na pinu p20 i logira ih na microSD karticu.
00007 Uzima se 100 uzoraka, a vrijednosti se uzorkuju u intervalima 100ms, tako da je ukupno vrijeme logiranja 10 sekundi.
00008 Na microSD karticu zapisuje se log.csv datoteka koju je moguce dalje analizirati programom tipa Microsoft Excel, te izraditi grafikon vrijednosti ulaznog napona.
00009 Na eksperimentalnoj plocici spojen je fotootpornik u seriju s 12k otpornikom, što čini naponsko djelilo za mjerenje intenziteta svjetla na fotootporniku.
00010 Radi dodatne provjere, program u isto vrijeme ispisuje vrijednosti i na serijski port uz poruke o pocetku i zavrsetku logiranja.
00011 */
00012 
00013 #include "mbed.h"
00014 #include "SDFileSystem.h"                       // ukljucivanje biblioteke potrebne za rad s SD memorijskim karticama
00015  
00016 SDFileSystem sd(p5, p6, p7, p8, "sd");          // pinovi na ISP sucelju kontrolera microSD kartice: p5 - MOSI, p6 - MISO, p7 - SCK, p8 - CS
00017 Serial pc(USBTX, USBRX);                        // kontrolne poruke prema serijskom portu
00018 
00019 AnalogIn ulaz(p20);                             // analogni ulaz odabran za uzorkovanje ulazne vrijednosti
00020 float vrijednost;                               // varijabla analogne vrijednosti 
00021 
00022 int main() {
00023     /*while (1){  */                            // Ako želimo da program konstantno upisuje vrijednosti potrebno je otkomentirati ovu petlju i njezinu zavrsnu viticastu zagradu
00024     wait(3);                                     // cekam 3 sekunde kako bi korisnik ukljucio Teraterm
00025     pc.printf("Pisem 100 vrijednosti u SD karticu u intervalima od 100 ms...\r\n");  // poruka kojom započinje logiranje podataka 
00026  
00027    mkdir("/sd/mapa", 0777);                     // stvaranje mape na kartici u koju će se spremati log datoteka
00028     
00029     FILE *fp = fopen("/sd/mapa/log.csv", "w");  // kreiranje i otvaranje datoteke log.csv
00030     if(fp == NULL) {
00031         error("Nemoguce otvoriti datoteku na kartici!\n");  // u slucaju greske s kreiranjem ili otvaranjem log.csv datoteke program ce ispisati gresku s odgovarajucom porukom
00032     }
00033     for(int i = 0; i < 100; i++) {              // petlja u kojoj program ucitava vrijednost intenziteta svjetla
00034         vrijednost=ulaz.read()*100;             // osvježavanje vrijednosti ulaznog napona, odnosno intenziteta svjetla
00035         fprintf(fp, "%3.f\r\n", vrijednost);
00036         wait(0.1);
00037     }
00038     fclose(fp);
00039     
00040     pc.printf("Zapisao!\r\n");
00041     //wait(2);
00042 //}
00043 }