RuiViana

Contador_2Dig_S_Biblio

Oct 14th, 2016
179
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define CONTAR1 11 // pino onde ser� conectado a tecla de contagem
  2. #define APAGA 14 // pino onde ser� conectado a tecla de modo
  3. #define CONTAR2 12 // pino onde ser� conectado a tecla de contagem
  4.  
  5. #define segA 2 // Defino ports dos segmentos
  6. #define segB 3
  7. #define segC 4
  8. #define segD 5
  9. #define segE 6
  10. #define segF 7
  11. #define segG 8
  12.  
  13. #define DigA 9 // Define port dos digitos
  14. #define DigB 10
  15.  
  16. byte Dig1 = 0; // Digitos
  17. byte Dig2 = 0;
  18. int Brilho = 10; // Máximo brilho 10
  19. int Comum = 0; // AnodoComum = 0 CatodoComum =1
  20.  
  21. const byte seven_seg_digits[10][7] = { // Segementos
  22. { 0, 0, 0, 0, 0, 0, 1 }, // = 0
  23. { 1, 0, 0, 1, 1, 1, 1 }, // = 1
  24. { 0, 0, 1, 0, 0, 1, 0 }, // = 2
  25. { 0, 0, 0, 0, 1, 1, 0 }, // = 3
  26. { 1, 0, 0, 1, 1, 0, 0 }, // = 4
  27. { 0, 1, 0, 0, 1, 0, 0 }, // = 5
  28. { 0, 1, 0, 0, 0, 0, 0 }, // = 6
  29. { 0, 0, 0, 1, 1, 1, 1 }, // = 7
  30. { 0, 0, 0, 0, 0, 0, 0 }, // = 8
  31. { 0, 0, 0, 1, 1, 0, 0 } // = 9
  32. };
  33.  
  34. byte pin_order[8]; // Ordem dos pinos
  35.  
  36. //---------------------------
  37. void setup()
  38. {
  39. Serial.begin(9600);
  40. pinMode(CONTAR1, INPUT_PULLUP);
  41. pinMode(APAGA, INPUT_PULLUP);
  42. pinMode(CONTAR2, INPUT_PULLUP);
  43.  
  44. pinMode(DigA, OUTPUT);
  45. pinMode(DigB, OUTPUT);
  46.  
  47. pin_order[0] = segA;
  48. pin_order[1] = segB;
  49. pin_order[2] = segC;
  50. pin_order[3] = segD;
  51. pin_order[4] = segE;
  52. pin_order[5] = segF;
  53. pin_order[6] = segG;
  54.  
  55. for (int i = 0; i < 8; i++)
  56. {
  57. pinMode(pin_order[i], OUTPUT);
  58. }
  59. }
  60. //-------------------------
  61. void loop()
  62. {
  63. while (digitalRead(CONTAR1) == LOW) // Se o bot�o de contar1 estiver apertado
  64. {
  65. delay(50);
  66. while (digitalRead(CONTAR1) == LOW) // Se o bot�o de contar1 continua apertado
  67. {
  68. delay(20);
  69. if (digitalRead(CONTAR1) == HIGH) // Se o bot�o de contar1 foi liberado
  70. {
  71. Dig1++;
  72. if (Dig1 > 9) Dig1 = 0;
  73. Serial.println(Dig1, HEX);
  74. }
  75. }
  76. }
  77.  
  78. while (digitalRead(CONTAR2) == LOW) // Se o bot�o de estiver apertado
  79. {
  80. delay(50);
  81. while (digitalRead(CONTAR2) == LOW) // Se o bot�o de continua apertado
  82. {
  83. delay(20);
  84. if (digitalRead(CONTAR2) == HIGH) // Se o bot�o de foi liberado
  85. {
  86. Dig2++;
  87. if (Dig2 > 9) Dig2 = 0;
  88. Serial.println(Dig2);
  89. }
  90. }
  91. }
  92.  
  93. while (digitalRead(APAGA) == LOW) // Se o bot�o de estiver apertado
  94. {
  95. delay(50);
  96. while (digitalRead(APAGA) == LOW) // Se o bot�o de continua apertado
  97. {
  98. delay(20);
  99. if (digitalRead(APAGA) == HIGH) // Se o bot�o de foi liberado
  100. {
  101. Dig1 = 0;
  102. Dig2 = 0;
  103. }
  104. }
  105. }
  106. SetSeg(DigA, Dig1);
  107. SetSeg(DigB, Dig2);
  108. }
  109. //--------------------------------------
  110. void SetSeg(byte Digito, byte Numero)
  111. {
  112. digitalWrite(DigA, !Comum); // Apaga ambos digitos
  113. digitalWrite(DigB, !Comum);
  114.  
  115. digitalWrite(Digito, Comum); // Seleciona qual digito acender
  116. int pinseq = 0;
  117. for (byte segCount = 0; segCount < 7; ++segCount) // Acende os segmentos
  118. {
  119. byte Segmento = seven_seg_digits[Numero][segCount];
  120. if (Comum == 1)
  121. digitalWrite(pin_order[pinseq], !Segmento);
  122. else
  123. digitalWrite(pin_order[pinseq], Segmento);
  124. pinseq++;
  125. }
  126. delay(Brilho); // Brilho dos dispalys
  127. }
RAW Paste Data