jest to pierwsza moja prośba o pomoc.
Dotychczas udawało mi się rozwiązywać wszystkie moje mikrokontrolerowe problemy samodzielnie, bądź korzystając z dobrodziejstw Internetu
Ale rzeźbię projekcik na ESP8266 - wieczny zegar (NTP) na 7seg - na teraz moduł z dwoma rejestrami 595.
Natknałem się na taki problem, na którym ugrzązłem jak na razie.
Kompliuję taki oto fragment kodu:
Kod: Zaznacz cały
#define _A_ 0x01
#define _B_ 0x02
#define _C_ 0x04
#define _D_ 0x08
#define _E_ 0x10
#define _F_ 0x20
#define _G_ 0x40
#define _DP_ 0x80
const uint8_t LED_7SEG[] = {
~(_A_|_B_|_C_|_D_|_E_|_F_), // 0
~(_B_|_C_), // 1
~(_A_|_B_|_G_|_D_|_E_), // 2
~(_A_|_B_|_C_|_D_|_G_), // 3
~(_B_|_C_|_F_|_G_), // 4
~(_A_|_C_|_D_|_F_|_G_), // 5
~(_A_|_C_|_D_|_E_|_F_|_G_), // 6
~(_A_|_B_|_C_), // 7
~(_A_|_B_|_C_|_D_|_E_|_F_|_G_), // 8
~(_A_|_B_|_C_|_D_|_F_|_G_), // 9
~(_A_|_B_|_C_|_E_|_F_|_G_), // A
~(_C_|_D_|_E_|_F_|_G_), // b
~(_D_|_E_|_G_), // c
~(_B_|_C_|_D_|_E_|_G_), // d
~(_A_|_D_|_E_|_F_|_G_), //e
~(_A_|_E_|_F_|_G_), // f
~(_A_|_B_|_E_|_F_|_G_), // P [0x10]
~_G_, // - [0x11]
~_A_, ~_B_, ~_C_, ~_D_, ~_E_, ~_F_, // 0x12 - 0x17
0 // 0x18
};
I dostaję multum ostrzeżeń o nieprawidłowej konwersji:
"warning: narrowing conversion of '-33' from 'int' to 'const uint8_t {aka const unsigned char}' inside { } [-Wnarrowing]"
Czyli z #define bierze sobie int (wychodzi mu ujemny) i próbuje go upchnąć w tablicy jako uint8_t.
Oczywiście po tej konwersji jest parę dziwnych znaków.
Poradziłem sobie na szybko tworząc tablicę konkretnych wartości i jest prawie dobrze, jeszcze tylko "dot" mi się świeci, ale to nie problem.
Chciałbym mieć możliwość "przyjaznego" projektowania znaków, a tutaj coś takiego...
Kod kompiluje się pod g++ w eclipse i daje poprawne wyniki.
Może ktoś ma pomysł na ten problem?
Pozdrawiam
Jurek