/* Sketch 1 Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://arduino.cc */ // Pin 13 has an LED connectged on most Arduino boards. // Give it a name: const int led=13; // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(led, OUTPUT); } // the loop function runs over and over again forever void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(13, HIGH); delay(1000); // wait for a second // turn the LED off by making the voltage LOW digitalWrite(13, LOW); delay(1000); // wait for a second } ---------------------- /* Sketch 2 DataTypeConversions */ void setup() { int a=67; char b='c'; String d="Arduino"; char e[]="string as an array of characters"; Serial.begin(9600); Serial.print("char to int: "); Serial.println(int(b)); Serial.print("int to char: "); Serial.println(char(a)); Serial.println(d); Serial.println(e); } void loop() { } ---------------------------- /* Sketch 3 IfTest */ void setup() { // put your setup code here, to run once: Serial.begin(9600); int x=173; float y; if (x==175) Serial.println("x is 175."); else if (x==0) Serial.println("x is 0."); else Serial.println("x is not 175."); if (x<=100) { Serial.println("x is low."); y=10.; } else if (x<=200) { Serial.println("x is OK."); y=20.; } else if (x<=300) { Serial.println("x is high."); y=30.; } else { Serial.println("Oops! x is out of range."); y=0; } } void loop() {} ------------------------ /* Sketch 4 ForLoops */ void setup() { Serial.begin(9600); int i; for (i=0; i<=10; i++) { Serial.println(i); } Serial.print("i after loop termination: "); Serial.println(i); for (i=14; i>0; i-=3) { Serial.println(i); } Serial.print("i after loop termination: "); Serial.println(i); int row,col; for (row=1; row<=10; row++) { for (col=2; col<=5; col++) { Serial.print(row*col); Serial.print(" "); } Serial.println(); } } void loop() { } ------------------------ /* Sketch 5 DoWhile */ void setup() { long i; randomSeed(3); Serial.begin(9600); while (Serial.peek()<0) { // wait for key press } do { i=random(1,100); Serial.println(i); } while (i<50); } void loop() { } ---------------------------- /* Sketch 6 SwitchTest */ void setup() { Serial.begin(9600); int x=3; switch(x) { case 1: Serial.println("x=1"); break; case 2: Serial.println("x=2"); break; case 3: Serial.println("x=3"); break; default: Serial.println("x is out of range."); } } void loop() { } --------------------------------- /* Sketch 7 FlowControl */ void setup() { Serial.begin(9600); int i; float x, threshold=100.; Serial.println("using break"); for (i=1; i<100; i++) { x=float(i)*i; if (x>threshold) break; else Serial.println(x); } Serial.println("using goto"); for (i=1; i<100; i++) { x=float(i)*i; if (x>threshold) { Serial.println("Emergency exit!"); goto bail; } else Serial.println(x); } bail: Serial.println("using continue" ); for (i=1; i<20; i++) { if ((i>3) && (i<15)) continue; Serial.println(i); } } void loop() {} --------------------------- /* Sketch 8 MathFunctions */ void setup() { float x=.5,y=4.3; Serial.begin(9600); Serial.print("PI ");Serial.println(PI,10); Serial.print("exp(x) ");Serial.println(exp(x),10); Serial.print("log(x) ");Serial.println(log(x),10); Serial.print("log10(x) ");Serial.println(log10(x),10); Serial.print("pow(x,y) ");Serial.println(pow(x,y),10); Serial.print("sq(x) ");Serial.println(sq(x)); Serial.print("square(x) ");Serial.println(square(x),10); Serial.print("hypot(x,y) ");Serial.println(hypot(x,y),10); Serial.print("sqrt(x) ");Serial.println(sqrt(x),10); Serial.print("cos(x) ");Serial.println(cos(x),10); Serial.print("sin(x) ");Serial.println(sin(x),10); Serial.print("tan(x) ");Serial.println(tan(x),10); Serial.print("acos(x) ");Serial.println(acos(x),10); Serial.print("asin(x) ");Serial.println(asin(x),10); Serial.print("atan(x) ");Serial.println(atan(x),10); Serial.print("atan2(x) ");Serial.println(atan2(x,y),10); Serial.print("cosh(x) ");Serial.println(cosh(x),10); Serial.print("sinh(x) ");Serial.println(sinh(x),10); Serial.print("tanh(x) ");Serial.println(tanh(x),10); Serial.print("fmod(x,y) ");Serial.println(fmod(x,y),10); Serial.print("fabs(x) ");Serial.println(fabs(-x),10); Serial.print("floor(x) ");Serial.println(floor(x),10); Serial.print("trunc(x) ");Serial.println(trunc(x)); Serial.print("ceil(x) ");Serial.println(ceil(x),10); Serial.print("fmin(x,y) ");Serial.println(fmin(x,y),10); Serial.print("fmax(x,y) ");Serial.println(fmax(x,y),10); Serial.print("round(x) ");Serial.println(round(y),10); Serial.print("isnan(x) ");Serial.println(isnan(x)); } void loop() { } -------------------- /* Sketch 1 Blink Turns on an LED on for one second, then off for one second, repeatedly. Most Arduinos have an on-board LED you can control. On the Uno and Leonardo, it is attached to digital pin 13. If you're unsure what pin the on-board LED is connected to on your Arduino model, check the documentation at http://arduino.cc */ // Pin 13 has an LED connectged on most Arduino boards. // Give it a name: const int led=13; // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(led, OUTPUT); } // the loop function runs over and over again forever void loop() { // turn the LED on (HIGH is the voltage level) digitalWrite(13, HIGH); delay(1000); // wait for a second // turn the LED off by making the voltage LOW digitalWrite(13, LOW); delay(1000); // wait for a second } ---------------------- /* Sketch 2 DataTypeConversions */ void setup() { int a=67; char b='c'; String d="Arduino"; char e[]="string as an array of characters"; Serial.begin(9600); Serial.print("char to int: "); Serial.println(int(b)); Serial.print("int to char: "); Serial.println(char(a)); Serial.println(d); Serial.println(e); } void loop() { } ---------------------------- /* Sketch 3 IfTest */ void setup() { // put your setup code here, to run once: Serial.begin(9600); int x=173; float y; if (x==175) Serial.println("x is 175."); else if (x==0) Serial.println("x is 0."); else Serial.println("x is not 175."); if (x<=100) { Serial.println("x is low."); y=10.; } else if (x<=200) { Serial.println("x is OK."); y=20.; } else if (x<=300) { Serial.println("x is high."); y=30.; } else { Serial.println("Oops! x is out of range."); y=0; } } void loop() {} ------------------------ /* Sketch 4 ForLoops */ void setup() { Serial.begin(9600); int i; for (i=0; i<=10; i++) { Serial.println(i); } Serial.print("i after loop termination: "); Serial.println(i); for (i=14; i>0; i-=3) { Serial.println(i); } Serial.print("i after loop termination: "); Serial.println(i); int row,col; for (row=1; row<=10; row++) { for (col=2; col<=5; col++) { Serial.print(row*col); Serial.print(" "); } Serial.println(); } } void loop() { } ------------------------ /* Sketch 5 DoWhile */ void setup() { long i; randomSeed(3); Serial.begin(9600); while (Serial.peek()<0) { // wait for key press } do { i=random(1,100); Serial.println(i); } while (i<50); } void loop() { } ---------------------------- /* Sketch 6 SwitchTest */ void setup() { Serial.begin(9600); int x=3; switch(x) { case 1: Serial.println("x=1"); break; case 2: Serial.println("x=2"); break; case 3: Serial.println("x=3"); break; default: Serial.println("x is out of range."); } } void loop() { } --------------------------------- /* Sketch 7 FlowControl */ void setup() { Serial.begin(9600); int i; float x, threshold=100.; Serial.println("using break"); for (i=1; i<100; i++) { x=float(i)*i; if (x>threshold) break; else Serial.println(x); } Serial.println("using goto"); for (i=1; i<100; i++) { x=float(i)*i; if (x>threshold) { Serial.println("Emergency exit!"); goto bail; } else Serial.println(x); } bail: Serial.println("using continue" ); for (i=1; i<20; i++) { if ((i>3) && (i<15)) continue; Serial.println(i); } } void loop() {} --------------------------- /* Sketch 8 MathFunctions */ void setup() { float x=.5,y=4.3; Serial.begin(9600); Serial.print("PI ");Serial.println(PI,10); Serial.print("exp(x) ");Serial.println(exp(x),10); Serial.print("log(x) ");Serial.println(log(x),10); Serial.print("log10(x) ");Serial.println(log10(x),10); Serial.print("pow(x,y) ");Serial.println(pow(x,y),10); Serial.print("sq(x) ");Serial.println(sq(x)); Serial.print("square(x) ");Serial.println(square(x),10); Serial.print("hypot(x,y) ");Serial.println(hypot(x,y),10); Serial.print("sqrt(x) ");Serial.println(sqrt(x),10); Serial.print("cos(x) ");Serial.println(cos(x),10); Serial.print("sin(x) ");Serial.println(sin(x),10); Serial.print("tan(x) ");Serial.println(tan(x),10); Serial.print("acos(x) ");Serial.println(acos(x),10); Serial.print("asin(x) ");Serial.println(asin(x),10); Serial.print("atan(x) ");Serial.println(atan(x),10); Serial.print("atan2(x) ");Serial.println(atan2(x,y),10); Serial.print("cosh(x) ");Serial.println(cosh(x),10); Serial.print("sinh(x) ");Serial.println(sinh(x),10); Serial.print("tanh(x) ");Serial.println(tanh(x),10); Serial.print("fmod(x,y) ");Serial.println(fmod(x,y),10); Serial.print("fabs(x) ");Serial.println(fabs(-x),10); Serial.print("floor(x) ");Serial.println(floor(x),10); Serial.print("trunc(x) ");Serial.println(trunc(x)); Serial.print("ceil(x) ");Serial.println(ceil(x),10); Serial.print("fmin(x,y) ");Serial.println(fmin(x,y),10); Serial.print("fmax(x,y) ");Serial.println(fmax(x,y),10); Serial.print("round(x) ");Serial.println(round(y),10); Serial.print("isnan(x) ");Serial.println(isnan(x)); } void loop() { } -------------------- /* Sketch 9 Statistics */ void setup() { const int ARRAY_SIZE=10; int i; // for loop counter float x[ARRAY_SIZE]={0.5,.77,1.3,.8,.99,0.53,.62,.55,.81,1.1}; float sum_x=0.,std_dev,sum_xx=0.; for (i=0; i #include RTC_DS1307 rtc; void setup () { Serial.begin(9600); Wire.begin(); rtc.begin(); // Set the RTC to the date & time this sketch was compiled. // A new clock may not run until the rtc.adjust() method is run. rtc.adjust(DateTime(__DATE__, __TIME__)); if (! rtc.isrunning()) { Serial.println("RTC is NOT running!"); } } void loop () { DateTime now = rtc.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days and 30 seconds into the future. DateTime future (now.unixtime() + 7 * 86400L + 30); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); delay(3000); } -------------------- /* Sketch 18 SDWriteTime2 */ #include #include #include #include #define ECHO_TO_FILE 0 RTC_DS1307 RTC; // Define real time clock object. File logfile; // the logging file int t,delay_t=1000,dt=5; const int chipSelect=10; void setup() { Serial.begin(9600); pinMode(10,OUTPUT); #if ECHO_TO_FILE Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } else { Serial.println("card initialized."); char filename[]="SDWrite.csv"; logfile=SD.open(filename,FILE_WRITE); if (!logfile) {Serial.println("Could not create file."); return; } else {Serial.print("Logging to: "); Serial.println(filename); } } #endif // ECHO_TO_FILE Wire.begin(); RTC.begin(); } void loop() { DateTime now; now=RTC.now(); t=now.second(); if ((t%dt)==0) { Serial.print(now.year()); Serial.print('/'); Serial.print(now.month()); Serial.print('/'); Serial.print(now.day()); Serial.print(' '); Serial.print(now.hour()); Serial.print(':'); Serial.print(now.minute()); Serial.print(':'); Serial.print(t); Serial.println(); #if ECHO_TO_FILE logfile.print(now.year()); logfile.print(','); logfile.print(now.month()); logfile.print(','); logfile.print(now.day()); logfile.print(','); logfile.print(now.hour()); logfile.print(','); logfile.print(now.minute()); logfile.print(','); logfile.print(now.second()); logfile.println(); logfile.flush(); // write to file #endif // ECHO_TO_FILE } delay(delay_t); } ------------------ /* Sketch 19 MyLightTempLogger */ #include #include #include #include #define ECHO_TO_FILE 0 #define ECHO_TO_SERIAL 1 File logfile; // the logging file int Second,delay_t=1000,dt=5; int tempReading, photocellReading,Year,Month,Day,Hour,Minute; float temperatureC; const float aref_voltage=3.3; const int photocellPin=0,tempPin=1,chipSelect=10; RTC_DS1307 RTC; // Define real time clock object. void setup() { Serial.begin(9600); pinMode(10,OUTPUT); #if ECHO_TO_SERIAL Serial.println("Write to serial port."); Serial.println("year,month,day,hour,minute,second,day_frac,light,T_C"); #endif // ECHO_TO_SERIAL #if ECHO_TO_FILE Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } else { Serial.println("card initialized."); } char filename[]="TEMPLITE.csv"; logfile=SD.open(filename,FILE_WRITE); if (!logfile) {Serial.println("Could not create file."); return; } else {Serial.print("Logging to: "); Serial.println(filename); } logfile.println("year,month,day,hour,minute,second,day_frac,light,T_C"); #endif // ECHO_TO_FILE Wire.begin(); RTC.begin(); analogReference(EXTERNAL); } void loop() { DateTime now=RTC.now(); Year=now.year(); Month=now.month(); Day=now.day(); Hour=now.hour(); Minute=now.minute(); Second=now.second(); if ((Second%dt)==0) { photocellReading=analogRead(photocellPin); delay(10); tempReading=analogRead(tempPin); delay(10); temperatureC = (tempReading*aref_voltage/1024 - 0.5)*100; #if ECHO_TO_SERIAL Serial.print(Year); Serial.print('/'); Serial.print(Month); Serial.print('/'); Serial.print(Day); Serial.print(' '); Serial.print(Hour); Serial.print(':'); Serial.print(Minute); Serial.print(':'); Serial.print(Second); Serial.print(' '); Serial.print(Day+Hour/24.+Minute/1440.+Second/86400.,5); Serial.print(' '); Serial.print(photocellReading); Serial.print(' '); Serial.print(temperatureC,2); Serial.println(); #endif // ECHO_TO_SERIAL #if ECHO_TO_FILE logfile.print(Year); logfile.print(','); logfile.print(Month); logfile.print(','); logfile.print(Day); logfile.print(','); logfile.print(Hour); logfile.print(','); logfile.print(Minute); logfile.print(','); logfile.print(Second); logfile.print(','); logfile.print(Day+Hour/24.+Minute/1440.+Second/86400.,5); logfile.print(','); logfile.print(photocellReading); logfile.print(','); logfile.print(temperatureC,2); logfile.println(); logfile.flush(); // write to file #endif // ECHO_TO_FILE } delay(delay_t); } --------------- /* Sketch 20 ReadConfigurationFile */ #include #include #include // What's in CONFIG.TXT: [int],[int],[float],XXXXXXXX.XXX File myFile; char c,fileName[]="CONFIG.TXT"; int x,y; float z; String outFile; void setup() { Serial.begin(9600); Serial.println("Initializing SD card..."); pinMode(10, OUTPUT); if (!SD.begin(10)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); myFile=SD.open(fileName); if (myFile) { x=myFile.parseInt(); Serial.println(x); y=myFile.parseInt(); Serial.println(y); z=myFile.parseFloat(); Serial.println(z,3); myFile.read(); // skip past the comma while (myFile.available()){ delay(10); if (myFile.available() > 0) { c=myFile.read(); outFile += c; } } outFile.trim(); // strips off white space Serial.println(outFile); Serial.print("length "); Serial.println(outFile.length()); myFile.close(); } else { Serial.println("error opening data file"); } } void loop() { } ------------------------ /* Sketch 21 ReadConfigurationSerial Read program configuration parameters from serial port. Data entry format: [int],[int],[float],XXXXXXXX.XXX */ char c,fileName[13]; // 8-char file name+extension+null int n=0; // index into outFile. int x,y; float z; void setup() { Serial.begin(9600); while (Serial.peek()<0) { } x=Serial.parseInt(); Serial.read(); y=Serial.parseInt(); Serial.read(); z=Serial.parseFloat(); Serial.read(); // get past comma before string delay(10); // Code won't work without this delay. while (Serial.available()) { delay(10); c=Serial.read(); fileName[n]=c; n++; } fileName[n]='\0'; //Serial.readBytes(fileName,12); //fileName[13]='\0'; Serial.println(x); Serial.println(y); Serial.println(z,3); Serial.println(fileName); } void loop() { } ------------------ /* Sketch 22 MyLightTemperatureLoggerB */ #include #include #include #include #define ECHO_TO_FILE 0 #define ECHO_TO_SERIAL 1 // input // [int]dt,[char]m or c,[12-char file name]xxxxxxxx.xxx // example: 5,s,logfile1.csv // Minimum sampling interval, 2s File logfile; // the logging file int Second,delay_t=1000,dt; char intervalType, outFile[13]; int tempReading, photocellReading,Year,Month,Day,Hour,Minute; float temperatureC; const float aref_voltage=3.3; const int photocellPin=0,tempPin=1,chipSelect=10; RTC_DS1307 RTC; // Define real time clock object. void getConfiguration() { char c; int n=0; while (Serial.peek()<0) {} dt=Serial.parseInt(); delay(10); Serial.read(); intervalType=Serial.read(); delay(10); Serial.read(); while (Serial.available()) { delay(10); if (Serial.available()>0) { c=Serial.read(); outFile[n]=c; n++; } } outFile[n]='\0'; } void dataOutput() { photocellReading=analogRead(photocellPin); delay(10); tempReading=analogRead(tempPin); delay(10); temperatureC = (tempReading*aref_voltage/1024 - 0.5)*100; #if ECHO_TO_SERIAL Serial.print(Year); Serial.print('/'); Serial.print(Month); Serial.print('/'); Serial.print(Day); Serial.print(' '); Serial.print(Hour); Serial.print(':'); Serial.print(Minute); Serial.print(':'); Serial.print(Second); Serial.print(' '); Serial.print(Day+Hour/24.+Minute/1440.+Second/86400.,5); Serial.print(' '); Serial.print(photocellReading); Serial.print(' '); Serial.print(temperatureC,2); Serial.println(); #endif // ECHO_TO_SERIAL #if ECHO_TO_FILE logfile.print(Year); logfile.print(','); logfile.print(Month); logfile.print(','); logfile.print(Day); logfile.print(','); logfile.print(Hour); logfile.print(','); logfile.print(Minute); logfile.print(','); logfile.print(Second); logfile.print(','); logfile.print(Day+Hour/24.+Minute/1440.+Second/86400.,5); logfile.print(','); logfile.print(photocellReading); logfile.print(','); logfile.print(temperatureC,2); logfile.println(); logfile.flush(); // write to file #endif // ECHO_TO_FILE } void setup() { Serial.begin(9600); getConfiguration(); Serial.print("logging interval: ");Serial.print(dt); Serial.println(intervalType); if ((intervalType=='s') && (dt<2)) Serial.print("Configuration error. Restart!"); Serial.print("Log to file: "); Serial.println(outFile); pinMode(10,OUTPUT); #if ECHO_TO_SERIAL Serial.println("Write to serial port."); Serial.println("year,month,day,hour,minute,second,day_frac,light,T_C"); #endif // ECHO_TO_SERIAL #if ECHO_TO_FILE Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } else { Serial.println("card initialized."); } logfile=SD.open(outFile,FILE_WRITE); if (!logfile) {Serial.println("Could not create file."); return; } else {Serial.print("Logging to: "); Serial.println(outFile); } logfile.println("year,month,day,hour,minute,second,day_frac,light,T_C"); #endif // ECHO_TO_FILE Wire.begin(); RTC.begin(); analogReference(EXTERNAL); } void loop() { DateTime now=RTC.now(); Year=now.year(); Month=now.month(); Day=now.day(); Hour=now.hour(); Minute=now.minute(); Second=now.second(); if (intervalType=='s') { if ((Second%dt)==0) dataOutput(); } if (intervalType=='m') { if ((Minute%dt==0) && (Second==0)) dataOutput(); } delay(delay_t); // Don't process the same second twice! } ------------------------- /* Sketch 23 MyLightTempLoggerC */ #include #include #include #include #define ECHO_TO_FILE 1 #define ECHO_TO_SERIAL 0 // input [int]dt,[char]m or s,[int]dtSave,XXXXXXXX.CSV // example: 10,s,5,logfile1.csv // global variables float sumX=0,sumY=0,sumXX=0,sumYY=0; float maxTemperature=-100,minTemperature=150,maxPhotocell=0,minPhotocell=1023; int N,KNT=0; File logfile; // the logging file int Second,delay_t=1000,dt,dtSave; char intervalType,outFile[13]; int tempReading, photocellReading,Year,Month,Day,Hour,Minute; float temperatureC; const float aref_voltage=3.3; const int photocellPin=0,tempPin=1,chipSelect=10; RTC_DS1307 RTC; // Define real time clock object. // Read configuration parameters from serial port. void getConfiguration() { char c; int n=0; while (Serial.peek()<0) {} dt=Serial.parseInt(); delay(10); Serial.read(); delay(10); intervalType=Serial.read(); delay(10); Serial.read(); delay(10); dtSave=Serial.parseInt(); delay(10); Serial.read(); while (Serial.available()) { delay(10); if (Serial.available()>0) { c=Serial.read(); outFile[n]=c; n++; } } outFile[n]='\0'; N=dtSave*60/dt; } // // Get data and display or log it. void dataOutput(int N) { float std_devX,meanX,std_devY,meanY,day_frac,a; photocellReading=analogRead(photocellPin); delay(10); tempReading=analogRead(tempPin); delay(10); temperatureC = (tempReading*aref_voltage/1023 - 0.5)*100; sumX+=temperatureC; sumXX+=temperatureC*temperatureC; // (float) the square of the photocell reading to avoid integer overflow. sumY+=photocellReading; sumYY+=photocellReading*(float)photocellReading; KNT++; if (temperatureC>maxTemperature) maxTemperature=temperatureC; if (temperatureCmaxPhotocell) maxPhotocell=photocellReading; if (photocellReading #include #include #include #include #define ECHO_TO_FILE 0 #define ECHO_TO_SERIAL 1 Adafruit_ADS1115 ads1115; File logfile; // the logging file int Second,delay_t=1000,dt,chipSelect=10,gain; char intervalType, outFile[13]; int Year,Month,Day,Hour,Minute; float DtoA; RTC_DS1307 RTC; // Define real time clock object. void getConfiguration() { char c; int n=0; while (Serial.peek()<0) {} dt=Serial.parseInt(); delay(10); Serial.read(); intervalType=Serial.read(); delay(10); Serial.read(); gain=Serial.parseInt(); delay(10); Serial.read(); while (Serial.available()) { delay(10); if (Serial.available()>0) { c=Serial.read(); outFile[n]=c; n++; } } outFile[n]='\0'; } void dataOutput() { int16_t adc0,adc1,adc2,adc3; adc0 = ads1115.readADC_SingleEnded(0); adc1 = ads1115.readADC_SingleEnded(1); adc2 = ads1115.readADC_SingleEnded(2); adc3 = ads1115.readADC_SingleEnded(3); #if ECHO_TO_SERIAL Serial.print(Year); Serial.print('/'); Serial.print(Month); Serial.print('/'); Serial.print(Day); Serial.print(' '); Serial.print(Hour); Serial.print(':'); Serial.print(Minute); Serial.print(':'); Serial.print(Second); Serial.print(' '); Serial.print(Day+Hour/24.+Minute/1440.+Second/86400.,5); Serial.print(' '); Serial.print(adc0); Serial.print(' '); Serial.print(adc1); Serial.print(' '); Serial.print(adc2); Serial.print(' '); Serial.print(adc3); Serial.println(); #endif // ECHO_TO_SERIAL #if ECHO_TO_FILE logfile.print(Year); logfile.print(','); logfile.print(Month); logfile.print(','); logfile.print(Day); logfile.print(','); logfile.print(Hour); logfile.print(','); logfile.print(Minute); logfile.print(','); logfile.print(Second); logfile.print(','); logfile.print(Day+Hour/24.+Minute/1440.+Second/86400.,5); logfile.print(','); logfile.print(adc0); logfile.print(','); logfile.print(adc1); logfile.print(','); logfile.print(adc2); logfile.print(','); logfile.print(adc3); logfile.println(); logfile.flush(); // write to file #endif // ECHO_TO_FILE } void setup() { Serial.begin(9600); getConfiguration(); Serial.print("logging interval: ");Serial.print(dt); Serial.println(intervalType); Serial.print("Log to file: "); Serial.println(outFile); pinMode(10,OUTPUT); #if ECHO_TO_SERIAL Serial.print("ADS gain setting = "); Serial.println(gain); Serial.println("Write to serial port."); Serial.println("year,month,day,hour,minute,second,day_frac,A0,A1,A2,A3"); #endif // ECHO_TO_SERIAL #if ECHO_TO_FILE Serial.print("Initializing SD card..."); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } else { Serial.println("card initialized."); } logfile=SD.open(outFile,FILE_WRITE); if (!logfile) {Serial.println("Could not create file."); return; } else {Serial.print("Logging to: "); Serial.println(outFile); } logfile.println("year,month,day,hour,minute,second,day_frac,light,T_C"); #endif // ECHO_TO_FILE Wire.begin(); RTC.begin(); ads1115.begin(); Serial.print("Gain setting = "); switch(gain) { case 1: {ads1115.setGain(GAIN_ONE); DtoA=4.096/32768; Serial.println("GAIN_ONE"); break;} case 2: {ads1115.setGain(GAIN_TWO); DtoA=2.048/32768; Serial.println("GAIN_TWO"); break;} case 3: {ads1115.setGain(GAIN_TWOTHIRDS); DtoA=6.144/32768; Serial.println("GAIN_TWOTHIRDS"); break;} case 4: {ads1115.setGain(GAIN_FOUR); DtoA=1.024/32768; Serial.println("GAIN_FOUR"); break;} case 8: {ads1115.setGain(GAIN_EIGHT); DtoA=0.512/32768; Serial.println("GAIN_EIGHT"); break;} case 16: {ads1115.setGain(GAIN_SIXTEEN); DtoA=0.256/32768; Serial.println("GAIN_SIXTEEN"); break;} default: {Serial.println("Oops... no such gain setting!"); return; } } } void loop() { DateTime now=RTC.now(); Year=now.year(); Month=now.month(); Day=now.day(); Hour=now.hour(); Minute=now.minute(); Second=now.second(); if (intervalType=='s') { if ((Second%dt)==0) dataOutput(); } if (intervalType=='m') { if ((Minute%dt==0) && (Second==0)) dataOutput(); } delay(delay_t); } -------------------------- /* Sketch 25 HiResDataLoggerB */ // Format for serial port window input: // [int]dt,[char]m or s,[int]dtSave (1-60), // [int]gain 1,2,3 (for 2/3),4,8, or 16,[string]xxxxxxxx.xxx #include #include #include #include #include #define ECHO_TO_FILE 0 #define ECHO_TO_SERIAL 1 Adafruit_ADS1115 ads1115; float max0=-100.,min0=100.,max1=-100.,min1=100.; float max2=-100.,min2=100.,max3=-100.,min3=100.; float sumX0=0.,sumXX0=0.,sumX1=0.,sumXX1=0.,sumX2=0.; float sumXX2=0.,sumX3=0.,sumXX3=0.; float std_dev0,mean0,std_dev1,mean1,std_dev2,mean2,std_dev3,mean3; float adc0,adc1,adc2,adc3; float DtoA,dayFrac; File logfile; // the logging file int N,KNT=0; int delay_t=1000,dt,dtSave,chipSelect=10,gain; int Year,Month,Day,Hour,Minute,Second; char intervalType, outFile[13]; RTC_DS1307 RTC; // Define real time clock object. void getConfiguration() { char c; int n=0; while (Serial.peek()<0) {} dt=Serial.parseInt(); delay(10); Serial.read(); intervalType=Serial.read(); delay(10); dtSave=Serial.parseInt(); delay(10); Serial.read(); gain=Serial.parseInt(); delay(10); Serial.read(); while (Serial.available()) { delay(10); if (Serial.available()>0) { c=Serial.read(); outFile[n]=c; n++; } } outFile[n]='\0'; if (intervalType=='s') N=dtSave*60/dt; else N=dtSave/dt; } void dataOutput() { adc0 = DtoA*ads1115.readADC_SingleEnded(0); sumX0+=adc0; sumXX0+=adc0*adc0; adc1 = DtoA*ads1115.readADC_SingleEnded(1); sumX1+=adc1; sumXX1+=adc1*adc1; adc2 = DtoA*ads1115.readADC_SingleEnded(2); sumX2+=adc2; sumXX2+=adc2*adc2; adc3 = DtoA*ads1115.readADC_SingleEnded(3); sumX3+=adc3; sumXX3+=adc3*adc3; KNT++; if (adc0>max0) max0=adc0; if (adc0max1) max1=adc1; if (adc1max2) max2=adc2; if (adc2max3) max3=adc3; if (adc3