#include <BH1750.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"
#include <Adafruit_SSD1306.h>
#include "RTClib.h"
RTC_DS1307 rtc;
BH1750 lightMeter(0x23);
Adafruit_BME680 bme;
#define SEALEVELPRESSURE_HPA (1013.25)
String var, command;
char first, second, third, c_array[5];
int address = 0;
float temp, humid, press, gas, lux;
String dataType[5] = {"temp.txt","press.txt","humid.txt","gas.txt","lux.txt"};
#include <SD.h>
File myFile;
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int btn1 = 1;
int btn2 = 2;
int btn3 = 3;
int lastButtonState1 = LOW;
int lastButtonState2 = LOW;
int lastButtonState3 = LOW;
int menuVal = 0;
String menu[] = {"temp","press","humid","gas","lux"};
int val1,val2,val3;
int timeHour,timeMin,timeSec;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Starting");
//SDI-12
Serial1.begin(1200, SERIAL_7E1); //SDI-12 UART, configures serial port for 7 data bits, even parity, and 1 stop bit
pinMode(7, OUTPUT); //DIRO Pin
//DIRO Pin LOW to Send to SDI-12
digitalWrite(7, LOW);
delay(100);
Serial1.println("HelloWorld");
delay(100);
//HIGH to Receive from SDI-12
digitalWrite(7, HIGH);
Wire.begin();
lightMeter.begin();
Serial.println(F("BH1750 Test begin"));
Serial.println(F("BME680 test"));
/* if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME680 sensor, check wiring!");
while (1);
}
// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
*/
if (!SD.begin(53)) {
Serial.println("Card initialization failed!");
while (true);
}
File textFile = SD.open("data.txt");
if (textFile) {
Serial.print("data.txt: ");
while (textFile.available()) {
Serial.write(textFile.read());
}
textFile.close();
} else {
Serial.println("error opening data.txt!");
}
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3D)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
pinMode(btn3, INPUT_PULLUP);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
saveData(10.0, '+',0);saveData(0.001, '+',0);saveData(32.231, '+',0);saveData(9.87, '+',0);;saveData(11.10, '!',0);
readData();
}
void loop() {
}
void saveData(float data, char mark, int type)
{
myFile = SD.open(dataType[type], FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
myFile.println(data);
// close the file:
myFile.close();
}
myFile = SD.open("data.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (myFile) {
Serial.print("Writing to data.txt...");
myFile.println(data);
myFile.println(mark);
// close the file:
myFile.close();
}
}
void readData()
{
int i = 0;
myFile = SD.open("data.txt");
if (myFile) {
Serial.println("data.txt:");
while (myFile.available()) {
String list = myFile.readStringUntil('+');
Serial.println(list);
i += 1;
}
myFile.close();
} else {
Serial.println("error opening data.txt");
}
}
mega1:SCL
mega1:SDA
mega1:AREF
mega1:GND.1
mega1:13
mega1:12
mega1:11
mega1:10
mega1:9
mega1:8
mega1:7
mega1:6
mega1:5
mega1:4
mega1:3
mega1:2
mega1:1
mega1:0
mega1:14
mega1:15
mega1:16
mega1:17
mega1:18
mega1:19
mega1:20
mega1:21
mega1:5V.1
mega1:5V.2
mega1:22
mega1:23
mega1:24
mega1:25
mega1:26
mega1:27
mega1:28
mega1:29
mega1:30
mega1:31
mega1:32
mega1:33
mega1:34
mega1:35
mega1:36
mega1:37
mega1:38
mega1:39
mega1:40
mega1:41
mega1:42
mega1:43
mega1:44
mega1:45
mega1:46
mega1:47
mega1:48
mega1:49
mega1:50
mega1:51
mega1:52
mega1:53
mega1:GND.4
mega1:GND.5
mega1:IOREF
mega1:RESET
mega1:3.3V
mega1:5V
mega1:GND.2
mega1:GND.3
mega1:VIN
mega1:A0
mega1:A1
mega1:A2
mega1:A3
mega1:A4
mega1:A5
mega1:A6
mega1:A7
mega1:A8
mega1:A9
mega1:A10
mega1:A11
mega1:A12
mega1:A13
mega1:A14
mega1:A15
sd1:CD
sd1:DO
sd1:GND
sd1:SCK
sd1:VCC
sd1:DI
sd1:CS
ssd1:DATA
ssd1:CLK
ssd1:DC
ssd1:RST
ssd1:CS
ssd1:3V3
ssd1:VIN
ssd1:GND
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
rtc1:GND
rtc1:5V
rtc1:SDA
rtc1:SCL
rtc1:SQW