Buenos días roboseros.

Estoy intentando conectar el display de 7-segmentos de cuatro dígitos a un arduino uno.
Las conexiones las estoy haciendo según se explica en la wiki del display:
http://learn.makeblock.com/me-7-segment-display/
pero a la hora de compilar en el IDE de Aduino, me muestra un error.

Según explica la documentación de la libreria de Makeblock, hay varias formas de definir los puertos para el display. En mi caso al conectarse a una placa arduino UNO, debería definirse así:

Me7SegmentDisplay::setpin(uint8_t dataPin, uint8_t clkPin);

es decir:
Me7SegmentDisplay pantalla; // Definición
pantalla.setpin(datos,reloj); // asignación de los puertos

En mi caso lo defino con variables:

#include <Me7SegmentDisplay.h>
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

uint8_t pindatos = 8;
uint8_t pinclock = 6;

Me7SegmentDisplay pantalla;
pantalla.setpin(pindatos,pinclock);

perooooo.
A la hora de compilar el programa me muestra un error:

Arduino:1.8.1 (Windows 10), Tarjeta:"Arduino/Genuino Uno"
display7segmentos:11: error: 'pantalla' does not name a type
 pantalla.setpin(6,7);
 ^
exit status 1
'pantalla' does not name a type

Como si estuviese mal declarado el display.

¿Alguna sugerencia?

Un saludo y gracias.
Henry.

Buenos días roboseros. Estoy intentando conectar el display de 7-segmentos de cuatro dígitos a un arduino uno. Las conexiones las estoy haciendo según se explica en la wiki del display: http://learn.makeblock.com/me-7-segment-display/ pero a la hora de compilar en el IDE de Aduino, me muestra un error. Según explica la documentación de la libreria de Makeblock, hay varias formas de definir los puertos para el display. En mi caso al conectarse a una placa arduino UNO, debería definirse así: Me7SegmentDisplay::setpin(uint8_t dataPin, uint8_t clkPin); es decir: Me7SegmentDisplay pantalla; // Definición pantalla.setpin(datos,reloj); // asignación de los puertos En mi caso lo defino con variables: ```` #include <Me7SegmentDisplay.h> #include <Arduino.h> #include <Wire.h> #include <SoftwareSerial.h> uint8_t pindatos = 8; uint8_t pinclock = 6; Me7SegmentDisplay pantalla; pantalla.setpin(pindatos,pinclock); ```` perooooo. A la hora de compilar el programa me muestra un error: ```` Arduino:1.8.1 (Windows 10), Tarjeta:"Arduino/Genuino Uno" display7segmentos:11: error: 'pantalla' does not name a type pantalla.setpin(6,7); ^ exit status 1 'pantalla' does not name a type ```` Como si estuviese mal declarado el display. ¿Alguna sugerencia? Un saludo y gracias. Henry.

Solución:
La librería de Makeblock no sirve para este caso, ya que no deja definir los pines de datos y clock. Pero, como el display se basa en un TM1637 de acuerdo al wiki, entonces intenté usar la librería TM1637Display. y funcionó perfectamente.
El programa de ejemplo viene en la misma librería al descargarla.

y todo perfecto.
Salu2

#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

// The amount of time (in milliseconds) between tests
#define TEST_DELAY   1

TM1637Display display(CLK, DIO);

int count = 9999;
uint8_t data[] = {0, 0, 0, 0};

void setup() {
}

void loop() {
  display.setBrightness(0x0f);

  data[3] = display.encodeDigit(count/1 % 10);
  data[2] = display.encodeDigit(count/10 % 10);
  data[1] = display.encodeDigit(count/100 % 10);
  data[0] = display.encodeDigit(count/1000 % 10);
  display.setSegments(data);

  if(count <= 0) {
    count = 9999;
  } else {
    count--;
  }

  delay(TEST_DELAY);
}
Solución: La librería de Makeblock no sirve para este caso, ya que no deja definir los pines de datos y clock. Pero, como el display se basa en un TM1637 de acuerdo al wiki, entonces intenté usar la librería TM1637Display. y funcionó perfectamente. El programa de ejemplo viene en la misma librería al descargarla. y todo perfecto. Salu2 ```` #include <TM1637Display.h> // Module connection pins (Digital Pins) #define CLK 2 #define DIO 3 // The amount of time (in milliseconds) between tests #define TEST_DELAY 1 TM1637Display display(CLK, DIO); int count = 9999; uint8_t data[] = {0, 0, 0, 0}; void setup() { } void loop() { display.setBrightness(0x0f); data[3] = display.encodeDigit(count/1 % 10); data[2] = display.encodeDigit(count/10 % 10); data[1] = display.encodeDigit(count/100 % 10); data[0] = display.encodeDigit(count/1000 % 10); display.setSegments(data); if(count <= 0) { count = 9999; } else { count--; } delay(TEST_DELAY); } ````

Muchas gracias por postear la solución Henry.

Le había estado dando vueltas y personalmente no encontraba la solución por mucho que estaba probando.

Gracias!

Dani S.

Muchas gracias por postear la solución Henry. Le había estado dando vueltas y personalmente no encontraba la solución por mucho que estaba probando. Gracias! Dani S.
949
vistas
2
respuestas
2
seguidores
vista previa (en vivo)
introduzca al menos un 10 caracteres
Advertencia: Mencionaste a %MENTIONS%, pero ellos no pueden ver el mensaje y no serán notificados
Guardando...
Guardado
Todos los posteos de este tema serán borrados ?
Borrador pendiente ... Click para continuar editando
Descartar borrador