Go Down

Topic: Error "display" was not declared in this scope (Read 99 times) previous topic - next topic

polyarduino

Feb 09, 2020, 03:12 pm Last Edit: Feb 09, 2020, 09:07 pm by surbyte Reason: Editado
Hola todos, me sale ese error en este código, me ayudan?
Estoy usando un display 4 dígitos, 7 segmentos, TM1637.

Code: [Select]

#include <Arduino.h>                                 // Biblioteca de Rutinas basicas de Arduino
#include <TM1637Display.h>                           // Biblioteca de pantalla TM1637


int conta = 0;
int velocidad = 0;
int frecuencia = 0;
int tension = 0;

void setup()
{
  pinMode(4, INPUT);                                  // Sube contador
  pinMode(5, INPUT);                                  // Baja contador
  pinMode(6, INPUT);                                  // Habilita contador
#define CLK 2                                        // Pin de Reloj  
#define DIO 3                                        // Pin de Entrada de datos  
  TM1637Display display(CLK, DIO);

}

void loop()
{
  {
    while (digitalRead(6) == HIGH)
    {
      {
        if ( digitalRead(4) == HIGH)
        {
          if (digitalRead(4) == LOW)
          {
            conta++;
            display.showNumberDec(conta, false, 4, 3);

            delay(100);
          }
        }
      }

      {
        if ( digitalRead(5) == HIGH)
        {
          if (digitalRead(5) == LOW)
          {
            conta--;
            display.showNumberDec(conta, false, 4, 3);
            delay(100);
          }
        }
      }
    }
  }
  velocidad = analogRead(A0);
  double tension = (velocidad / 511.5);
  double frecuencia = (int)(tension * conta / 2);

  display.showNumberDec(frecuencia, false, 4, 3);
  delay(1000);

}

polyarduino

Solucionado, TM1637Display display(CLK, DIO); estaba dentro del void setup().
Pido disculpas si distraje con una cuestión tan básica.

Kike_GL

1. La instancia de display debe ser publica
2. Si usas INPUT_PULLUP te ahorras la reistencia de pull-up de los pines 4,5 y 6.
3. Las variables publicas: frecuencia y tension deben ser float
4. Tienes varios {} que están demás.
5. La condicion (digitalRead(6) == HIGH) es redundate basta con poner (digitalRead(6))
6. La condicion (digitalRead(4) == LOW) es redundate basta con poner (!digitalRead(4))

Code: [Select]

#include <Arduino.h>                    // Biblioteca de Rutinas basicas de Arduino
#include <TM1637Display.h>          // Biblioteca de pantalla TM1637

#define CLK 2                              // Pin de Reloj   
#define DIO 3                              // Pin de Entrada de datos 
TM1637Display display(CLK, DIO);

int conta;
int velocidad;
float frecuencia;
float tension;

void setup(){
   pinMode(4, INPUT_PULLUP);         // Sube contador
   pinMode(5, INPUT_PULLUP);         // Baja contador
   pinMode(6, INPUT_PULLUP);         // Habilita y MUESTRA contador
}

void loop(){
   velocidad = analogRead(A0);
   tension = velocidad / 511.5;
   frecuencia = tension * conta / 2.0;
   display.showNumberDec(frecuencia, false, 4, 3);
   while (!digitalRead(6)){
      if (!digitalRead(4)){
         conta++;
      }
      if (!digitalRead(5)){
         conta--;
      }
      display.showNumberDec(conta, false, 4, 3);
   }
   delay(1000);
}


PD: Supongo que cuando presionas el pulsador 6 (!digitalRead(6)) se muestra conta y te da la opción de presionar sube (!digitalRead(4)) o baja (!digitalRead(5)).
Saludos, Kike_GL

polyarduino

Muchas Gracias Kike.
Tus observaciones son valiosas, y por sobre todo aplicables a otro proyecto que estoy tratando de desarrollar y tiene unos 8 contadores.
Tu suposición sobre el contador 6, es correcta.
Como deducirás soy nuevo, la última ves que escribí un código fué cuando aprendí BASIC allá por los 80.
Suelo programar PLC y relés programables en ladder, pero el C, me tiene a mal traer.

Go Up