Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //************libraries**************//
- #include <Wire.h>
- #include <RTClib.h>
- #include <LiquidCrystal_I2C.h>
- #include <SPI.h>
- #include <SD.h>
- //************************************//
- LiquidCrystal_I2C lcd(0x3F,2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Display I2C 16 x 2
- RTC_DS1307 RTC;
- const int lm35_pin = A1;
- const int hih5030 = A0;
- int P1=5; // Button SET MENU'
- int P2=6; // Button +
- int P3=7; // Button -
- int CS_pin = 10;
- //************variables**************//
- int hourupg;
- int minupg;
- int yearupg;
- int monthupg;
- int dayupg;
- int menu =0;
- int temp_adc_val;
- int cycle=0;
- float temp_val;
- float rhRead,rhsensorPinOut=0;
- float RH, rhvoltage, trueRH;
- void func_humidity(void);
- File sd_file;
- void setup()
- {
- lcd.begin(16,2);
- lcd.backlight();
- lcd.clear();
- pinMode(P1,INPUT);
- pinMode(P2,INPUT);
- pinMode(P3,INPUT);
- pinMode(CS_pin, OUTPUT);
- Serial.begin(9600);
- while (!Serial) {
- ; // wait for serial
- }
- Wire.begin();
- RTC.begin();
- // SD Card Initialization
- if (SD.begin()) {
- Serial.println("SD card is initialized. Ready to go");
- }
- else {
- Serial.println("Failed");
- return;
- }
- //SD test
- sd_file = SD.open("data.txt", FILE_WRITE);
- if (sd_file) {
- Serial.print("Time");
- sd_file.print("Data");
- sd_file.print(" , ");
- sd_file.print("Laikas");
- sd_file.print(" , ");
- sd_file.print("Dregme");
- sd_file.print(" , ");
- sd_file.println("Temperatura_C");
- }
- sd_file.close();
- if (! RTC.isrunning()) {
- Serial.println("RTC is NOT running!");
- // Set the date and time at compile time
- RTC.adjust(DateTime(__DATE__, __TIME__));
- }
- // RTC.adjust(DateTime(__DATE__, __TIME__)); //removing "//" to adjust the time
- // The default display shows the date and time
- int menu=0;
- }
- void loop()
- {
- cycle=cycle+1;
- if (cycle==20){
- //////////////// Hum
- func_humidity();
- //////////////// Temp
- temp();
- }
- if (cycle==20){
- sd_file = SD.open("data.txt", FILE_WRITE);
- if (sd_file) {
- senddata();
- }
- else {
- Serial.println("error opening file");
- }
- cycle=0;
- delay(500);
- }
- // check for SET button
- if(digitalRead(P1))
- {
- menu=menu+1;
- }
- if (menu==0)
- {
- DisplayDateTime(); // void DisplayDateTime
- }
- if (menu==1)
- {
- DisplaySetHour();
- }
- if (menu==2)
- {
- DisplaySetMinute();
- }
- if (menu==3)
- {
- DisplaySetYear();
- }
- if (menu==4)
- {
- DisplaySetMonth();
- }
- if (menu==5)
- {
- DisplaySetDay();
- }
- if (menu==6)
- {
- StoreAgg();
- delay(400);
- menu=0;
- }
- delay(200);
- }
- void senddata(){
- DateTime now = RTC.now();
- File sd_file = SD.open("data.txt", FILE_WRITE);
- sd_file.print(now.year(), DEC);
- yearupg=now.year();
- sd_file.print("-");
- if (now.month()<=9)
- {
- sd_file.print("0");
- }
- sd_file.print(now.month(), DEC);
- monthupg=now.month();
- sd_file.print("-");
- if (now.day()<=9)
- {
- sd_file.print("0");
- }
- sd_file.print(now.day(), DEC);
- dayupg=now.day();
- sd_file.print(" , ");
- if (now.hour()<=9)
- {
- sd_file.print("0");
- }
- sd_file.print(now.hour(), DEC);
- hourupg=now.hour();
- sd_file.print(":");
- if (now.minute()<=9)
- {
- sd_file.print("0");
- }
- sd_file.print(now.minute(), DEC);
- minupg=now.minute();
- sd_file.print(":");
- if (now.second()<=9)
- {
- sd_file.print("0");
- }
- sd_file.print(now.second(), DEC);
- sd_file.print(" , ");
- sd_file.print(trueRH,1);
- sd_file.print("%");
- sd_file.print(" , ");
- sd_file.print(temp_val, 1);
- sd_file.println("C");
- delay(500);
- sd_file.close(); //closing the file
- }
- void temp()
- {
- temp_adc_val = analogRead(lm35_pin);
- temp_val = (temp_adc_val/1024.0)*5000;
- temp_val = (temp_val/10);
- }
- void func_humidity(void)
- {
- rhRead = analogRead(hih5030);
- rhvoltage = (rhRead/512) *2.5;
- RH = ((rhvoltage/3.3)-0.1515)/0.00636;
- trueRH = (RH*1.0546)-(0.00216*temp_val);
- }
- void DisplayDateTime ()
- {
- // We show the current date and time
- DateTime now = RTC.now();
- lcd.setCursor(0, 1);
- if (now.hour()<=9)
- {
- lcd.print("0");
- }
- lcd.print(now.hour(), DEC);
- hourupg=now.hour();
- lcd.print(":");
- if (now.minute()<=9)
- {
- lcd.print("0");
- }
- lcd.print(now.minute(), DEC);
- minupg=now.minute();
- //sekundes ekrane
- //lcd.print(":");
- //if (now.second()<=9)
- //{
- // lcd.print("0");
- //}
- //lcd.print(now.second(), DEC);
- lcd.print(" ");
- lcd.print(trueRH, 1);
- lcd.print("% ");
- lcd.setCursor(0, 0);
- lcd.print(now.year(), DEC);
- yearupg=now.year();
- lcd.print("-");
- if (now.month()<=9)
- {
- lcd.print("0");
- }
- lcd.print(now.month(), DEC);
- monthupg=now.month();
- lcd.print("-");
- if (now.day()<=9)
- {
- lcd.print("0");
- }
- lcd.print(now.day(), DEC);
- dayupg=now.day();
- lcd.print(" ");
- lcd.print(temp_val, 1);
- lcd.print("C");
- }
- void DisplaySetHour()
- {
- // time setting
- lcd.clear();
- DateTime now = RTC.now();
- if(digitalRead(P2)==HIGH)
- {
- if(hourupg==23)
- {
- hourupg=0;
- }
- else
- {
- hourupg=hourupg+1;
- }
- }
- if(digitalRead(P3)==HIGH)
- {
- if(hourupg==0)
- {
- hourupg=23;
- }
- else
- {
- hourupg=hourupg-1;
- }
- }
- lcd.setCursor(0,0);
- lcd.print("Valandos:");
- lcd.setCursor(0,1);
- lcd.print(hourupg,DEC);
- delay(200);
- }
- void DisplaySetMinute()
- {
- // Setting the minutes
- lcd.clear();
- if(digitalRead(P2)==HIGH)
- {
- if (minupg==59)
- {
- minupg=0;
- }
- else
- {
- minupg=minupg+1;
- }
- }
- if(digitalRead(P3)==HIGH)
- {
- if (minupg==0)
- {
- minupg=59;
- }
- else
- {
- minupg=minupg-1;
- }
- }
- lcd.setCursor(0,0);
- lcd.print("Minutes:");
- lcd.setCursor(0,1);
- lcd.print(minupg,DEC);
- delay(200);
- }
- void DisplaySetYear()
- {
- // setting the year
- lcd.clear();
- if(digitalRead(P2)==HIGH)
- {
- yearupg=yearupg+1;
- }
- if(digitalRead(P3)==HIGH)
- {
- yearupg=yearupg-1;
- }
- lcd.setCursor(0,0);
- lcd.print("Metai:");
- lcd.setCursor(0,1);
- lcd.print(yearupg,DEC);
- delay(200);
- }
- void DisplaySetMonth()
- {
- // Setting the month
- lcd.clear();
- if(digitalRead(P2)==HIGH)
- {
- if (monthupg==12)
- {
- monthupg=1;
- }
- else
- {
- monthupg=monthupg+1;
- }
- }
- if(digitalRead(P3)==HIGH)
- {
- if (monthupg==1)
- {
- monthupg=12;
- }
- else
- {
- monthupg=monthupg-1;
- }
- }
- lcd.setCursor(0,0);
- lcd.print("Menesis:");
- lcd.setCursor(0,1);
- lcd.print(monthupg,DEC);
- delay(200);
- }
- void DisplaySetDay()
- {
- // Setting the day
- lcd.clear();
- if(digitalRead(P2)==HIGH)
- {
- if (dayupg==31)
- {
- dayupg=1;
- }
- else
- {
- dayupg=dayupg+1;
- }
- }
- if(digitalRead(P3)==HIGH)
- {
- if (dayupg==1)
- {
- dayupg=31;
- }
- else
- {
- dayupg=dayupg-1;
- }
- }
- lcd.setCursor(0,0);
- lcd.print("Diena:");
- lcd.setCursor(0,1);
- lcd.print(dayupg,DEC);
- delay(200);
- }
- void StoreAgg()
- {
- // Variable saving
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Saugomas");
- lcd.setCursor(0,1);
- lcd.print("laikas");
- RTC.adjust(DateTime(yearupg,monthupg,dayupg,hourupg,minupg,0));
- delay(200);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement