Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <LiquidCrystal.h>
  3.  
  4. #define SECOND 0
  5. #define MINUTE 1
  6. #define HOUR 2
  7. #define DAY 4
  8. #define MONTH 5
  9.  
  10. #define cs 8
  11. #define alarm 9
  12.  
  13. LiquidCrystal lcd(7, 6, 2, 3, 4, 5);
  14. int TimeDate [7]; //second,minute,hour,null,day,month,year
  15. int Alarm[] = {20, 30}; //h, m alarm
  16.  
  17. void setup() {
  18. Serial.begin(9600);
  19. RTC_init();
  20. lcd.begin(16, 2);
  21. pinMode(alarm, OUTPUT);
  22. //day(1-31), month(1-12), year(0-99), hour(0-23), minute(0-59), second(0-59)
  23. // SetTimeDate(25,2,15,20,40,16);
  24. }
  25.  
  26. char temp[20];
  27. void loop() {
  28. lcd.clear();
  29. ReadTimeDate();
  30. lcd.setCursor(0, 0);
  31. sprintf(temp, "%02d:%02d:%02d %02d/%02d",TimeDate[HOUR], TimeDate[MINUTE],
  32. TimeDate[SECOND], TimeDate[MONTH], TimeDate[DAY]);
  33. lcd.println(temp);
  34. lcd.setCursor(0, 1);
  35. if(Alarm[0] == TimeDate[HOUR] && Alarm[1] == TimeDate[MINUTE]) {
  36. lcd.println("ALARM TIME");
  37. digitalWrite(alarm, HIGH);
  38. } else {
  39. lcd.println("I'M A CLOCK!! ");
  40. digitalWrite(alarm, LOW);
  41. }
  42. delay(1000);
  43.  
  44. }
  45.  
  46. int RTC_init(){
  47. pinMode(cs,OUTPUT); // chip select
  48. // start the SPI library:
  49. SPI.begin();
  50. SPI.setBitOrder(MSBFIRST);
  51. SPI.setDataMode(SPI_MODE1); // both mode 1 & 3 should work
  52. //set control register
  53. digitalWrite(cs, LOW);
  54. SPI.transfer(0x8E);
  55. SPI.transfer(0x60); //60= disable Osciallator and Battery SQ wave @1hz, temp compensation, Alarms disabled
  56. digitalWrite(cs, HIGH);
  57. delay(10);
  58. }
  59.  
  60. int SetTimeDate(int d, int mo, int y, int h, int mi, int s){
  61. int TimeDate [7]={
  62. s,mi,h,0,d,mo,y };
  63. for(int i=0; i<=6;i++){
  64. if(i==3)
  65. i++;
  66. int b= TimeDate[i]/10;
  67. int a= TimeDate[i]-b*10;
  68. if(i==2){
  69. if (b==2)
  70. b=B00000010;
  71. else if (b==1)
  72. b=B00000001;
  73. }
  74. TimeDate[i]= a+(b<<4);
  75.  
  76. digitalWrite(cs, LOW);
  77. SPI.transfer(i+0x80);
  78. SPI.transfer(TimeDate[i]);
  79. digitalWrite(cs, HIGH);
  80. }
  81. }
  82.  
  83. void ReadTimeDate(){
  84. String temp;
  85. for(int i=0; i<=6;i++){
  86. if(i==3)
  87. i++;
  88. digitalWrite(cs, LOW);
  89. SPI.transfer(i+0x00);
  90. unsigned int n = SPI.transfer(0x00);
  91. digitalWrite(cs, HIGH);
  92. int a=n & B00001111;
  93. if(i==2){
  94. int b=(n & B00110000)>>4; //24 hour mode
  95. if(b==B00000010)
  96. b=20;
  97. else if(b==B00000001)
  98. b=10;
  99. TimeDate[i]=a+b;
  100. }
  101. else if(i==4){
  102. int b=(n & B00110000)>>4;
  103. TimeDate[i]=a+b*10;
  104. }
  105. else if(i==5){
  106. int b=(n & B00010000)>>4;
  107. TimeDate[i]=a+b*10;
  108. }
  109. else if(i==6){
  110. int b=(n & B11110000)>>4;
  111. TimeDate[i]=a+b*10;
  112. }
  113. else{
  114. int b=(n & B01110000)>>4;
  115. TimeDate[i]=a+b*10;
  116. }
  117. }
  118. }
  119.  
  120. String ReadTime(){
  121. String temp;
  122. temp.concat(TimeDate[2]);
  123. temp.concat(":");
  124. temp.concat(TimeDate[1]);
  125. temp.concat(":");
  126. temp.concat(TimeDate[0]);
  127. while(temp.length() < 17)
  128. temp.concat(" ");
  129.  
  130. return temp;
  131. }
  132.  
  133. String ReadDate(){
  134. String temp;
  135. temp.concat(TimeDate[4]);
  136. temp.concat("/") ;
  137. temp.concat(TimeDate[5]);
  138. temp.concat("/") ;
  139. temp.concat(TimeDate[6]);
  140. while(temp.length() < 17)
  141. temp.concat(" ");
  142. return(temp);
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement