| Line 4... | Line 4... | 
      
        | 4 |  * analog sensors on analog ins PC0, PC1, and PC2 | 4 |  * analog sensors on analog ins PC0, PC1, and PC2 | 
      
        | 5 |  * SD card attached to SPI bus as follows: | 5 |  * SD card attached to SPI bus as follows: | 
      
        | 6 |  ** MOSI/CMD - PB3 | 6 |  ** MOSI/CMD - PB3 | 
      
        | 7 |  ** MISO/DAT0 - PB4 | 7 |  ** MISO/DAT0 - PB4 | 
      
        | 8 |  ** CLK - PB5 | 8 |  ** CLK - PB5 | 
      
        | 9 |  ** CS/CD/DAT3 - PB2 (10) | 9 |  ** CS/CD/DAT3 - PD4 (4) | 
      
        | - |  | 10 |   | 
      
        | - |  | 11 |  I2C pins PC4, PC5 | 
      
        | 10 |  	  | 12 |  	  | 
      
        | 11 | */ | 13 | */ | 
      
        | 12 |   | 14 |   | 
      
        | 13 | #include <Wire.h> | 15 | #include  <Wire.h> | 
      
        | 14 | #include  <math.h> | 16 | #include  <math.h> | 
      
        | - |  | 17 | #include  <stdlib.h> | 
      
        | 15 | #include <SD.h> | 18 | #include  <SD.h> | 
      
        | 16 |   | 19 |   | 
      
        | 17 | #define chipSelect  10 | 20 | #define chipSelect  4 | 
      
        | 18 |   | 21 |   | 
      
        | 19 |   | 22 |   | 
      
        | 20 | #define address 0x44 // A0 = L | 23 | #define address 0x44 // A0 = L | 
      
        | 21 | #define SENSE_VIS 0 | 24 | #define SENSE_VIS 0 | 
      
        | 22 | #define SENSE_IR  1 | 25 | #define SENSE_IR  1 | 
      
        | Line 30... | Line 33... | 
      
        | 30 | int count=0; | 33 | int count=0; | 
      
        | 31 |   | 34 |   | 
      
        | 32 | void setup() | 35 | void setup() | 
      
        | 33 | { | 36 | { | 
      
        | 34 |   Wire.begin(); // join i2c bus (address optional for master) | 37 |   Wire.begin(); // join i2c bus (address optional for master) | 
      
        | 35 |   // I2C pins PD4, PD5 | - |  | 
      
        | 36 |   // | 38 |   | 
      
        | 37 |   pinMode(3, OUTPUT);  // LED pro blikani, aby bylo videt, ze to neco dela | 39 |   pinMode(3, OUTPUT);  // LED pro blikani, aby bylo videt, ze to neco dela | 
      
        | 38 |   pinMode(5, OUTPUT);  // LED pro blikani, aby bylo videt, ze to neco dela | 40 |   pinMode(5, OUTPUT);  // LED pro blikani, aby bylo videt, ze to neco dela | 
      
        | 39 |   Serial.begin(9600);  // Zmerena intenzita osvetleni se bude vypisovat na seriovou linku | 41 |   Serial.begin(9600);  // Zmerena intenzita osvetleni se bude vypisovat na seriovou linku | 
      
        | 40 |    | 42 |    | 
      
        | 41 |   Serial.print("Initializing SD card..."); | 43 |   Serial.print("Initializing SD card..."); | 
      
        | Line 138... | Line 140... | 
      
        | 138 |    Wire.endTransmission();     // stop transmitting | 140 |    Wire.endTransmission();     // stop transmitting | 
      
        | 139 |   | 141 |   | 
      
        | 140 |    return (1000.0/pow(2.0,16)*ret); | 142 |    return (1000.0/pow(2.0,16)*ret); | 
      
        | 141 | } | 143 | } | 
      
        | 142 |   | 144 |   | 
      
        | - |  | 145 | char *ftoa(char *a, double f, int precision) | 
      
        | - |  | 146 | { | 
      
        | - |  | 147 |   long p[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000}; | 
      
        | - |  | 148 |    | 
      
        | - |  | 149 |   char *ret = a; | 
      
        | - |  | 150 |   long heiltal = (long)f; | 
      
        | - |  | 151 |   itoa(heiltal, a, 10); | 
      
        | - |  | 152 |   while (*a != '\0') a++; | 
      
        | - |  | 153 |   *a++ = '.'; | 
      
        | - |  | 154 |   long desimal = abs((long)((f - heiltal) * p[precision])); | 
      
        | - |  | 155 |   itoa(desimal, a, 10); | 
      
        | - |  | 156 |   return ret; | 
      
        | - |  | 157 | } | 
      
        | - |  | 158 |   | 
      
        | 143 | void loop() | 159 | void loop() | 
      
        | 144 | { | 160 | { | 
      
        | 145 | float luxVIS=0; | 161 | float luxVIS=0; | 
      
        | 146 | float luxIR=0; | 162 | float luxIR=0; | 
      
        | 147 |   | 163 |   | 
      
        | - |  | 164 | char dataString[40]; | 
      
        | - |  | 165 | char luxVISch[10]; | 
      
        | - |  | 166 | char luxIRch[10]; | 
      
        | - |  | 167 |   | 
      
        | 148 |    set_light_sensor(SENSE_VIS);  //setup sensor for visible measuring | 168 |    set_light_sensor(SENSE_VIS);  //setup sensor for visible measuring | 
      
        | 149 |    led_blink();    // Delay for measurement | 169 |    led_blink();    // Delay for measurement | 
      
        | 150 |    luxVIS=get_light_measurement(); | 170 |    luxVIS=get_light_measurement(); | 
      
        | 151 |   | 171 |   | 
      
        | 152 |    set_light_sensor(SENSE_IR);  // setup sensor for infrared measuring | 172 |    set_light_sensor(SENSE_IR);  // setup sensor for infrared measuring | 
      
        | 153 |    led_blink(); // Delay for measurement | 173 |    led_blink(); // Delay for measurement | 
      
        | 154 |    luxIR=get_light_measurement(); | 174 |    luxIR=get_light_measurement(); | 
      
        | 155 |   | 175 |   | 
      
        | - |  | 176 |   ftoa(luxVISch,luxVIS,2); | 
      
        | - |  | 177 |   ftoa(luxIRch,luxIR,2); | 
      
        | 156 |   // make a string for assembling the data to log: | 178 |   // make a string for assembling the data to log: | 
      
        | 157 |   String dataString = "$LOG"; | - |  | 
      
        | 158 |   dataString += String((int)count); // print number of measurement | 179 |   sprintf(dataString,"$LUX01 %d %s %s",count, luxVISch, luxIRch); | 
      
        | 159 |   dataString += ","; | - |  | 
      
        | 160 |   dataString += String((int)luxVIS, DEC); // print number of measurement | - |  | 
      
        | 161 |   dataString += ","; | - |  | 
      
        | 162 |   dataString += String((int)luxIR, DEC); // print number of measurement | - |  | 
      
        | 163 |   | 180 |   | 
      
        | 164 |   // open the file. note that only one file can be open at a time, | 181 |   // open the file. note that only one file can be open at a time, | 
      
        | 165 |   // so you have to close this one before opening another. | 182 |   // so you have to close this one before opening another. | 
      
        | 166 |   File dataFile = SD.open("datalog.txt", FILE_WRITE); | 183 |   File dataFile = SD.open("datalog.txt", FILE_WRITE); | 
      
        | 167 |   | 184 |   | 
      
        | 168 |   // if the file is available, write to it: | 185 |   // if the file is available, write to it: | 
      
        | 169 |   if (dataFile) { | 186 |   if (dataFile) { | 
      
        | 170 |     dataFile.println(dataString); | 187 |     dataFile.println(dataString); | 
      
        | 171 |     dataFile.close(); | 188 |     dataFile.close(); | 
      
        | 172 |     // print to the serial port too: | 189 |     // print to the serial port too: | 
      
        | - |  | 190 |     Serial.print(luxVIS,3); | 
      
        | - |  | 191 |     Serial.print(" "); | 
      
        | - |  | 192 |     Serial.println(luxIR,3); | 
      
        | 173 |     Serial.println(dataString); | 193 |     Serial.println(dataString); | 
      
        | 174 |     count++; | 194 |     count++; | 
      
        | 175 |   }   | 195 |   }   | 
      
        | 176 |   // if the file isn't open, pop up an error: | 196 |   // if the file isn't open, pop up an error: | 
      
        | 177 |   else { | 197 |   else { |