How to use the GPS, DS18B20, analog input and SDCARD

Dependencies:   DS1820 SDFileSystem mbed RHT03

Fork of frdm_serial by Freescale

Revision:
8:164088fcf57b
Parent:
7:986d5298b118
Child:
9:27360d48afcd
--- a/main.cpp	Wed Jul 16 09:59:53 2014 +0000
+++ b/main.cpp	Thu Sep 03 12:36:09 2015 +0000
@@ -1,17 +1,107 @@
 #include "mbed.h"
-
+#include "SDFileSystem.h"
+#include "DS1820.h"
+/*******************************************************************************************/
 DigitalOut myled(LED_GREEN);
 Serial pc(USBTX, USBRX);
+Serial gps(PTC17, PTC16);
+AnalogIn analog_value(A1);
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
+DS1820  ds1820(PTB3);    // substitute PA_9 with actual mbed pin name connected to the DS1820 data pin    
+/*******************************************************************************************/
+FILE *fp;
+char gps_data[255];
+/*******************************************************************************************/
 
 int main()
 {
-    int i = 0;
-    pc.printf("Hello World!\n");
-
-    while (true) {
-        wait(0.5f); // wait a small period of time
-        pc.printf("%d \n", i); // print the value of variable i
-        i++; // increment the variable
-        myled = !myled; // toggle a led
+    int i,rlock,stn;
+    char gps_data[256],str1[25],str2[25];
+    char ns,ew,aval,modi,mv,mi;
+    float utctime,hokui,tokei;
+    float g_hokui,g_tokei;
+    float d_hokui,m_hokui,d_tokei,m_tokei;
+    int h_time,m_time,s_time,d_date,m_date,a_date;
+    float speed,course,utcdate,magvar;
+    int j;
+    float v1,temp;
+      
+    wait(2);
+    pc.baud(115200);
+    gps.baud(9600);
+    pc.printf("\nHello World! I am ALPINHA 4\n");
+    mkdir("/sd/test1", 0777);
+    fp = fopen("/sd/alpinha2.txt", "w");
+    if (fp == NULL) 
+    {          // that it was created.
+        pc.printf("\nnao possivel abrir o arquivo\n");;           // Return error.
+    } else 
+    {
+        pc.printf("\n arquivo aberto para escrita\n");;           // Return error.
+    }
+    fprintf(fp, "1.txt in test 1");
+    fclose(fp);
+    ds1820.begin();
+    ds1820.setResolution(12);
+    wait(1.0);                  // let DS1820 complete the temperature conversion
+    pc.printf("temp = %3.3f\r\n", ds1820.read());     // read temperatura            
+    while (1) 
+    {      
+      i=0;
+      while(gps.getc()!='$');       
+      while( (gps_data[i]=gps.getc()) != '\r') i++;      
+      gps_data[i]='\0'; 
+      aval='\0';
+      for i=0 to 100
+      v1 =v1+ analog_value;//.read();
+      end;
+      
+      if((gps_data[2]=='R')&(gps_data[3]=='M')&(gps_data[4]=='C'))      
+      {
+        temp=ds1820.read();   
+        ds1820.startConversion();        
+          for(j=0;j<i-1;j++) if(gps_data[j]==',') gps_data[j]=' ';   
+          sscanf(gps_data,"%s %f %c %f %c %f %c %f %f %f %s",   str1,&utctime,&aval,&hokui,&ns,&tokei,&ew,&speed,&course,&utcdate,str2);      
+      //if(aval=='A')
+        {
+            //latitude
+            d_hokui = int(hokui/100);
+            m_hokui = (hokui - d_hokui*100)/60;
+            g_hokui = d_hokui + m_hokui;
+            //longitude
+            d_tokei = int(tokei/100);
+            m_tokei = (tokei - d_tokei*100)/60;
+            g_tokei=d_tokei + m_tokei;
+          
+            //time set
+            h_time = int(utctime/10000);
+            m_time = int((utctime - h_time*10000)/100);
+            s_time = int(utctime - h_time*10000 - m_time*100);
+          
+            //date set
+            d_date = int(utcdate/10000);
+            m_date = int((utcdate - d_date*10000)/100);
+            a_date = int(utcdate - d_date*10000 - m_date*100);
+          
+            pc.printf("%02d/%02d/%02d %02d:%02d:%02d %c %4.6f %4.6f %4.6f %3.3f --->%f\n",d_date,m_date,a_date,h_time,m_time,s_time,aval,g_hokui,g_tokei,speed,temp,v1);       
+            fp = fopen("/sd/alpinha2.txt", "a");
+            if (fp == NULL) 
+            {          // that it was created.
+                 pc.printf("\nnao possivel abrir o arquivo\n");;           // Return error.
+            } else {
+                        pc.printf("\n turma do curso\n");;
+                        fprintf(fp,"%2d/%2d/%2d %2d:%2d:%2d %c %4.6f %4.6f %4.6f %3.3f\r\n",d_date,m_date,a_date,h_time,m_time,s_time,aval,g_hokui,g_tokei,speed,temp);       
+                    }
+            fclose(fp);
+        }           
+          
     }
 }
+ }     
+   
+         
+ 
+    
+    
+
+