Representar el símbolo "grados" en display de 7 segmentos

#1
Hola, estoy haciendo unas pruebas con un display de 4 dígitos y 7 segmentos TM1637.
No logro representar el símbolo de grados centígrados "º" En el tercer segmento.
Sería activar en el tercer segmento, los leds ABFG de manera de ver una "o" pequeña en la parte superior, pero no lo logo.

Dejo el sketch:

#include "TM1637.h"
#define CLK 2 // Pin CLK
#define DIO 3 // Pin DIO
TM1637 tm1637(CLK,DIO);

void setup()
{
tm1637.init(); // Inicializa modulo
tm1637.set(0); // Brillo, 0 (minimo) a 7 (maximo)
tm1637.point(POINT_OFF); // Apaga dos puntos
}
void loop()
{
tm1637.display(0, 2); //el número 2
tm1637.display(1, 4); //el número 4
tm1637.display(2, 25 ); //"25" es un guión, ¿cómo represento el símbolo grados?
tm1637.display(3, 0x0c); //la letra C
}
 

Daniel Lopes

Miembro Geconocido
#2
:unsure::unsure: Hola caro Don albertoG , ese display en partircular sirve bien para representar horas ,haora como quieres representar grados centigrados no creo que eso sea possible. :cry: :cry: :cry: :cry:
Si fuese 4 displays de LEDs comuns ( todos singelos) podrias poner lo cuarto display armado 180° prender lo punto decimal y la letra "C" en minusculo por hardware. (°c) ;) :cool:
!OJO , son dicas de un anarfabeto en técnicas digitales!. , jajajajaja
!Suerte en los desahollos!.
Att,
Daniel Lopes.
 
Última edición:
#3
Lee la ayuda del TM ese, se puede enviar absolutamente de todo.
Ahora no me acuerdo pero he enviado todo lo imaginable a los 8 leds de cada display
 
#5
Lee la ayuda del TM ese, se puede enviar absolutamente de todo.
Ahora no me acuerdo pero he enviado todo lo imaginable a los 8 leds de cada display
Gracias, me podrías indicar cómo encontrar la ayuda del módulo TM?

Hola, me parece que el controlador TM, sólo permite representación hexadecimal.
y en lenguaje hexadecimal no existe representación para "º"?

La pregunta la he hecho pues hace un tiempo trasteando por Internet ví que en el tercer módulo iluminaban los cuatro segmentos de arriba (ABFG), la duda que me ha surgido luego es si era el módulo que utilizo, o cuatro módulos unidos.
 
#7
Lo que hay que ver es como se usa la librería.
Creo recordar que acepta binario de forma que cada bit enciende un segmento, con lo que puedes hacer todo.

 
#8
Debes usar el método setSegments():
PHP:
/**
 * Ejemplo de mensaje en display TM1637 con Arduino iluminando cada segmento de cada dígito
 * Copyright 2016 - Fábrica Digital (fabricadigital.org)
 *
 * Publicado bajo licencia CC-BY-SA 4.0
 * Creative Commons: Reconocimiento - Compartir Igual 4.0 Internacional
 * [url]http://creativecommons.org/licenses/by-sa/4.0/deed.es_ES[/url]
 *
 * Modificado el 15 de enero de 2016
 * por Eloísa Romero para Fábrica Digital
 */
 
#include <TM1637Display.h> // librería TM1637

const int CLK = 2;  // el pin CLK está conectado al pin digital 3
const int DIO = 3;  // el pin DIO está conectado al pin digital 2

TM1637Display display(CLK, DIO); //instanciamos el TM1637, creando un objeto

byte HOLA[] = {
  0b01110110,     // H
  0b00111111,     // 0
  0b00111000,     // L
  0b01110111      // A
  };

void setup() {
 display.setBrightness(0x0f);  // brillo
}

void loop() {
 display.setSegments(HOLA);    // muestra la variable byte HOLA
}
Como ves, se trata de meter los valores de los segmentos a iluminar en un vector, y pasarlo a setSegments(). En uno de ellos defines el signo de los grados 'º'.

Creo que es 0b01100011.

O de forma más cómoda, SEG_A | SEG_B | SEG_F | SEG_G.

Sacado de aquí:
https://fabricadigital.org/leccion/como-encender-cada-segmento-del-modulo-tm1637/
 
Última edición:

shevchenko

Well-known-Ruso
#9
y que se conmute? entre la temperatura ejemplo (50) y para grados usas un cuadrado armado con 4 segmentos y una C?

50 / oC :unsure: :unsure:

y en lo posible para Grados usar el cuadrado superior?
 
Última edición:

Daniel Lopes

Miembro Geconocido
#11
No entiendo bien loque dices, creo que al principio del post lo expliqué más o menos bien...
Enpleye los dos premeros digitos para indicar la tenperatura , lo tercer digito para indicar los Grados "°" prendendo los segmentos : "a,b,f y g" y lo cuarto digito para indicar Celcius "C" prendendo los segmentos "a, d, e y f" .;):cool:
Att,
Daniel Lopes.
 
Última edición:
#12
Debes usar el método setSegments():
PHP:
/**
 * Ejemplo de mensaje en display TM1637 con Arduino iluminando cada segmento de cada dígito
 * Copyright 2016 - Fábrica Digital (fabricadigital.org)
 *
 * Publicado bajo licencia CC-BY-SA 4.0
 * Creative Commons: Reconocimiento - Compartir Igual 4.0 Internacional
 * [url]http://creativecommons.org/licenses/by-sa/4.0/deed.es_ES[/url]
 *
 * Modificado el 15 de enero de 2016
 * por Eloísa Romero para Fábrica Digital
 */
 
#include <TM1637Display.h> // librería TM1637

const int CLK = 2;  // el pin CLK está conectado al pin digital 3
const int DIO = 3;  // el pin DIO está conectado al pin digital 2

TM1637Display display(CLK, DIO); //instanciamos el TM1637, creando un objeto

byte HOLA[] = {
  0b01110110,     // H
  0b00111111,     // 0
  0b00111000,     // L
  0b01110111      // A
  };

void setup() {
 display.setBrightness(0x0f);  // brillo
}

void loop() {
 display.setSegments(HOLA);    // muestra la variable byte HOLA
}
Como ves, se trata de meter los valores de los segmentos a iluminar en un vector, y pasarlo a setSegments(). En uno de ellos defines el signo de los grados 'º'.

Creo que es 0b01100011.

O de forma más cómoda, SEG_A | SEG_B | SEG_F | SEG_G.

Sacado de aquí:
https://fabricadigital.org/leccion/como-encender-cada-segmento-del-modulo-tm1637/
Pues llevas razón, así se solucionaba, por lo menos he probado con el tercer segmento, y el "º" es como has dicho 0b01100011
 
#13
Bueno, finalmente pude resolver el tema, pongo el sketch final (para controlar dos displays TM1637) por si a alguien puede resultarle de utilidad:
#include <TM1637Display.h>

#define CLK_Agua 2
#define DIO_Agua 3
#define CLK_Suelo 4
#define DIO_Suelo 5
#define Numero0 SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F
#define Numero1 SEG_B|SEG_C
#define Numero2 SEG_A|SEG_B|SEG_G|SEG_E|SEG_D
#define Numero3 SEG_A|SEG_B|SEG_G|SEG_C|SEG_D
#define Numero4 SEG_F|SEG_G|SEG_B|SEG_C
#define Numero5 SEG_A|SEG_F|SEG_G|SEG_C|SEG_D
#define Numero6 SEG_A|SEG_F|SEG_G|SEG_C|SEG_D|SEG_E
#define Numero7 SEG_A|SEG_B|SEG_C
#define Numero8 SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G
#define Numero9 SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G
#define LetraGrados SEG_A|SEG_B|SEG_F|SEG_G
#define LetraC SEG_A|SEG_F|SEG_E|SEG_D

TM1637Display display1(CLK_Agua, DIO_Agua); //Creando un objeto
TM1637Display display2(CLK_Suelo, DIO_Suelo);

const uint8_t TemperaturaAgua[] = {Numero2,Numero4,LetraGrados,LetraC};
const uint8_t TemperaturaSuelo[] = {Numero2,Numero5,LetraGrados,LetraC};

void setup()
{
display1.setBrightness(0); // brillo 0 a 7
display2.setBrightness(0);
}

void loop()
{
display1.setSegments(TemperaturaAgua);
display2.setSegments(TemperaturaSuelo);
}
 
Arriba