Advertisement
Guest User

Untitled

a guest
Jul 14th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
IO 3.89 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <RTClib.h>
  4.  
  5. define BACKLIGHT 2
  6. define CONTRAST 3
  7.  
  8. define SET A0
  9. define PIU A1
  10. define MENO A2
  11.  
  12. char buffer[10];
  13. unsigned long time=0;
  14. unsigned long timeSet=0;
  15. int setModeTime=2000;
  16.  
  17. RTC_DS1307 RTC; //
  18. LiquidCrystal_I2C lcd(0x27,16,2); // LCD ID 0x27_display_16X2
  19. DateTime now;
  20. const int relay1Pin = 2;
  21. int relay1PinState = HIGH;
  22.  
  23. void setup() {
  24. lcd.init(); // initialize the lcd
  25. lcd.backlight();
  26. Wire.begin();
  27. pinMode( relay1Pin, OUTPUT);
  28. pinMode( BACKLIGHT, OUTPUT );
  29. pinMode( CONTRAST, OUTPUT );
  30. digitalWrite( BACKLIGHT, HIGH );
  31. analogWrite( CONTRAST, 40) ;
  32. lcd.setCursor( 3, 0); //messaggio iniziale
  33. lcd.print("Dosatrice");
  34. lcd.setCursor(2,1);
  35. lcd.print("prog.01");
  36. delay(6000);
  37. lcd.clear();// cancellare scritte LCD
  38. delay(3000);
  39.  
  40. }
  41.  
  42. void loop(){
  43. now = RTC.now();
  44.  
  45. int h = now.hour(); //
  46. int m = now.minute(); //
  47. int s = now.second(); //
  48. int hEvent = 21; // inizio dosaggio mangine
  49. int mEvent = 9; // inizio dosaggio mangine
  50. int hEvent2 = 21; // fine dosaggio mangine
  51. int mEvent2 = 11; // fine dosaggio mangine
  52. bool triggered = false;
  53.  
  54. if(h == hEvent && m == mEvent && !triggered) {
  55. digitalWrite(relay1Pin, LOW);
  56. triggered = true;
  57. }
  58. else {
  59. triggered = false;
  60. }
  61. if(h == hEvent2 && m == mEvent2 && !triggered) {
  62. digitalWrite(relay1Pin, HIGH);
  63. triggered = true;
  64. }
  65. else {
  66. triggered = false;
  67. }
  68.  
  69. if ( analogRead( SET ) < 1000) {
  70. time = millis();
  71. }
  72.  
  73. DateTime now = RTC.now();
  74. lcd.clear();
  75.  
  76. sprintf(buffer, "%02d/%02d/%d", now.day(), now.month(), now.year());
  77. lcd.setCursor(0,0);
  78. lcd.print( buffer );
  79.  
  80. char buffer[10] = "";
  81.  
  82. sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
  83. lcd.setCursor(0,1);
  84. lcd.print( buffer );
  85.  
  86. if (time > 0 && setModeTime < (millis() - time) ) {
  87. setMode( now );
  88. }
  89.  
  90. delay(1000);
  91. }
  92.  
  93. void setMode( DateTime now ) {
  94. boolean setMode = true;
  95. int setModeLevel = 0;
  96.  
  97. int _day = now.day();
  98. int _month = now.month();
  99. int _year = now.year();
  100. int _hour = now.hour();
  101. int _min = now.minute();
  102. int _sec = now.second();
  103.  
  104. lcd.clear();
  105. lcd.setCursor(0,0);
  106. sprintf(buffer, "%s: %02d", "Giorno", _day);
  107. delay( 1000 );
  108. timeSet = millis();
  109.  
  110. while ( setMode ) {
  111. if ( analogRead(SET) > 1000 || analogRead(PIU) > 1000 || analogRead(MENO) > 1000 ) {
  112. timeSet = millis();
  113. }
  114.  
  115. lcd.setCursor(0,0);
  116.  
  117. // Set Day
  118. if ( setModeLevel == 0 ) {
  119. if ( analogRead(PIU) > 1000 && _day < 31) {
  120. _day++;
  121. }
  122. if ( analogRead(MENO) > 1000 && _day > 1) {
  123. _day--;
  124. }
  125.  
  126. sprintf(buffer, "%s: %02d", "Giorno", _day);
  127. }
  128. // Set Month
  129. if ( setModeLevel == 1 ) {
  130. if ( analogRead(PIU) > 1000 && _month < 12) {
  131. _month++;
  132. }
  133. if ( analogRead(MENO) > 1000 && _month > 1) {
  134. _month--;
  135. }
  136.  
  137. sprintf(buffer, "%s: %02d", "Mese", _month);
  138. }
  139. // Set Year
  140. if ( setModeLevel == 2 ) {
  141. if ( analogRead(PIU) > 1000 && _year < 9999) {
  142. _year++;
  143. }
  144. if ( analogRead(MENO) > 1000 && _year > 1900) {
  145. _year--;
  146. }
  147.  
  148. sprintf(buffer, "%s: %02d", "Anno", _year);
  149. }
  150. // Set Hour
  151. if ( setModeLevel == 3 ) {
  152. if ( analogRead(PIU) > 1000 && _hour < 24) {
  153. _hour++;
  154. }
  155. if ( analogRead(MENO) > 1000 && _hour > 0) {
  156. _hour--;
  157. }
  158.  
  159. sprintf(buffer, "%s: %02d", "Ora", _hour);
  160. }
  161. // Set Minute
  162. if ( setModeLevel == 4 ) {
  163. if ( analogRead(PIU) > 1000 && _min < 60) {
  164. _min++;
  165. }
  166. if ( analogRead(MENO) > 1000 && _min > 0) {
  167. _min--;
  168. }
  169.  
  170. sprintf(buffer, "%s: %02d", "Minuti", _min);
  171. }
  172. // Set Second
  173. if ( setModeLevel == 5 ) {
  174. if ( analogRead(PIU) > 1000 && _sec < 60) {
  175. _sec++;
  176. }
  177. if ( analogRead(MENO) > 1000 && _sec > 0) {
  178. _sec--;
  179. }
  180.  
  181. sprintf(buffer, "%s: %02d", "Secondi", _sec);
  182. }
  183.  
  184. lcd.print( buffer );
  185. if ( analogRead(SET) > 1000 ) {
  186. lcd.clear();
  187. setModeLevel++;
  188. }
  189. if ( setModeLevel > 5 ) {
  190. setModeLevel=0;
  191. }
  192.  
  193. if (timeSet > 0 && (setModeTime*2) < (millis() - timeSet) ) {
  194. RTC.adjust(DateTime(_year, _month, _day, _hour, _min, _sec));
  195. setMode = false;
  196. }
  197. delay (200);
  198. }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement