Está en la página 1de 3

/* * * Esta es la colaboracin que a * modificado y mejorado por Vins el 12.08.

11 * * Four seven-segment LED Display with two buttons * Un botn incrementa la cuenta. Otro botn decrementa la cuenta. * Common Catode digit 1 pin 10 * Common Catode digit 2 pin 5 // // // // // // // // // // // // // // // // // // // // // // */ CC1 A F CC3 CC2 B | | | | | | -> pins and segments they control --------- --------- --------- --------| A | | A | | A | | A | F| |B F| |B F| |B F| |B |---G---| |---G---| |---G---| |---G---| E| |C E| |C E| |C E| |C | D | | D | | D | | D | --------- --------- --------- --------| | | | | | -> pins and segments they control E D C G CC4 Segments that make each number when lit: 0 => -FEDCBA 1 => ----BC2 => G-ED-BA 3 => G--DCBA 4 => GF--CB5 => GF-DC-A 6 => GFEDC-A 7 => ----CBA 8 => GFEDCBA 9 => GF-DCBA

// Arduino digital pins used to light up // corresponding segments on the LED display #define A 2 #define B 3 #define C 4 #define D 5 #define E 6 #define F 7 #define G 8 // Pushbuttons connected to pins 9 and 10 #define BTN1 14 #define BTN2 15 // Pins driving common anodes #define CC1 9 #define CC2 10 #define CC3 11 #define CC4 12 // Pins for A B C D E F G, in sequence const int segs[7] = { 2, 3, 4, 5, 6, 7, 8 }; // Segments that make each number const byte numbers[10] = { 0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b110

0110, 0b1101101, 0b1111101, 0b0000111, 0b1111111, 0b1101111}; int int int int int int int int int estadobtn1 = 0; estadobtn2 = 0; digit1 = 0; digit2 = 0; digit3 = 0; digit4 = 0; count = 0; val; val2;

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(CC1, OUTPUT); pinMode(CC2, OUTPUT); pinMode(CC3, OUTPUT); pinMode(CC4, OUTPUT); count = 0; } void loop() { val = digitalRead(BTN1); // lee el valor de entrada y almacnlo en val if (val != estadobtn1) // el estado de botn ha cambiado! { if (val == LOW) // compruebe si el botn es presionado { count++; count %= 10000; } } estadobtn1=val; val = digitalRead(BTN2); // lee el valor de entrada y almacnlo en val if (val != estadobtn2) // el estado de botn ha cambiado! { if (val == LOW) // compruebe si el botn es presionado { if (count == 0) { count=9999; } else { count--; } } estadobtn2=val; } // display number digit1=count / 1000; digit2=(count - (digit1 * 1000)) / 100;

digit3=(count - (digit1*1000) - (digit2*100)) / 10; digit4=count % 10; lightDigit1(numbers[digit1]); delay(2); lightDigit2(numbers[digit2]); delay(2); lightDigit3(numbers[digit3]); delay(2); lightDigit4(numbers[digit4]); delay(2); } void lightDigit1(byte number) { digitalWrite(CC1, LOW); digitalWrite(CC2, HIGH); digitalWrite(CC3, HIGH); digitalWrite(CC4, HIGH); lightSegments(number); } void lightDigit2(byte number) { digitalWrite(CC1, HIGH); digitalWrite(CC2, LOW); digitalWrite(CC3, HIGH); digitalWrite(CC4, HIGH); lightSegments(number); } void lightDigit3(byte number) { digitalWrite(CA1, HIGH); digitalWrite(CC2, HIGH); digitalWrite(CC3, LOW); digitalWrite(CC4, HIGH); lightSegments(number); } void lightDigit4(byte number) { digitalWrite(CC1, HIGH); digitalWrite(CC2, HIGH); digitalWrite(CC3, HIGH); digitalWrite(CC4, LOW); lightSegments(number); } void lightSegments(byte number) { for (int i = 0; i < 7; i++) { int bit = bitRead(number, i); digitalWrite(segs[i], bit); } }

También podría gustarte