Conversión variable: char a int16_t

Saludos :slight_smile:
Tengo un problema a la hora de mandar unos datos al display 4 dígitos TM1637.

El error que me dice, creo que es la conversión de variable char a int16_t.
E visto algunos ejemplos, pero no me entero muy bien, aver si me podeis ayudar, os pego el código y gracias.

 #include <Wire.h> 
#include "RTClib.h"
RTC_DS1307 RTC;

#include "TM1637.h" 
#define CLK 4 
#define DIO 5 
TM1637 disp(CLK,DIO);

 int s;
 int h;
 int m;
 float hora;

void setup() {
Serial.begin(9600);
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicación con el RTC reloj
RTC.adjust(DateTime(__DATE__, __TIME__));  // Establece la fecha y hora pc
//RTC.adjust(DateTime(2017, 03, 19, 23, 58, 54));
  disp.set(1);
  disp.init(D4056A);
}

void loop() {
    DateTime now = RTC.now(); 
 s = now.second();
 m = now.minute();
 h = now.hour();

  char hora[10];
 sprintf(hora, "%02d.%02d",  m, s);
Serial.println(hora);
disp.display(hora);  // <----- Aqui es donde me da el error conversion char a int16_t
delay(1000); // 
}

Mira los ejemplos de tu librería TM1637 y entenderás que debes enviar

Esta debe ser tu librería TM1637, algo que debes postear asi no se pierde tiempo en responderte.

Veo ahi varios ejemplos, pero no usan el criterio que tu usas.

Hay un ejemplo que se adapta mas o menos a tu caso StopWatch
Ahi usan un

int8_t TimeDisp[] = {0x00,0x00,'.', 0x00,0x00};

que es lo mismo que tu char array

Mira este a ver si funciona… me compila con advertencias

 #include <Wire.h> 
#include "RTClib.h"
RTC_DS1307 RTC;

#include "TM1637.h" 
#define CLK 4 
#define DIO 5 
TM1637 disp(CLK,DIO);

 unsigned char second;
 unsigned char hour;
 unsigned char minute;
 
void setup() {
  Serial.begin(9600);
  Wire.begin(); // Inicia el puerto I2C
  RTC.begin(); // Inicia la comunicación con el RTC reloj
  RTC.adjust(DateTime(__DATE__, __TIME__));  // Establece la fecha y hora pc
  //RTC.adjust(DateTime(2017, 03, 19, 23, 58, 54));
  disp.set(1);
  disp.init(D4056A);
}

void loop() {
  DateTime now = RTC.now(); 

  int8_t TimeDisp[] = {0x00,0x00,'.',0x00, 0x00};
  char hora[5];

  TimeDisp[0] = now.minute() / 10;
  TimeDisp[1] = now.minute() % 10;
  TimeDisp[4] = now.second() / 10;
  TimeDisp[5] = now.second() % 10;

  
  sprintf(hora, "%02d.%02d", now.minute(), now.second());
  Serial.println(hora);
  disp.display(TimeDisp);  // <----- Aqui es donde me da el error conversion char a int16_t
  delay(1000); // 
}

Revisa los ejemplos de ClockDisplay y StopWatch