Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 3.45 KB | None | 0 0
  1. #include "Wire.h"
  2. #include <dht.h>
  3. #include <LiquidCrystal.h>
  4. #define DS3231_I2C_ADDRESS 0x68
  5. #define DHT22_PIN 9
  6. dht DHT;
  7. char* x = "AM";
  8. unsigned long previousTimer = 0;
  9. unsigned long previousDHT = 0;
  10. const long intervalTimer = 1000;
  11. const long intervalDHT = 2000;
  12. byte temp[8] =                     
  13. {
  14.     B00100,
  15.     B01010,
  16.     B01010,
  17.     B01110,
  18.     B01110,
  19.     B11111,
  20.     B11111,
  21.     B01110
  22. };
  23. byte drop[8] =                     
  24. {
  25.     B00100,
  26.     B00100,
  27.     B01010,
  28.     B01010,
  29.     B10001,
  30.     B10001,
  31.     B10001,
  32.     B01110,
  33. };
  34. LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
  35. byte bcdToDec(byte val)
  36. {
  37.   return( (val/16*10) + (val%16) );
  38. }
  39. void readDS3231time(byte *second,
  40.                     byte *minute,
  41.                     byte *hour,
  42.                     byte *dayOfWeek,
  43.                     byte *dayOfMonth,
  44.                     byte *month,
  45.                     byte *year)
  46. {
  47.   Wire.beginTransmission(DS3231_I2C_ADDRESS);
  48.   Wire.write(0);                    // set DS3231 register pointer to 00h
  49.   Wire.endTransmission();
  50.   Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  51.   // request seven bytes of data from DS3231 starting from register 00h
  52.   *second = bcdToDec(Wire.read() & 0x7f);
  53.   *minute = bcdToDec(Wire.read());
  54.   *hour = bcdToDec(Wire.read() & 0x3f);
  55.   *dayOfWeek = bcdToDec(Wire.read());
  56.   *dayOfMonth = bcdToDec(Wire.read());
  57.   *month = bcdToDec(Wire.read());
  58.   *year = bcdToDec(Wire.read());
  59. }
  60. void displayTime(){
  61.   byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  62.   readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  63.   lcd.setCursor(0, 1);
  64.   lcd.print("Time: ");
  65.   if (hour > 12){
  66.     hour -= 12;
  67.    if (hour == 12){
  68.       x = "PM";
  69.     }
  70.     x = "PM";
  71.   }
  72.   else if(!hour){
  73.     hour = 12;
  74.     x = "AM";
  75.   }
  76.   lcd.print(hour, DEC);
  77.   lcd.print(":");
  78.   if (minute<10)
  79.   {
  80.     lcd.print("0");
  81.   }
  82.   lcd.print(minute, DEC);
  83.   lcd.print(" ");
  84.   lcd.print(x);
  85.   lcd.setCursor(0,2);
  86.   lcd.print("Date: ");
  87.   switch(month){
  88.     case 1:
  89.       lcd.print("Jan");
  90.       break;
  91.     case 2:
  92.       lcd.print("Feb");
  93.       break;
  94.     case 3:
  95.       lcd.print("Mar");
  96.       break;
  97.     case 4:
  98.       lcd.print("Apr");
  99.       break;
  100.     case 5:
  101.       lcd.print("May");
  102.       break;
  103.     case 6:
  104.       lcd.print("Jun");
  105.       break;
  106.     case 7:
  107.       lcd.print("Jul");
  108.       break;
  109.     case 8:
  110.       lcd.print("Aug");
  111.       break;
  112.     case 9:
  113.       lcd.print("Sep");
  114.       break;
  115.     case 10:
  116.       lcd.print("Oct");
  117.       break;
  118.     case 11:
  119.       lcd.print("Nov");
  120.       break;
  121.     case 12:
  122.       lcd.print("Dec");
  123.       break;
  124.   }
  125.   lcd.print(" ");
  126.   lcd.print(dayOfMonth, DEC);
  127.   lcd.print(", ");
  128.   lcd.print(year + 2000, DEC);
  129. }
  130. void dht22(){
  131.  int chk = DHT.read22(DHT22_PIN);  
  132.  lcd.setCursor(3, 4);                  
  133.  lcd.write(1);                     
  134.  lcd.print(" ");
  135.  lcd.print(DHT.temperature, 0);            
  136.  lcd.print((char)223);
  137.  lcd.print("C ");
  138.  lcd.print(" ");
  139.  lcd.write(2);                     
  140.  lcd.print(" ");
  141.  lcd.print(DHT.humidity, 0);
  142.  lcd.print("%");
  143. }
  144. void setup()
  145. {
  146.   Wire.begin();
  147.   lcd.createChar(1,temp);              
  148.   lcd.createChar(2,drop);              
  149.   lcd.begin(20, 4);            
  150.   lcd.setCursor(2, 0);
  151.   lcd.print("Thermohygrometer");
  152. }
  153. void loop(){
  154.   unsigned long currentMillis = millis();
  155.   if (currentMillis - previousTimer >= intervalTimer) {
  156.     previousTimer = currentMillis;
  157.   displayTime();
  158.   }
  159.   if (currentMillis - previousDHT >= intervalDHT) {
  160.     previousDHT = currentMillis;
  161.   dht22();
  162.   }    
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement