Guest User

Untitled

a guest
May 17th, 2019
300
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* T09_7 segmentos
  2.  
  3. Este sketch realiza un contador del 0 al 9
  4. usando un display de 7 segmentos y dos botones
  5. uno para incrementar y otro para decrementar.
  6. */
  7.  
  8. const int a = 2; // segmentos del display
  9. const int b = 3;
  10. const int c = 4;
  11. const int d = 5;
  12. const int e = 6;
  13. const int f = 7;
  14. const int g = 8;
  15. const int botonIncremento =9;
  16. const int botonDecremento =10;
  17.  
  18. const int tiempoAntirebote = 10;
  19. int cuenta = 0;
  20. int estadoBotonIncremento;
  21. int estadoBotonAnteriorIncremento;
  22. int estadoBotonDecremento;
  23. int estadoBotonAnteriorDecremento;
  24.  
  25. boolean antirebote(int pin) {
  26. int contador = 0;
  27. boolean estado;
  28. boolean estadoAnterior;
  29.  
  30. do {
  31. estado = digitalRead(pin);
  32. if(estado != estadoAnterior) {
  33. contador = 0;
  34. estadoAnterior = estado;
  35. }
  36. else {
  37. contador = contador + 1;
  38. }
  39. delay(1);
  40. } while(contador < tiempoAntirebote);
  41.  
  42. return estado;
  43. }
  44.  
  45. void actualizarNumero() {
  46. switch(cuenta) {
  47. case 0:
  48. digitalWrite(a, LOW); // NUMERO 0
  49. digitalWrite(b, LOW);
  50. digitalWrite(c, LOW);
  51. digitalWrite(d, LOW);
  52. digitalWrite(e, LOW);
  53. digitalWrite(f, LOW);
  54. digitalWrite(g, HIGH);
  55. break;
  56. case 1:
  57. digitalWrite(a, HIGH); // NUMERO 1
  58. digitalWrite(b, LOW);
  59. digitalWrite(c, LOW);
  60. digitalWrite(d, HIGH);
  61. digitalWrite(e, HIGH);
  62. digitalWrite(f, HIGH);
  63. digitalWrite(g, HIGH);
  64. break;
  65. case 2:
  66. digitalWrite(a, LOW); // NUMERO 2
  67. digitalWrite(b, LOW);
  68. digitalWrite(c, HIGH);
  69. digitalWrite(d, LOW);
  70. digitalWrite(e, LOW);
  71. digitalWrite(f, HIGH);
  72. digitalWrite(g, LOW);
  73. break;
  74. case 3:
  75. digitalWrite(a, LOW); // NUMERO 3
  76. digitalWrite(b, LOW);
  77. digitalWrite(c, LOW);
  78. digitalWrite(d, LOW);
  79. digitalWrite(e, HIGH);
  80. digitalWrite(f, HIGH);
  81. digitalWrite(g, LOW);
  82. break;
  83. case 4:
  84. digitalWrite(a, HIGH); // NUMERO 4
  85. digitalWrite(b, LOW);
  86. digitalWrite(c, LOW);
  87. digitalWrite(d, HIGH);
  88. digitalWrite(e, HIGH);
  89. digitalWrite(f, LOW);
  90. digitalWrite(g, LOW);
  91. break;
  92. case 5:
  93. digitalWrite(a, LOW); // NUMERO 5
  94. digitalWrite(b, HIGH);
  95. digitalWrite(c, LOW);
  96. digitalWrite(d, LOW);
  97. digitalWrite(e, HIGH);
  98. digitalWrite(f, LOW);
  99. digitalWrite(g, LOW);
  100. break;
  101. case 6:
  102. digitalWrite(a, LOW); // NUMERO 6
  103. digitalWrite(b, HIGH);
  104. digitalWrite(c, LOW);
  105. digitalWrite(d, LOW);
  106. digitalWrite(e, LOW);
  107. digitalWrite(f, LOW);
  108. digitalWrite(g, LOW);
  109. break;
  110. case 7:
  111. digitalWrite(a, LOW); // NUMERO 7
  112. digitalWrite(b, LOW);
  113. digitalWrite(c, LOW);
  114. digitalWrite(d, HIGH);
  115. digitalWrite(e, HIGH);
  116. digitalWrite(f, HIGH);
  117. digitalWrite(g, HIGH);
  118. break;
  119. case 8:
  120. digitalWrite(a, LOW); // NUMERO 8
  121. digitalWrite(b, LOW);
  122. digitalWrite(c, LOW);
  123. digitalWrite(d, LOW);
  124. digitalWrite(e, LOW);
  125. digitalWrite(f, LOW);
  126. digitalWrite(g, LOW);
  127. break;
  128. case 9:
  129. digitalWrite(a, LOW); // NUMERO 9
  130. digitalWrite(b, LOW);
  131. digitalWrite(c, LOW);
  132. digitalWrite(d, HIGH);
  133. digitalWrite(e, HIGH);
  134. digitalWrite(f, LOW);
  135. digitalWrite(g, LOW);
  136. break;
  137.  
  138. }
  139. }
  140.  
  141.  
  142. void setup() {
  143. pinMode(a, OUTPUT);
  144. pinMode(b, OUTPUT);
  145. pinMode(c, OUTPUT);
  146. pinMode(d, OUTPUT);
  147. pinMode(e, OUTPUT);
  148. pinMode(f, OUTPUT);
  149. pinMode(g, OUTPUT);
  150. pinMode(botonIncremento, INPUT);
  151. pinMode(botonDecremento, INPUT);
  152. }
  153.  
  154. void loop() {
  155. estadoBotonIncremento = digitalRead(botonIncremento);
  156. if(estadoBotonIncremento !=estadoBotonAnteriorIncremento) {
  157. if(antirebote(botonIncremento)) {
  158. cuenta++;
  159. if(cuenta > 9) {
  160. cuenta = 9;
  161. }
  162. }
  163. }
  164. estadoBotonAnteriorIncremento = estadoBotonIncremento;
  165.  
  166. estadoBotonDecremento = digitalRead(botonDecremento);
  167. if(estadoBotonDecremento !=estadoBotonAnteriorDecremento) {
  168. if(antirebote(botonDecremento)) {
  169. cuenta--;
  170. if(cuenta < 0) {
  171. cuenta = 0;
  172. }
  173. }
  174. }
  175. estadoBotonAnteriorDecremento = estadoBotonDecremento;
  176.  
  177. actualizarNumero();
  178. }
RAW Paste Data