Go Down

Topic: timer con display doble (Read 1 time) previous topic - next topic

albertnio

tengo prblema y no  se q significa esto me pide especificar

( F #define F 7
#define G 8)

y ademas error en

(digit1 >= 0)

 necesito ayuda es un proyecto pagado ¿urge!




 
Code: [Select]
#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);
  digitalWrite(CA2, HIGH);
  lightSegments(number);
 }
 
void lightDigit2(byte number)
 {
  digitalWrite(CA1, HIGH);
  digitalWrite(CA2, LOW);
  lightSegments(number);
 }
 
void lightSegments(byte number)
 {
  for (int i = 0; i < 7; i++)
   {
    int bit = bitRead(number, i);
    digitalWrite(segs[i], bit);
   }
 }

surbyte

F() se usa para indicar que una cadena de caracteres se guardará en memoria flash de modo que no puedes usarla porque el compilador la malinterpreta

El resto del código esta plagado de errores
que es esto

Code: [Select]
if (digit2 >= 9 && digit1 >= 9)

&gt ? que es
& amp que es

lo copiaste mal?

El delimitador & se usa cuando se pretende referenciar una variable pero acá no se porque luce como un error  de haberlo copiado de una pagina web y quedó en un formato desconocido.

Hay una librería que se llama SevSeg Library
Mirala, es facil de usar y adaptas tu problema en minutos.

Go Up