Страница 1 из 1

TM1637 и ESP8266

Добавлено: 29 сен 2017, 09:56
xtern
Приветствую знатоки , не понятная ерунда, пытаюсь скомпилировать проект с блоком ТМ1637 на esp8266  код ниже:

#include "TM1637.h"
bool En_4749842_1;
int Value_4749842_1;
bool Point_4749842_1;
int Brt_4749842_1;
TM1637 TM1637_4749842_1(3, 2);
void setup()
{
TM1637_4749842_1.init();//
}
void loop()
{

//Плата:1
En_4749842_1 = !(0);
Value_4749842_1 = 1234;
Point_4749842_1 = 0;
Brt_4749842_1 = 0;

// TM1637_4749842_1
if (En_4749842_1)
{
TM1637_4749842_1.point(Point_4749842_1); // включаем точки
TM1637_4749842_1.set(Brt_4749842_1);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
TM1637_4749842_1.display(Value_4749842_1);
}

}
Компилятор выдает ошибку:
void display(int8_t DispData[]);

^

c:\Users\paulkin_av\Downloads\arduino port\ideV2\libraries\TM1637/TM1637.h:64:8: note:   no known conversion for argument 1 from 'int' to 'int8_t* {aka signed char*}'

c:\Users\paulkin_av\Downloads\arduino port\ideV2\libraries\TM1637/TM1637.h:66:8: note: void TM1637::display(double)

void display(double Decimal);

^

c:\Users\paulkin_av\Downloads\arduino port\ideV2\libraries\TM1637/TM1637.h:67:8: note: void TM1637::display(int16_t)

void display(int16_t Decimal);

^

exit status 1
call of overloaded 'display(int&)' is ambiguous

На Atmega 328 все компилится без проблем, тут же какая то ерунда
Это проявляется только с данными типа Intiger, с Float нормально, но не устраивает

TM1637 и ESP8266

Добавлено: 29 сен 2017, 11:39
pan
думаю это из-за разрядности. атмега 8 битный. для него флоат занимает 4 байта или 32 бита. а есп 32 битный.

TM1637 и ESP8266

Добавлено: 02 окт 2017, 05:14
xtern
И как быть?

TM1637 и ESP8266

Добавлено: 02 окт 2017, 08:12
pan
сделайте переменные 32 битными вместо int . например long

TM1637 и ESP8266

Добавлено: 03 окт 2017, 08:21
xtern
с long не работает

TM1637 и ESP8266

Добавлено: 03 окт 2017, 08:26
pan
unsigned long ? double?

Добавлено (03.10.2017, 08:25)
---------------------------------------------
хотя наверное double может воспринять как 64 бит число...

Добавлено (03.10.2017, 08:26)
---------------------------------------------
еще можно поискать любой скетч для esp и посмотреть какой там тип данных используется

TM1637 и ESP8266

Добавлено: 03 окт 2017, 09:06
Dev1
Особо не разбирался, т.к. нету есп и тм1637. Кое что нашел на гите по вашей проблеме. Там используют не int8_t, а uint8_t. По int16_t так же uint16_t...

TM1637 и ESP8266

Добавлено: 03 окт 2017, 13:50
xtern
эм, это как? я не очень то программист))

Добавлено (03.10.2017, 13:50)
---------------------------------------------
Спасибо , заработало, но не могу разобраться как включить двоеточие

TM1637 и ESP8266

Добавлено: 03 окт 2017, 14:52
Sancho
xtern писал(а):эм, это как? я не очень то программист))
Я тоже, но попытаюсь прояснить.
u= unsigned, т.е. беззнаковый тип, только положительные числа. 
uint16_t означает, что число будет представленно как беззнаковое(положительное), размером 16 бит.

TM1637 и ESP8266

Добавлено: 03 окт 2017, 15:28
Labu55
Sancho писал(а):это как?
Типы short, int, long и long long не имеют стандартного размера.
Как правило, их размер определяется исходя из процессорной архитектуры.
Пример
Для 8-битных микроконтроллеров: char— 8 бит, int-16 бит, long, float, double— 32 бита.
Для 32-х битных: char— 8 бит, short-16 бит, int, float— 32 бита,long, double— 64 бита.
Чтобы избавиться от неразберихи при переносе на разные платформы в стандарт были введены типы с фиксированным размером: uint8_t, int32_t, uint16_t, int64_t и т.д.
Это кратко, подробнее- знаете где искать.

TM1637 и ESP8266

Добавлено: 04 окт 2017, 05:39
xtern
ПОБЕДА!!! добавил Short и все срослось, спасибо за помощь

TM1637 и ESP8266

Добавлено: 04 окт 2017, 13:49
Labu55

xtern писал(а):ПОБЕДА!
И тут без "нечистой" не обошлось- Short poderi 

TM1637 и ESP8266

Добавлено: 05 окт 2017, 08:04
xtern
кому интересно блок выложил в профильной ветке