Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Doble Didplay siete - segmentos LED con botones
- //
- // Basado en un trabajo de Natalia Fargasch Norman
- //
- //
- // Common Catode digit 1 pin 10
- // Common Catode digit 2 pin 5
- //
- // Modificado y mejorado 11.08.11
- // V. García
- //
- // Utiliza 2202 bytes con Arduino v0013
- // CA1 G F A B
- // | | | | | | -> pines y segmentos de control
- // --------- ---------
- // | A | | A |
- // F| |B F| |B
- // |---G---| |---G---|
- // E| |C E| |C
- // | D | | D |
- // --------- ---------
- // | | | | | | -> pines y segmentos de control
- // D DP E C CA2
- // Composición de los digitos en Segmentos
- // 0 => -FEDCBA
- // 1 => ----BC-
- // 2 => G-ED-BA
- // 3 => G--DCBA
- // 4 => GF--CB-
- // 5 => GF-DC-A
- // 6 => GFEDC-A
- // 7 => ----CBA
- // 8 => GFEDCBA
- // 9 => GF-DCBA
- // Pines digitales usados Arduino para encender
- // los correspondientes segmentos LED del display
- #define A 2
- #define B 3
- #define C 4
- #define D 5
- #define E 6
- #define F 7
- #define G 8
- // Pulsadoes boton conectados a pines 9 y 10
- #define BTN1 14
- #define BTN2 15
- #define led 13
- // Pines comunes de cada display de anodo comun
- #define CA1 9
- #define CA2 10
- // Pines para A B C D E F G, en secuencia
- // se pueden usar los que más interesen
- const int segs[7] = { 2, 3, 4, 5, 6, 7, 8 };
- // Segmentos que componen cada número
- // Para CC.
- const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110,
- 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111
- };
- // Para CA. descomentar las 2 líneas que siguen.
- // const byte numbers[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010,
- // 0b0000010, 0b1111000, 0b0000000, 0b0010000};
- int digit1 = 0;
- int digit2 = 0;
- void setup()
- {
- pinMode(A, OUTPUT);
- pinMode(B, OUTPUT);
- pinMode(C, OUTPUT);
- pinMode(D, OUTPUT);
- pinMode(E, OUTPUT);
- pinMode(F, OUTPUT);
- pinMode(G, OUTPUT);
- pinMode(BTN1, INPUT);
- pinMode(BTN2, INPUT);
- digitalWrite(BTN1, HIGH); // activa RPA
- digitalWrite(BTN2, HIGH); // activa RPA
- pinMode(CA1, OUTPUT);
- pinMode(CA2, OUTPUT);
- pinMode(led, OUTPUT);
- // digit1 = 9; digit2 = 9;
- }
- //-------------------------------------
- void loop()
- {
- // chequea boton1. Incrementa
- int val1 = digitalRead(BTN1);
- if (val1 == LOW)
- {
- if (digit2 >= 9 && digit1 >= 9)
- {
- digit2 = 0;
- digit1++;
- digit1 %= 10;
- if (digit1 >= 9)
- {
- digit2++;
- }
- } else if (digit1 >= 9)
- {
- digit2++;
- digit2 %= 10;
- }
- digit1++;
- digit1 %= 10;
- delay(10);
- }
- // cheque boton2. Decrementa
- int val2 = digitalRead(BTN2);
- if (val2 == LOW)
- {
- if (digit1 >= 0)
- {
- if (digit1 < 0)
- {
- digit1 = 0;
- }
- digit1--;
- }
- if (digit1 < 0)
- {
- digit1 = 9;
- if (digit2 < 0)
- {
- digit2 = 0;
- }
- digit2--;
- }
- if (digit2 < 0)
- {
- digit2 = 9;
- }
- }
- // display numero
- unsigned long startTime = millis();
- for (unsigned long elapsed = 0; elapsed < 300; elapsed = millis() - startTime)
- {
- lightDigit1(numbers[digit1]);
- delay(5);
- lightDigit2(numbers[digit2]);
- delay(5);
- }
- }
- //-----------------------------------
- void lightDigit1(byte number)
- {
- // digitalWrite(CA1, LOW); // Catodo comum
- // digitalWrite(CA2, HIGH); // Catodo comum
- digitalWrite(CA1, HIGH); // Anodo comum
- digitalWrite(CA2, LOW); // Anodo comum
- lightSegments(number);
- }
- //-----------------------------------
- void lightDigit2(byte number)
- {
- // digitalWrite(CA1, HIGH); // Catodo comum
- // digitalWrite(CA2, LOW); // Catodo comum
- digitalWrite(CA1, LOW); // Anodo comum
- digitalWrite(CA2, HIGH); // Anodo comum
- lightSegments(number);
- }
- //-----------------------------------
- void lightSegments(byte number)
- {
- for (int i = 0; i < 7; i++)
- {
- // int bit = !bitRead(number, i); // Catodo comum
- int bit = !bitRead(number, i); // Anodo comum
- digitalWrite(segs[i], bit);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement