ya creo k lo resorbi casi . lo unico es k se ve como prendiendo y apagando no se nota mucho pero se nota y si me pueden ayudar a simplificarlo seria perfectoo el ejemplo esta en el numero 7 . osea despues de precionar el boton up 7 veces . les dejo el codigo gracias.
const int latchPin= A1;
const int clockPin = A2;
const int dataPin = A0;
#define CA1 4
#define CA2 5
#define CA3 6
#define CA4 7
int botonUp = 3;
int botonDown = 2;
int cambio = 0;
int botonPress ;
int boton_No_Press ;
int botonPress2 ;
int boton_No_Press2 ;
const int energisarTiempo = 10;
boolean energisar ( int pin ){
boolean contador = 0;
boolean Press;
boolean NoPress;
do {
Press =digitalRead ( pin);
if ( Press != NoPress) {
contador = 0;
NoPress = Press;
}
else
{
contador = contador + 1;
}
delay (1);
}
while ( contador < energisarTiempo);
return Press;
}
void actualizar ()
{
switch ( cambio ) {
case 11:
for (int numberToDisplay = CA3; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B00001100);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA1, HIGH);
digitalWrite(CA3, HIGH);
}
break;
case 10:
for (int numberToDisplay = CA3; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111110);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, HIGH);
digitalWrite(CA4, HIGH);
}
break;
case 9:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11001110);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA4, HIGH);
}
break;
case 8:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111110);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA4, HIGH);
}
break;
////////////////////////////////////////////////////
//////////////////////////////////////////////////
///////////////////////////////////////////////////
case 7:
for (int numberToDisplay = 0; numberToDisplay < 100; numberToDisplay++) {
digitalWrite(latchPin,HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B00001110);
digitalWrite(CA1, LOW);
digitalWrite(CA2, HIGH);
digitalWrite(CA3, HIGH);
digitalWrite(CA4, HIGH);
numberToDisplay%10;
digitalWrite(latchPin, LOW);
}
for (int numberToDisplay = 0; numberToDisplay < 100; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B10011110);
digitalWrite(CA2, LOW);
digitalWrite(CA1, HIGH);
digitalWrite(CA3, HIGH);
digitalWrite(CA4, HIGH);
numberToDisplay/10%10;
digitalWrite(latchPin, LOW);
}
break;
//////////////////////////////////////////////////////
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
case 6:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111010);
//take the latch pin high so the LEDs will light up:
}
break;
case 5:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B11011010);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, LOW);
digitalWrite(CA4, LOW);
digitalWrite(CA1, LOW);
digitalWrite(CA2, LOW);
digitalWrite(latchPin, LOW);
}
break;
case 4:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B11001100);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, LOW);
digitalWrite(CA4, HIGH);
digitalWrite(CA2, LOW);
digitalWrite(CA1, LOW);
digitalWrite(latchPin, LOW);
}
break;
case 3:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B10011110);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, HIGH);
digitalWrite(CA4, HIGH);
digitalWrite(CA2, LOW);
digitalWrite(CA1, HIGH);
digitalWrite(latchPin, LOW);
}
break;
case 2:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B10110110);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, LOW);
digitalWrite(CA1,HIGH);
digitalWrite(CA4, LOW);
digitalWrite(CA2, HIGH);
digitalWrite(latchPin, LOW);
}
break;
case 1:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B00001100);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, HIGH);
digitalWrite(CA1, HIGH);
digitalWrite(CA2, HIGH);
digitalWrite(latchPin, LOW);
}
break;
case 0:
for (int numberToDisplay = 0; numberToDisplay < 256; numberToDisplay++) {
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, B01111110);
//take the latch pin high so the LEDs will light up:
digitalWrite(CA3, HIGH);
digitalWrite(CA2, HIGH);
digitalWrite(CA1, HIGH);
digitalWrite(latchPin, LOW);
}
break;
}
}
void setup ()
{
Serial.begin ( 9600);
pinMode ( botonUp, INPUT);
pinMode ( botonDown, INPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(CA1, OUTPUT);
pinMode(CA2, OUTPUT);
pinMode(CA3, OUTPUT);
pinMode(CA4, OUTPUT);
}
void loop ()
{
botonPress = digitalRead ( botonUp );
if ( botonPress != boton_No_Press) {
if ( energisar ( botonUp) ){
cambio ++;
if ( cambio > 11 ) {
cambio = 11;
}
}
}
boton_No_Press = botonPress;
////////////////////////////////////////////////
botonPress2 = digitalRead ( botonDown );
if ( botonPress2 != boton_No_Press2) {
if ( energisar ( botonDown) ){
cambio --;
if ( cambio < 0 ) {
cambio = 0;
}
}
}
boton_No_Press2 = botonPress2;
actualizar ();
}