TM1637 и ESP8266
TM1637 и ESP8266
Приветствую знатоки , не понятная ерунда, пытаюсь скомпилировать проект с блоком ТМ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 нормально, но не устраивает
#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 нормально, но не устраивает
Последний раз редактировалось xtern 29 сен 2017, 10:03, всего редактировалось 1 раз.
TM1637 и ESP8266
думаю это из-за разрядности. атмега 8 битный. для него флоат занимает 4 байта или 32 бита. а есп 32 битный.
TM1637 и ESP8266
И как быть?
TM1637 и ESP8266
с long не работает
TM1637 и ESP8266
unsigned long ? double?
Добавлено (03.10.2017, 08:25)
---------------------------------------------
хотя наверное double может воспринять как 64 бит число...
Добавлено (03.10.2017, 08:26)
---------------------------------------------
еще можно поискать любой скетч для esp и посмотреть какой там тип данных используется
Добавлено (03.10.2017, 08:25)
---------------------------------------------
хотя наверное double может воспринять как 64 бит число...
Добавлено (03.10.2017, 08:26)
---------------------------------------------
еще можно поискать любой скетч для esp и посмотреть какой там тип данных используется
TM1637 и ESP8266
Особо не разбирался, т.к. нету есп и тм1637. Кое что нашел на гите по вашей проблеме. Там используют не int8_t, а uint8_t. По int16_t так же uint16_t...
Win10-64 FLProg v7.5.2 Portable ![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
![Стыдно :fie:](./images/smilies/ucoz_fie.gif)
TM1637 и ESP8266
эм, это как? я не очень то программист))
Добавлено (03.10.2017, 13:50)
---------------------------------------------
Спасибо , заработало, но не могу разобраться как включить двоеточие
Добавлено (03.10.2017, 13:50)
---------------------------------------------
Спасибо , заработало, но не могу разобраться как включить двоеточие
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Контактная информация:
TM1637 и ESP8266
Я тоже, но попытаюсь прояснить.xtern писал(а):эм, это как? я не очень то программист))
u= unsigned, т.е. беззнаковый тип, только положительные числа.
uint16_t означает, что число будет представленно как беззнаковое(положительное), размером 16 бит.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
TM1637 и ESP8266
Типы short, int, long и long long не имеют стандартного размера.Sancho писал(а):это как?
Как правило, их размер определяется исходя из процессорной архитектуры.
Пример
Для 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 и т.д.
Это кратко, подробнее- знаете где искать.
Последний раз редактировалось Labu55 03 окт 2017, 16:11, всего редактировалось 1 раз.
TM1637 и ESP8266
ПОБЕДА!!! добавил Short и все срослось, спасибо за помощь
TM1637 и ESP8266
И тут без "нечистой" не обошлось- Short poderixtern писал(а):ПОБЕДА!
TM1637 и ESP8266
кому интересно блок выложил в профильной ветке
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость