o: ActiveSupport::Cache::Entry	:@compressedF:@value"ð{"ê{
<div class="autoscroll">
<table class="filecontent">
<thead>
  <tr>
    <th colspan="3" class="filename">
      Designs/Data_loggers/GPSRL04A/SW/Datalogger/Datalogger.ino
    </th>
  </tr>
</thead>
<tbody>
<tr>
  <th class="line-num">1</th>
  <th class="line-num">1</th>
  <td class="line-code ">
    <pre>/*
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">2</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  SD card datalogger
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">3</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">4</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> This example shows how to log data from three analog sensors 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">5</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> to an SD card using the SD library.
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">2</th>
  <td class="line-code diff_in">
    <pre>  SD card datalogger GPSRL04A
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">6</th>
  <th class="line-num">3</th>
  <td class="line-code ">
    <pre> 	
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">7</th>
  <th class="line-num">4</th>
  <td class="line-code ">
    <pre> The circuit:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">8</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> * analog sensors <span>on analog ins 0, 1, and 2</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">5</th>
  <td class="line-code diff_in">
    <pre> * analog sensors <span>are connected to analog ins PC0, PC1</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">9</th>
  <th class="line-num">6</th>
  <td class="line-code ">
    <pre> * SD card attached to SPI bus as follows:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">10</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> ** MOSI - pin <span>11</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">11</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> ** MISO - pin <span>12</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">12</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> ** CLK <span>- pin 13</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">13</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> ** CS <span>- pin </span>4
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">7</th>
  <td class="line-code diff_in">
    <pre> ** MOSI - pin <span>PB3</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">8</th>
  <td class="line-code diff_in">
    <pre> ** MISO - pin <span>PB4</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">9</th>
  <td class="line-code diff_in">
    <pre> ** CLK <span> - pin PB5</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">10</th>
  <td class="line-code diff_in">
    <pre> ** CS <span>  - pin PD</span>4
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">14</th>
  <th class="line-num">11</th>
  <td class="line-code ">
    <pre> 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">15</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> created  24 Nov 2010
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">16</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> modified 9 Apr 2012
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">17</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> by Tom Igoe
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">18</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">19</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> This example code is in the public domain.
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">20</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> 	 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">21</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre> */
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">12</th>
  <td class="line-code diff_in">
    <pre>*/
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">22</th>
  <th class="line-num">13</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">23</th>
  <th class="line-num">14</th>
  <td class="line-code ">
    <pre>#include &lt;SD.h&gt;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">24</th>
  <th class="line-num">15</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">16</th>
  <td class="line-code diff_in">
    <pre>const int chipSelect = 4;     // CS is PD4
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">17</th>
  <td class="line-code diff_in">
    <pre>int LED = 5;                  // LED is conected from PD5 to LED at GPS module
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">18</th>
  <td class="line-code diff_in">
    <pre>unsigned int n = 0;           // measurement counter
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">19</th>
  <td class="line-code diff_in">
    <pre>char inChar;                  // input character from GPS
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">20</th>
  <td class="line-code diff_in">
    <pre>String dataString = &quot;&quot;;       // concantenated string with NMEA messages and measured values
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">21</th>
  <td class="line-code diff_in">
    <pre>String filename = &quot;log.csv&quot;;  // generated filename for log file
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">22</th>
  <td class="line-code diff_in">
    <pre>int coll = 0;                 // collons counter in NMEA messages
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">25</th>
  <th class="line-num">23</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">26</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>// On the Ethernet Shield, CS is pin 4. Note that even if it's not
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">27</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">28</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>// 53 on the Mega) must be left as an output or the SD library
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">29</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>// functions will not work.
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">30</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>const int chipSelect = 4;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">31</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>int led = 5;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">32</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>unsigned int n = 0;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">33</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>char inChar;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">34</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>String dataString = &quot;&quot;;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">35</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>String filename = &quot;log.csv&quot;;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">36</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>int coll = 0;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">37</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">38</th>
  <th class="line-num">24</th>
  <td class="line-code ">
    <pre>void setup()
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">39</th>
  <th class="line-num">25</th>
  <td class="line-code ">
    <pre>{
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">40</th>
  <th class="line-num">26</th>
  <td class="line-code ">
    <pre> // Open serial communications and wait for port to open:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">41</th>
  <th class="line-num">27</th>
  <td class="line-code ">
    <pre>  Serial.begin(9600);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">42</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  while (!Serial) {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">43</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>    ; // wait for serial port to connect. Needed for Leonardo only
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">44</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  }
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">28</th>
  <td class="line-code diff_in">
    <pre>  while (!Serial) {;}
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">45</th>
  <th class="line-num">29</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">46</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">47</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  Serial.print(&quot;Initializing SD card...&quot;);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">30</th>
  <td class="line-code diff_in">
    <pre>  Serial.print(&quot;Initializing SD card...&quot;);  // inserting a SD Card always reset the processor and call setup
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">48</th>
  <th class="line-num">31</th>
  <td class="line-code ">
    <pre>  // make sure that the default chip select pin is set to
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">49</th>
  <th class="line-num">32</th>
  <td class="line-code ">
    <pre>  // output, even if you don't use it:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">50</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  pinMode(10, OUTPUT);<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">51</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  pinMode(<span>led</span>, OUTPUT);     
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">33</th>
  <td class="line-code diff_in">
    <pre>  pinMode(10, OUTPUT);<span> // PB2</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">34</th>
  <td class="line-code diff_in">
    <pre>  pinMode(<span>LED</span>, OUTPUT);     
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">52</th>
  <th class="line-num">35</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">53</th>
  <th class="line-num">36</th>
  <td class="line-code ">
    <pre>  // see if the card is present and can be initialized:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">54</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  if (!SD.begin(chipSelect)) {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">37</th>
  <td class="line-code diff_in">
    <pre>  if (!SD.begin(chipSelect)) 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">38</th>
  <td class="line-code diff_in">
    <pre>  {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">55</th>
  <th class="line-num">39</th>
  <td class="line-code ">
    <pre>    Serial.println(&quot;Card failed, or not present&quot;);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">56</th>
  <th class="line-num">40</th>
  <td class="line-code ">
    <pre>    // don't do anything more:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">57</th>
  <th class="line-num">41</th>
  <td class="line-code ">
    <pre>    return;
</pre>
  </td>
</tr>
<tr class="spacing">
  <th class="line-num">...</th><th class="line-num">...</th><td></td>
</tr>
<tr>
  <th class="line-num">59</th>
  <th class="line-num">43</th>
  <td class="line-code ">
    <pre>  Serial.println(&quot;card initialized.&quot;);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">60</th>
  <th class="line-num">44</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">61</th>
  <th class="line-num">45</th>
  <td class="line-code ">
    <pre>  dataString = &quot;&quot;;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">62</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  ReadGPRMC();
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">63</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">64</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>//  filename = dataString.substring(0,5) + dataString.substring(dataString.length()-5,dataString.length()) + filename;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">46</th>
  <td class="line-code diff_in">
    <pre>  ReadGPRMC();     // read time from GPS
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">47</th>
  <td class="line-code diff_in">
    <pre>  // derive file name fom time (YYMMDDHH.CSV)
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">65</th>
  <th class="line-num">48</th>
  <td class="line-code ">
    <pre>  int len = dataString.length()-1;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">66</th>
  <th class="line-num">49</th>
  <td class="line-code ">
    <pre>  filename = dataString.substring(len-2,len) + dataString.substring(len-4,len-2) + dataString.substring(len-6,len-4) + dataString.substring(0,2) + &quot;.CSV &quot;;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">67</th>
  <th class="line-num">50</th>
  <td class="line-code ">
    <pre>}
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">68</th>
  <th class="line-num">51</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">69</th>
  <th class="line-num">52</th>
  <td class="line-code ">
    <pre>void loop()
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">70</th>
  <th class="line-num">53</th>
  <td class="line-code ">
    <pre>{ 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">71</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  dataString = &quot;&quot;;<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">72</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  ReadGPRMC();<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">54</th>
  <td class="line-code diff_in">
    <pre>  dataString = &quot;&quot;;<span>        // make a string for assembling the data to log</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">55</th>
  <td class="line-code diff_in">
    <pre>  ReadGPRMC();<span>            // read NMEA sentences from GPS</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">73</th>
  <th class="line-num">56</th>
  <td class="line-code ">
    <pre>  ReadGPGGA();
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">74</th>
  <th class="line-num">57</th>
  <td class="line-code ">
    <pre>  
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">75</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  digitalWrite(<span>led</span>, HIGH);   // turn the LED on (HIGH is the voltage level)
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">76</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  delay(20);               // wait for a <span>second</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">77</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  digitalWrite(<span>led</span>, LOW);    // turn the LED off by making the voltage LOW
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">78</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  delay(20);               // wait for a <span>second</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">58</th>
  <td class="line-code diff_in">
    <pre>  digitalWrite(<span>LED</span>, HIGH);   // turn the LED on (HIGH is the voltage level)
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">59</th>
  <td class="line-code diff_in">
    <pre>  delay(20);               // wait for a <span>while</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">60</th>
  <td class="line-code diff_in">
    <pre>  digitalWrite(<span>LED</span>, LOW);    // turn the LED off by making the voltage LOW
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">61</th>
  <td class="line-code diff_in">
    <pre>  delay(20);               // wait for a <span>while</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">79</th>
  <th class="line-num">62</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">80</th>
  <th class="line-num">63</th>
  <td class="line-code ">
    <pre>  // make a string for assembling the data to log:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">81</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>//  String dataString = &quot;&quot;;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">82</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">83</th>
  <th class="line-num">64</th>
  <td class="line-code ">
    <pre>  dataString += String(n++);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">84</th>
  <th class="line-num">65</th>
  <td class="line-code ">
    <pre>  dataString += &quot;,&quot;; 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">85</th>
  <th class="line-num">66</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">86</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  // read <span>three</span> sensors and append to the string:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">67</th>
  <td class="line-code diff_in">
    <pre>  // read <span>analog values from</span> sensors and append to the string:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">87</th>
  <th class="line-num">68</th>
  <td class="line-code ">
    <pre>  for (int analogPin = 0; analogPin &lt; 2; analogPin++) 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">88</th>
  <th class="line-num">69</th>
  <td class="line-code ">
    <pre>  {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">89</th>
  <th class="line-num">70</th>
  <td class="line-code ">
    <pre>    int sensor = analogRead(analogPin);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">90</th>
  <th class="line-num">71</th>
  <td class="line-code ">
    <pre>    dataString += String(sensor);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">91</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>    if (analogPin &lt; 1) <span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">72</th>
  <td class="line-code diff_in">
    <pre>    if (analogPin &lt; 1) <span>  // suppress last coma</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">92</th>
  <th class="line-num">73</th>
  <td class="line-code ">
    <pre>    {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">93</th>
  <th class="line-num">74</th>
  <td class="line-code ">
    <pre>      dataString += &quot;,&quot;; 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">94</th>
  <th class="line-num">75</th>
  <td class="line-code ">
    <pre>    }
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">95</th>
  <th class="line-num">76</th>
  <td class="line-code ">
    <pre>  }
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">96</th>
  <th class="line-num">77</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">78</th>
  <td class="line-code diff_in">
    <pre>  // open the file. note that only one file can be open at a time,
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">79</th>
  <td class="line-code diff_in">
    <pre>  // so you have to close this one before opening another.
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">97</th>
  <th class="line-num">80</th>
  <td class="line-code ">
    <pre>  char fileNameCharArray[filename.length()];
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">98</th>
  <th class="line-num">81</th>
  <td class="line-code ">
    <pre>  filename.toCharArray(fileNameCharArray, filename.length());
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">99</th>
  <th class="line-num">82</th>
  <td class="line-code ">
    <pre>  File dataFile = SD.open(fileNameCharArray, FILE_WRITE);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">100</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  // open the file. note that only one file can be open at a time,
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">101</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  // so you have to close this one before opening another.
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">102</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  //File dataFile = SD.open(filename, FILE_WRITE);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">103</th>
  <th class="line-num">83</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">104</th>
  <th class="line-num">84</th>
  <td class="line-code ">
    <pre>  // if the file is available, write to it:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">105</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  if (dataFile) {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">85</th>
  <td class="line-code diff_in">
    <pre>  if (dataFile) 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">86</th>
  <td class="line-code diff_in">
    <pre>  {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">106</th>
  <th class="line-num">87</th>
  <td class="line-code ">
    <pre>    dataFile.println(dataString);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">107</th>
  <th class="line-num">88</th>
  <td class="line-code ">
    <pre>    dataFile.close();
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">108</th>
  <th class="line-num">89</th>
  <td class="line-code ">
    <pre>    // print to the serial port too:
</pre>
  </td>
</tr>
<tr class="spacing">
  <th class="line-num">...</th><th class="line-num">...</th><td></td>
</tr>
<tr>
  <th class="line-num">110</th>
  <th class="line-num">91</th>
  <td class="line-code ">
    <pre>  }  
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">111</th>
  <th class="line-num">92</th>
  <td class="line-code ">
    <pre>  // if the file isn't open, pop up an error:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">112</th>
  <th class="line-num">93</th>
  <td class="line-code ">
    <pre>  else {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">113</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>    Serial.println(&quot;error opening datalog.<span>txt</span>&quot;);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">94</th>
  <td class="line-code diff_in">
    <pre>    Serial.println(&quot;error opening datalog.<span>CSV</span>&quot;);
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">114</th>
  <th class="line-num">95</th>
  <td class="line-code ">
    <pre>  } 
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">115</th>
  <th class="line-num">96</th>
  <td class="line-code ">
    <pre>}
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">116</th>
  <th class="line-num">97</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">117</th>
  <th class="line-num">98</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">99</th>
  <td class="line-code diff_in">
    <pre>// function for reading $GPRMC NMEA message
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">118</th>
  <th class="line-num">100</th>
  <td class="line-code ">
    <pre>void ReadGPRMC()
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">119</th>
  <th class="line-num">101</th>
  <td class="line-code ">
    <pre>{
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">120</th>
  <th class="line-num">102</th>
  <td class="line-code ">
    <pre>  // $GPRMC,091451.00,A,4915.64143,N,01441.50397,E,0.053,,090215,,,A*74
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">121</th>
  <th class="line-num">103</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">122</th>
  <th class="line-num">104</th>
  <td class="line-code ">
    <pre>  coll = 0;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">123</th>
  <th class="line-num">105</th>
  <td class="line-code ">
    <pre>  
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">124</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  while(1)<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">106</th>
  <td class="line-code diff_in">
    <pre>  while(1)<span>    // wait for $GPRMC</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">125</th>
  <th class="line-num">107</th>
  <td class="line-code ">
    <pre>  {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">126</th>
  <th class="line-num">108</th>
  <td class="line-code ">
    <pre>    // get incoming byte:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">127</th>
  <th class="line-num">109</th>
  <td class="line-code ">
    <pre>    while (!Serial.available());
</pre>
  </td>
</tr>
<tr class="spacing">
  <th class="line-num">...</th><th class="line-num">...</th><td></td>
</tr>
<tr>
  <th class="line-num">148</th>
  <th class="line-num">130</th>
  <td class="line-code ">
    <pre>    if (inChar == ',') coll++;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">149</th>
  <th class="line-num">131</th>
  <td class="line-code ">
    <pre>    dataString += inChar;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">150</th>
  <th class="line-num">132</th>
  <td class="line-code ">
    <pre>  }
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">151</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  while (coll &lt; 9);<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">133</th>
  <td class="line-code diff_in">
    <pre>  while (coll &lt; 9);<span>  // read only 9 coma separated values</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">152</th>
  <th class="line-num">134</th>
  <td class="line-code ">
    <pre>}
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">153</th>
  <th class="line-num">135</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">154</th>
  <th class="line-num">136</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">137</th>
  <td class="line-code diff_in">
    <pre>// function for reading $GPGGA NMEA message
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">155</th>
  <th class="line-num">138</th>
  <td class="line-code ">
    <pre>void ReadGPGGA()
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">156</th>
  <th class="line-num">139</th>
  <td class="line-code ">
    <pre>{
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">157</th>
  <th class="line-num">140</th>
  <td class="line-code ">
    <pre>  // $GPGGA,091451.00,4915.64143,N,01441.50397,E,1,09,0.90,443.2,M,44.0,M,,*50
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">158</th>
  <th class="line-num">141</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">159</th>
  <th class="line-num">142</th>
  <td class="line-code ">
    <pre>  coll = 0;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">160</th>
  <th class="line-num">143</th>
  <td class="line-code ">
    <pre>  
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">161</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  while(1)<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">144</th>
  <td class="line-code diff_in">
    <pre>  while(1)<span>  // wait for $GPGGA</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">162</th>
  <th class="line-num">145</th>
  <td class="line-code ">
    <pre>  {
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">163</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>    // get incoming byte:
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">164</th>
  <th class="line-num">146</th>
  <td class="line-code ">
    <pre>    while (!Serial.available());
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">165</th>
  <th class="line-num">147</th>
  <td class="line-code ">
    <pre>    if (Serial.read() != '$') continue;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">166</th>
  <th class="line-num">148</th>
  <td class="line-code ">
    <pre>    while (!Serial.available());
</pre>
  </td>
</tr>
<tr class="spacing">
  <th class="line-num">...</th><th class="line-num">...</th><td></td>
</tr>
<tr>
  <th class="line-num">183</th>
  <th class="line-num">165</th>
  <td class="line-code ">
    <pre>    while (!Serial.available());
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">184</th>
  <th class="line-num">166</th>
  <td class="line-code ">
    <pre>    inChar = (char)Serial.read();
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">185</th>
  <th class="line-num">167</th>
  <td class="line-code ">
    <pre>    if (inChar == ',') coll++;
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">186</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>    if (coll &gt; 4) dataString += inChar;<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">168</th>
  <td class="line-code diff_in">
    <pre>    if (coll &gt; 4) dataString += inChar;<span>  // skip first 5 coma separated values</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">187</th>
  <th class="line-num">169</th>
  <td class="line-code ">
    <pre>  }
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">188</th>
  <th class="line-num"></th>
  <td class="line-code diff_out">
    <pre>  while (coll &lt; 12);<span></span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num"></th>
  <th class="line-num">170</th>
  <td class="line-code diff_in">
    <pre>  while (coll &lt; 12);<span> // read only 7 coma separated values</span>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">189</th>
  <th class="line-num">171</th>
  <td class="line-code ">
    <pre>}
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">190</th>
  <th class="line-num">172</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
<tr>
  <th class="line-num">191</th>
  <th class="line-num">173</th>
  <td class="line-code ">
    <pre>
</pre>
  </td>
</tr>
</tbody>
</table>
</div>



:@created_atf1440399645.095207 ß:@expires_in0