Spremanje podataka s fotosenzora na microSD karticu i pregled log zapisa pomoću Microsoft Excel programa
Dependencies: SDFileSystem mbed
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 }
Generated on Sat Jul 30 2022 20:01:34 by 1.7.2