エレキジャック Web版 mbedで初めてのマイコン開発 メモリカードを使ったデータの読み書き<3/3> センサから得たデータをSDに書き込むプログラムです。時刻設定はNTPを使っています。 http://www.eleki-jack.com/arm/2010/12/mbed-7.html

Dependencies:   EthernetNetIf NTPClient_NetServices TextLCD mbed SDFileSystem

Committer:
sunifu
Date:
Fri Feb 04 15:20:31 2011 +0000
Revision:
0:3bee4ab4e52e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:3bee4ab4e52e 1 #include "mbed.h"
sunifu 0:3bee4ab4e52e 2 #include "TextLCD.h"
sunifu 0:3bee4ab4e52e 3 #include "SDFileSystem.h"
sunifu 0:3bee4ab4e52e 4 #include "EthernetNetIf.h"
sunifu 0:3bee4ab4e52e 5 #include "NTPClient.h"
sunifu 0:3bee4ab4e52e 6
sunifu 0:3bee4ab4e52e 7
sunifu 0:3bee4ab4e52e 8 TextLCD lcd(p24, p26, p27, p28, p29, p30);
sunifu 0:3bee4ab4e52e 9 AnalogIn temp_in(p20);
sunifu 0:3bee4ab4e52e 10 SDFileSystem sd(p5, p6, p7, p8, "sd1") ;
sunifu 0:3bee4ab4e52e 11
sunifu 0:3bee4ab4e52e 12 Ticker lcdTimer, writeTimer;
sunifu 0:3bee4ab4e52e 13 char strNtpErrMsg[32] ;
sunifu 0:3bee4ab4e52e 14 char strDispMsg[32];
sunifu 0:3bee4ab4e52e 15 double temp;
sunifu 0:3bee4ab4e52e 16
sunifu 0:3bee4ab4e52e 17 void dataWriting() {
sunifu 0:3bee4ab4e52e 18 FILE *fp;
sunifu 0:3bee4ab4e52e 19 //
sunifu 0:3bee4ab4e52e 20 if ( (fp = fopen("/sd1/temp.txt","a")) == NULL ) {
sunifu 0:3bee4ab4e52e 21 printf("Open Failed. \n") ;
sunifu 0:3bee4ab4e52e 22 exit(0);
sunifu 0:3bee4ab4e52e 23 }
sunifu 0:3bee4ab4e52e 24
sunifu 0:3bee4ab4e52e 25 //
sunifu 0:3bee4ab4e52e 26 fprintf(fp,"%s,%5.3f,%5.3f\r\n",strDispMsg,temp, temp*55);
sunifu 0:3bee4ab4e52e 27
sunifu 0:3bee4ab4e52e 28 //
sunifu 0:3bee4ab4e52e 29 printf("%s,%5.3f,%5.3f\r\n",strDispMsg,temp, temp*55) ;
sunifu 0:3bee4ab4e52e 30
sunifu 0:3bee4ab4e52e 31 //
sunifu 0:3bee4ab4e52e 32 fclose(fp);
sunifu 0:3bee4ab4e52e 33 }
sunifu 0:3bee4ab4e52e 34 void lcdUpdate(){
sunifu 0:3bee4ab4e52e 35 double rtemp;
sunifu 0:3bee4ab4e52e 36 char dt[16];
sunifu 0:3bee4ab4e52e 37 time_t ctTime ;
sunifu 0:3bee4ab4e52e 38
sunifu 0:3bee4ab4e52e 39 //
sunifu 0:3bee4ab4e52e 40 temp = temp_in;
sunifu 0:3bee4ab4e52e 41 rtemp = temp * 55.0 ;
sunifu 0:3bee4ab4e52e 42
sunifu 0:3bee4ab4e52e 43 //
sunifu 0:3bee4ab4e52e 44 lcd.locate(0,0);
sunifu 0:3bee4ab4e52e 45 lcd.printf("RoomTemp %5.2f",rtemp);
sunifu 0:3bee4ab4e52e 46 lcd.locate(14,0);
sunifu 0:3bee4ab4e52e 47 lcd.putc(0xDf);
sunifu 0:3bee4ab4e52e 48 lcd.putc(0x43);
sunifu 0:3bee4ab4e52e 49
sunifu 0:3bee4ab4e52e 50 //
sunifu 0:3bee4ab4e52e 51 ctTime = time(NULL)+32400 ;
sunifu 0:3bee4ab4e52e 52 strftime(strDispMsg,32,"%Y/%m/%d %H:%M",localtime(&ctTime));
sunifu 0:3bee4ab4e52e 53
sunifu 0:3bee4ab4e52e 54 //
sunifu 0:3bee4ab4e52e 55 strftime(dt,16," %m/%d %X",localtime(&ctTime));
sunifu 0:3bee4ab4e52e 56 lcd.locate(0,1);
sunifu 0:3bee4ab4e52e 57 lcd.printf("%s",dt);
sunifu 0:3bee4ab4e52e 58 }
sunifu 0:3bee4ab4e52e 59
sunifu 0:3bee4ab4e52e 60
sunifu 0:3bee4ab4e52e 61 int main() {
sunifu 0:3bee4ab4e52e 62 EthernetNetIf eth;
sunifu 0:3bee4ab4e52e 63 NTPClient ntp;
sunifu 0:3bee4ab4e52e 64
sunifu 0:3bee4ab4e52e 65 lcd.cls();
sunifu 0:3bee4ab4e52e 66 lcd.locate(0,0);
sunifu 0:3bee4ab4e52e 67 lcd.printf("Please wait...");
sunifu 0:3bee4ab4e52e 68
sunifu 0:3bee4ab4e52e 69 //
sunifu 0:3bee4ab4e52e 70 EthernetErr ethErr = eth.setup() ;
sunifu 0:3bee4ab4e52e 71 if( ethErr != ETH_OK )
sunifu 0:3bee4ab4e52e 72 {
sunifu 0:3bee4ab4e52e 73 printf("Error %d in setup.\r\n", ethErr);
sunifu 0:3bee4ab4e52e 74 lcd.locate(0,1);
sunifu 0:3bee4ab4e52e 75 lcd.printf("NW Setup Error.");
sunifu 0:3bee4ab4e52e 76 }
sunifu 0:3bee4ab4e52e 77
sunifu 0:3bee4ab4e52e 78 Host ntpsrv(IpAddr(), 123, "ntp.nict.jp") ;
sunifu 0:3bee4ab4e52e 79 NTPResult ntpResult = ntp.setTime(ntpsrv) ;
sunifu 0:3bee4ab4e52e 80
sunifu 0:3bee4ab4e52e 81 if( ntpResult == NTP_OK ){
sunifu 0:3bee4ab4e52e 82 sprintf(strNtpErrMsg,"NTP Connect OK!\r\n");
sunifu 0:3bee4ab4e52e 83 }else if ( ntpResult == NTP_PRTCL ){
sunifu 0:3bee4ab4e52e 84 sprintf(strNtpErrMsg,"NTP Protocol error.\r\n") ;
sunifu 0:3bee4ab4e52e 85 }else if ( ntpResult == NTP_TIMEOUT ){
sunifu 0:3bee4ab4e52e 86 sprintf(strNtpErrMsg,"Connection timeout.\r\n");
sunifu 0:3bee4ab4e52e 87 }else if ( ntpResult == NTP_DNS ){
sunifu 0:3bee4ab4e52e 88 sprintf(strNtpErrMsg,"Could not resolve DNS hostname.\r\n") ;
sunifu 0:3bee4ab4e52e 89 }else if ( ntpResult == NTP_PROCESSING ){
sunifu 0:3bee4ab4e52e 90 sprintf(strNtpErrMsg,"Processing.\r\n");
sunifu 0:3bee4ab4e52e 91 }else{
sunifu 0:3bee4ab4e52e 92 sprintf(strNtpErrMsg,"NTP Error.");
sunifu 0:3bee4ab4e52e 93 }
sunifu 0:3bee4ab4e52e 94
sunifu 0:3bee4ab4e52e 95 printf("%s\r\n",strNtpErrMsg);
sunifu 0:3bee4ab4e52e 96
sunifu 0:3bee4ab4e52e 97 lcdTimer.attach(&lcdUpdate,1.0);
sunifu 0:3bee4ab4e52e 98
sunifu 0:3bee4ab4e52e 99 writeTimer.attach(&dataWriting, 60.0);
sunifu 0:3bee4ab4e52e 100
sunifu 0:3bee4ab4e52e 101 while(1){
sunifu 0:3bee4ab4e52e 102 }
sunifu 0:3bee4ab4e52e 103 }