Spremanje podataka s fotosenzora na microSD karticu i pregled log zapisa pomoću Microsoft Excel programa
Dependencies: SDFileSystem mbed
main.cpp@0:46e3920b5aab, 2015-06-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |