RuiViana

GLSM_Relogio

Oct 12th, 2016
134
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <LiquidCrystal.h> //Biblioteca para o display LCD
  3. #include <DS1307.h>
  4. DS1307 rtc(A4, A5); //Modulo RTC DS1307 ligado as portas
  5. void keyboardRead();
  6. void mostraHora();
  7. void relogio();
  8. void ajuste();
  9. byte HoraR = 0;
  10. byte MinutoR = 0;
  11. byte SegundoR = 0;
  12. Time Horario;
  13.  
  14. int adc_value = 0x00; //armazena o valor digital do conversor AD
  15. int segundos = 0, minutos = 0, horas = 0; //variáveis do relógio
  16.  
  17. boolean right = 0x00, butt01 = 0x00,
  18. up = 0x00, butt02 = 0x00,
  19. down = 0x00, butt03 = 0x00,
  20. left = 0x00, butt04 = 0x00,
  21. select = 0x00, butt05 = 0x00;
  22.  
  23. LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // definindo a pinagem do display lcd
  24. //-------------------------------------
  25. void setup()
  26. {
  27. pinMode(13, OUTPUT);
  28. lcd.begin(16, 2); //Inicializa LCD 16 x 2
  29. lcd.setCursor(1, 0); //Posiciona cursor na coluna 2, linha 1
  30. lcd.print("Relogio Arduino"); //Imprime mensagem
  31. //As linhas abaixo setam a data e hora do modulo
  32. //e podem ser comentada apos a primeira utilizacao
  33. // rtc.setDOW(SUNDAY); //Define o dia da semana
  34. // rtc.setTime(21, 51, 00); //Define o horario
  35. // rtc.setDate(25, 9, 2016); //Define o dia, mes e ano
  36. }
  37. //-------------------------------------
  38. void loop()
  39. {
  40. relogio();
  41. mostraHora();
  42. ajuste();
  43. keyboardRead();
  44. Compara();
  45. }
  46. //------------------------------------
  47. void Compara()
  48. {
  49. If (MinutoR == minutos)
  50. {
  51. If(HoraR == horas)
  52. {
  53. //faça alguma coisa
  54. }
  55. }
  56. }
  57. //-------------------------------------
  58. void relogio()
  59. {
  60. Horario = rtc.getTime();
  61. HoraR = Horario.hour,DEC;
  62. MinutoR = Horario.min,DEC;
  63. }
  64. //-------------------------------------
  65. void ajuste()
  66. {
  67. if (right == 0x01) //tecla right pressionada?
  68. { //sim...
  69. right = 0x00; //limpa flag da tecla
  70. minutos++; //incrementa unidade de minuto
  71. if (minutos > 59) minutos = 0x00; //volta a ser zero se maior que 59
  72. }
  73. if (up == 0x01) //tecla up pressionada?
  74. { //sim...
  75. up = 0x00; //limpa flag da tecla
  76. horas++; //incrementa unidade de hora
  77. if (horas > 23) horas = 0x00; //volta a ser zero se maior que 23
  78. }
  79. if (down == 0x01) //tecla down pressionada?
  80. { //sim...
  81. down = 0x00; //limpa flag da tecla
  82. minutos = minutos + 10; //incrementa dezena de minuto
  83. if (minutos > 59) minutos = 0x00; //volta a ser zero se maior que 59
  84. }
  85. if (left == 0x01) //tecla left pressionada?
  86. { //sim...
  87. left = 0x00; //limpa flag da tecla
  88. horas = horas + 10; //incrementa dezena de hora
  89. if (horas > 23) horas = 0x00; //volta a ser zero se maior que 23
  90. }
  91. }
  92. //-------------------------------------
  93. void mostraHora()
  94. {
  95. lcd.setCursor(4, 1); //Posiciona cursor na coluna 3, linha 2
  96. lcd.print(horas); //Imprime valor das horas
  97. lcd.print(":"); //Imprime :
  98. lcd.print(minutos); //Imprime valor dos minutos
  99. lcd.print(":"); //Imprime :
  100. lcd.print(segundos); //Imprime valor dos segundos
  101. }
  102. //----------------------------------
  103. void keyboardRead()
  104. {
  105. adc_value = analogRead(A0);
  106. if (adc_value < 50) butt01 = 0x01;
  107. else if (adc_value > 103 && adc_value < 200) butt02 = 0x01;
  108. else if (adc_value > 250 && adc_value < 380) butt03 = 0x01;
  109. else if (adc_value > 450 && adc_value < 550) butt04 = 0x01;
  110. if (adc_value > 50 && butt01) //Botão right solto e flag butt01 setada?
  111. { //Sim...
  112. butt01 = 0x00; //Limpa flag butt01
  113. right = 0x01; //Seta flag right
  114. }
  115. if (adc_value > 200 && butt02) //Botão up solto e flag butt02 setada?
  116. { //Sim...
  117. butt02 = 0x00; //Limpa flag butt02
  118. up = 0x01; //Seta flag up
  119. }
  120. if (adc_value > 380 && butt03) //Botão down solto e flag butt03 setada?
  121. { //Sim...
  122. butt03 = 0x00; //Limpa flag butt03
  123. down = 0x01; //Seta flag down
  124. }
  125. if (adc_value > 550 && butt04) //Botão left solto e flag butt04 setada?
  126. { //Sim...
  127. butt04 = 0x00; //Limpa flag butt04
  128. left = 0x01; //Seta flag left
  129. }
  130. }
RAW Paste Data