Skocz do zawartości

Problem ze skompilowaniem "gotowca" na ESP8266


Poszukiwany

Pomocna odpowiedź

Witam.
Znalazłem na YouTube stacje pogodową. W podpisie pod filmem jest adres do kodu źródłowego który należy otworzyć w Arduino IDE, wpisać/zmienić w 3 linijkach dane i działa.
Ja jako zielony szczypiorek na wiosnę. -Spróbujmy
Wczoraj przyszły zamówione komponenty, więc wierząc w swoje siły przysiadłem fałda pościągałem, po instalowałem i po spędzeniu w sumie 7h udało mi się dojść jakich bibliotek mi brakuje. Lecz przy kompilacji wywala mi błąd.

Cytat

Kompilowanie szkicu... "C:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "C:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/signing.py" --mode header --publickey "C:\\Users\\Asus\\Desktop\\andre\\ESP\\esp8266-weather-station-color/public.key" --out "C:\\Users\\Asus\\AppData\\Local\\Temp\\arduino_build_457180/core/Updater_Signing.h" "C:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/include" "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/lwip2/include" "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\Asus\\AppData\\Local\\Temp\\arduino_build_457180/core" -c -w -Werror=return-type -Os -g -free -fipa-pta -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -MMD -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10818 -DARDUINO_ESP8266_NODEMCU_ESP12E -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU_ESP12E\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\cores\\esp8266" "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\variants\\nodemcu" "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\SPI" "-IC:\\Users\\Asus\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.0.2\\libraries\\ESP8266WiFi\\src" "-IC:\\Users\\Asus\\Documents\\Arduino\\libraries\\ThingPulse_XPT2046_Touch-1.4.0" "-IC:\\Users\\Asus\\Documents\\Arduino\\libraries\\ESP8266_Weather_Station-2.1.0\\src" "-IC:\\Users\\Asus\\Documents\\Arduino\\libraries\\Json_Streaming_Parser" "-IC:\\Users\\Asus\\Documents\\Arduino\\libraries\\Mini_Grafx-1.2.5\\src" "C:\\Users\\Asus\\AppData\\Local\\Temp\\arduino_build_457180\\sketch\\esp8266-weather-station-color.ino.cpp" -o "C:\\Users\\Asus\\AppData\\Local\\Temp\\arduino_build_457180\\sketch\\esp8266-weather-station-color.ino.cpp.o" Użycie wcześniej skompilowanego pliku: C:\Users\Asus\AppData\Local\Temp\arduino_build_457180\sketch\TouchControllerWS.cpp.o esp8266-weather-station-color:83:31: error: 'TFT_CS' was not declared in this scope    83 | ILI9341_SPI tft = ILI9341_SPI(TFT_CS, TFT_DC);       |                               ^~~~~~ esp8266-weather-station-color:83:39: error: 'TFT_DC' was not declared in this scope    83 | ILI9341_SPI tft = ILI9341_SPI(TFT_CS, TFT_DC);       |                                       ^~~~~~ esp8266-weather-station-color:88:24: error: 'TOUCH_CS' was not declared in this scope    88 | XPT2046_Touchscreen ts(TOUCH_CS, TOUCH_IRQ);       |                        ^~~~~~~~ esp8266-weather-station-color:88:34: error: 'TOUCH_IRQ' was not declared in this scope    88 | XPT2046_Touchscreen ts(TOUCH_CS, TOUCH_IRQ);       |                                  ^~~~~~~~~ C:\Users\Asus\Desktop\andre\ESP\esp8266-weather-station-color\esp8266-weather-station-color.ino: In function 'void setup()': esp8266-weather-station-color:186:18: error: 'TFT_LED' was not declared in this scope   186 |   Serial.println(TFT_LED);       |                  ^~~~~~~ Użycie biblioteki SPI w wersji 1.0 z folderu: C:\Users\Asus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\SPI  Użycie biblioteki ESP8266WiFi w wersji 1.0 z folderu: C:\Users\Asus\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi  Użycie biblioteki ThingPulse_XPT2046_Touch-1.4.0 w wersji 1.4 z folderu: C:\Users\Asus\Documents\Arduino\libraries\ThingPulse_XPT2046_Touch-1.4.0  Użycie biblioteki ESP8266_Weather_Station-2.1.0 w wersji 2.1.0 z folderu: C:\Users\Asus\Documents\Arduino\libraries\ESP8266_Weather_Station-2.1.0  Użycie biblioteki Json_Streaming_Parser w wersji 1.0.5 z folderu: C:\Users\Asus\Documents\Arduino\libraries\Json_Streaming_Parser  Użycie biblioteki Mini_Grafx-1.2.5 w wersji 1.2.5 z folderu: C:\Users\Asus\Documents\Arduino\libraries\Mini_Grafx-1.2.5  exit status 1 'TFT_CS' was not declared in this scope

 

Mam płytkę Nodemcu CH340G V3 i ekranik MSP 2401 lub MSP 2042
Według LcdWiki sterownik który jest podany w kodzie powinien pasować. 
A wywala błąd. Może ze złej biblioteki korzystam?
Będę wdzięczny za jakąkolwiek pomoc/wskazówkę co jest nie tak.

 

esp8266-weather-station-color.zip

Edytowano przez Poszukiwany
Popsuta składnia
Link do komentarza
Share on other sites

2 godziny temu, Poszukiwany napisał:

TFT_CS' was not declared in this scope

To kluczowa sprawa, stawiam na literówkę lub złą bibliotekę, ze względu na "rodzaj sprawy" stawiam na tą drugą możliwość. Gość z YT nie dał linków do użytych bibliotek?

 

Możesz tu wkleić kod Twojego gotowca?

Edytowano przez SOYER
Link do komentarza
Share on other sites

11 godzin temu, Poszukiwany napisał:

66-weather-station-color:83:39: error: 'TFT


Pierwsza sprawa to wiesz że do pamięci SPIFFS musisz wgrać obrazki z fazami księżyca, a ja nie widzę w załączonym przez Ciebie kodzie katalogu 'data' ? Ale wracając do Twojego problemu...

Masz nie zadeklarowane stałe : TFT_DC, TFT_CS, TFT_LED, TOUCH_IRQ
Tworzysz obiekt 'tft' dla klasy ILI9341_SPI, do konstruktora z parametrem przesyłasz stałe TFT_CS i TFT_DC których nie zadeklarowałeś wcześniej, kompilator nie wie co to jest i nie zna wartości jakie te stałe przechowują. Brakuje Ci ich definicji i wartości dla nich (nr. pinów)

Odnajdź kod źródłowy tej biblioteki, zapoznaj się z jej dokumentacją, a najprościej z przykładem jej użycia, tam na pewno będzie deklaracja tych stałych.

#define TFT_DC D2

#define TFT_CS D1

#define TFT_LED D8

#define TOUCH_CS D3

#define TOUCH_IRQ D4

// Initialize the driver

ILI9341_SPI tft = ILI9341_SPI(TFT_CS, TFT_DC); // w tym momencie dopiero jest wiadome to TFT_CS, TFT_DC

Edytowano przez PowerTGS440
  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

15 godzin temu, SOYER napisał:

To kluczowa sprawa, stawiam na literówkę lub złą bibliotekę, ze względu na "rodzaj sprawy" stawiam na tą drugą możliwość. Gość z YT nie dał linków do użytych bibliotek?

 

Możesz tu wkleić kod Twojego gotowca?

Niestety nie podał. A cały program wrzuciłem w archiwum

Link do komentarza
Share on other sites

Twórca projektu może używał innego środowiska, w Arduino-IDE musisz mieć katalog data, tam przenieś pliki z obrazkami, wybierz model pamięci HUGE (3MB No OTA, 1MB Spiffs) i za pomocą NARZĘDZIA->ESP32 Sketch Data Upload przed kompilacją wgrają się one tam (jak nie masz tej opcji, musisz jeszcze ręcznie dodać plugin

dla ESP32FS (tutaj masz opis jak to zrobić) : https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/

dla ESP8266FS (tutaj) https://www.etechpath.com/setup-esp8266-filesystem-spiffs-uploader-in-arduino-ide/

sketch-data-upload[1].png

Edytowano przez PowerTGS440
Link do komentarza
Share on other sites

Udało się brakowało mi w setings.h 

Teraz po wgraniu wszystko gra prócz tego że mam obraz w poziomie a nie w pionie i teraz nie wiem w czym problem czy w kodzie czy w wyświetlaczu a może w samym podłączeniu.

Może ktoś to rozgryzie 

schemat.jpg

Link do komentarza
Share on other sites

NA WSTĘPIE ... PROJEKT ogólnie jest ZJE BA NY trochę obrazków (faz księzyca do SPIFFS), troche obrazków (pogoda, do pamięci PROGMEM za pośrednictwem weathericons.h bo się nie chciało ich na jpg przerobić, a to mało - bitmapy, matko i córko, ESP8266 bardzo dobrze radzi sobie z JPG, całkiem oszczędnie nie robiąc w pamięci RAM demolki) - porażka - jakiś mix kilku projektów i na dokładkę pseudo-biblioteka MiniGrafx - niby składowa ILI***, ale to porażka !!! ktoś napisał bibliotekę, a potem do niej coś dołożył by w ogóle coś z niej było :-) do obsługi innej biblioteki - (czemu, przeczytasz dalej)  a po drugie

KUP sobie książkę 🙂 (LEPSZEJ NIE MA - TA JEDNA CI WYSTARCZY) Stephen Prata - Szkoła Programowania Język C++, 1300 stron, na Allegro w b.dobrym stanie używkę od jakiegoś studenta wyhaczysz za 30-40zł (lub 8zł taka okazja https://allegro.pl/oferta/szkola-programowania-jezyk-c-stephen-prata-wyd-v-11561651861 ale ja nie znam sprzedawcy, tak się pokazało w wyszukiwarce ALLEGRO), czy tam max 70zł z jakiegoś handlarza książkami - to najlepsza pozycja, niezbędnik który musisz mieć !!!

odpowiedź znajdziesz w bibliotece której używasz 🙂 https://github.com/ThingPulse/minigrafx/blob/master/src/MiniGrafx.h

gdzieś tam jak przeanalizujesz kod projektu nazwa.ino który używasz tworzysz obiekt gfx dla klasy MiniGrafx, do którego przesyłasz adres już utworzonego wcześniej obiektu tft klasy ILI9341 - trochę to dla mnie tak na marginesie chore, biblioteka napisana do obsługi innej biblioteki, prawie jak amatorski CHIP-TUNNING sterownika silnika w samochodzie (jak można oryginał przeprogamować) - ale to gotowiec, jak działa to O.K. - ja bym ale powiedzmy że trochę jestem na innym poziomie zrobiłbym to inaczej - ale to nie istotne 🙂 istnieje potężna biblioteka TFT_eSPI.h która obsługuje 99% wyświetlaczy dla ESP32/ESP8266/Arduino nawet z ekranami dotykowimi oraz obsługą karty SD i nic więcej do szczęścia nie potrzeba, a tu jakieś kombinacje i utrudnienia. Takiego gotowca masz, jak masz 🙂 ale się nie poddajemy, więc kup książkę i się ucz !

MiniGrafx gfx = MiniGrafx(&tft, BITS_PER_PIXEL, palette);

w pliku MiniGrafx.h masz deklaracje klasy i metod   !!!
w pliku MiniGrafx.cpp masz definicje klasy i metod  !!!

za ustawienie sposobu wyświetlania (ROTACJA) jest odpowiedzialna funkcja (fachowe nazewnictwo : metoda klasy):

void setRotation(uint8_t r);

czyli wywołaj ( w sekcji setup) czy gdzie ci tam wygodniej

byte rotacja = 1;                        // rotacja przyjmuje wartości 0,1,2,3) tak wnioskuje z zapisu rotation = m % 4; // can't be higher than 3
gfx.setRotation(rotacja);           // wywołanie metody dla obiektu gfx

obliczanie reszty z dzielenia 🙂 m % 4 🙂 mistrz tworzył tą biblioteką, podniecało go modulo chyba !!! dla ESP to proste obliczenie, dla Arduino UNO czy MEGA nie koniecznie, wystarczyło przesłać 0 lub 1 - no ale ktoś się chciał pochwalić znajomością matematyki 🙂 bo ekranu do góry nogami tą metodą i tak nie odwróci ... GENIUSZ KUR...WA MAC, po czym linijka kodu rozpierdala mnie na maxa 

this->driver->setRotation(m);

tyle skomplikowanych obliczeń 🙂 tyle zachodu 🙂 po czym autor biblioteki MiniGrafx na końcu i tak wysyła do metody klasy ILI9341_SPI nie naruszoną wartość zmiennej 🙂 CZAD KUR...WA CZAD 🙂 a wystarczyła 1 linijka jego pseudo-klasy, chyba że to taki DELAY 🙂 bo wartości weigh i heitgt mozna pozyskac z klasy ILI***

inline void MiniGrafx::setRotation(uint8_t m) { this->driver->setRotation(m); }

Już Ci pisałem, zapoznaj się z bibioteką której używasz i z metodami jej klasy !!! wszystkie metody publiczne oznaczone etykietą "public: "możesz używać za pomocą nazwa_obiektu.nazwa_metody(). Do metod prywatnych "private:" się nie odwołasz, co wcale nie oznacza że nie można, ale proponuje jakąś lekturę o budowie klas. Biblioteka ma pełny kod źródłowy, możesz ją przebudować jak Ci się tylko podoba.

 

Edytowano przez PowerTGS440
  • Lubię! 2
Link do komentarza
Share on other sites

void MiniGrafx::setRotation(uint8_t m) {
  rotation = m % 4; // can't be higher than 3
  switch (rotation) {
   case 0:
   case 2:
     this->width  = this->initialWidth;
     this->height = this->initialHeight;
     break;
   case 1:
   case 3:
     this->width  = this->initialHeight;
     this->height = this->initialWidth;
     break;
  }
  this->driver->setRotation(m);
}

jak widzisz 🙂
jeśli do funkcji prześlesz 0 lub 2 to : szerokosc = szerokosc, wysokosc = wysokosc 
jeśli do funkcji prześlesz 1 lub 3 to  : szerokosc = wysokosc, wysokosc = szerokosc
zrozumiał ? i ekran się obraca 🙂
a co to wskaźnik 'this' to sobie doczytaj, ze widht to po polskiemu coś tam, a height co po polskiemu coś tam to w translatorze przetłumacz


tylko że, nie chciało mi się analizować tej pseudo-biblioteki, wystarczyła by w niej jedna linijka :
this->driver->setRotation(m);

a wartości dla zmiennych this->width i this->height o ile są w ogóle używane !!! pobrać można z klasy ILI***, jak ich nie ma to tylko 2 linijki kodu, bo na pewno gdzieś takie zmienne prywatne w klasie ILI*** istnieją

inline ILI*** :: returnH { return heigh};
inline ILI*** :: returnW (return weight}:

MASAKRA !!! To się nazywa, nie wiem jak, ZAMULACZ PROCESORA ?

 

Edytowano przez PowerTGS440
Link do komentarza
Share on other sites

14 godzin temu, PowerTGS440 napisał:

NA WSTĘPIE ... PROJEKT ogólnie jest ZJE BA NY trochę obrazków (faz księzyca do SPIFFS), troche obrazków (pogoda, do pamięci PROGMEM za pośrednictwem weathericons.h bo się nie chciało ich na jpg przerobić, a to mało - bitmapy, matko i córko, ESP8266 bardzo dobrze radzi sobie z JPG, całkiem oszczędnie nie robiąc w pamięci RAM demolki) - porażka - jakiś mix kilku projektów i na dokładkę pseudo-biblioteka MiniGrafx - niby składowa ILI***, ale to porażka !!! ktoś napisał bibliotekę, a potem do niej coś dołożył by w ogóle coś z niej było :-) do obsługi innej biblioteki - (czemu, przeczytasz dalej)  a po drugie

KUP sobie książkę 🙂 (LEPSZEJ NIE MA - TA JEDNA CI WYSTARCZY) Stephen Prata - Szkoła Programowania Język C++, 1300 stron, na Allegro w b.dobrym stanie używkę od jakiegoś studenta wyhaczysz za 30-40zł (lub 8zł taka okazja https://allegro.pl/oferta/szkola-programowania-jezyk-c-stephen-prata-wyd-v-11561651861 ale ja nie znam sprzedawcy, tak się pokazało w wyszukiwarce ALLEGRO), czy tam max 70zł z jakiegoś handlarza książkami - to najlepsza pozycja, niezbędnik który musisz mieć !!!

odpowiedź znajdziesz w bibliotece której używasz 🙂 https://github.com/ThingPulse/minigrafx/blob/master/src/MiniGrafx.h

gdzieś tam jak przeanalizujesz kod projektu nazwa.ino który używasz tworzysz obiekt gfx dla klasy MiniGrafx, do którego przesyłasz adres już utworzonego wcześniej obiektu tft klasy ILI9341 - trochę to dla mnie tak na marginesie chore, biblioteka napisana do obsługi innej biblioteki, prawie jak amatorski CHIP-TUNNING sterownika silnika w samochodzie (jak można oryginał przeprogamować) - ale to gotowiec, jak działa to O.K. - ja bym ale powiedzmy że trochę jestem na innym poziomie zrobiłbym to inaczej - ale to nie istotne 🙂 istnieje potężna biblioteka TFT_eSPI.h która obsługuje 99% wyświetlaczy dla ESP32/ESP8266/Arduino nawet z ekranami dotykowimi oraz obsługą karty SD i nic więcej do szczęścia nie potrzeba, a tu jakieś kombinacje i utrudnienia. Takiego gotowca masz, jak masz 🙂 ale się nie poddajemy, więc kup książkę i się ucz !

MiniGrafx gfx = MiniGrafx(&tft, BITS_PER_PIXEL, palette);

w pliku MiniGrafx.h masz deklaracje klasy i metod   !!!
w pliku MiniGrafx.cpp masz definicje klasy i metod  !!!

za ustawienie sposobu wyświetlania (ROTACJA) jest odpowiedzialna funkcja (fachowe nazewnictwo : metoda klasy):

void setRotation(uint8_t r);

czyli wywołaj ( w sekcji setup) czy gdzie ci tam wygodniej

byte rotacja = 1;                        // rotacja przyjmuje wartości 0,1,2,3) tak wnioskuje z zapisu rotation = m % 4; // can't be higher than 3
gfx.setRotation(rotacja);           // wywołanie metody dla obiektu gfx

obliczanie reszty z dzielenia 🙂 m % 4 🙂 mistrz tworzył tą biblioteką, podniecało go modulo chyba !!! dla ESP to proste obliczenie, dla Arduino UNO czy MEGA nie koniecznie, wystarczyło przesłać 0 lub 1 - no ale ktoś się chciał pochwalić znajomością matematyki 🙂 bo ekranu do góry nogami tą metodą i tak nie odwróci ... GENIUSZ KUR...WA MAC, po czym linijka kodu rozpierdala mnie na maxa 

this->driver->setRotation(m);

tyle skomplikowanych obliczeń 🙂 tyle zachodu 🙂 po czym autor biblioteki MiniGrafx na końcu i tak wysyła do metody klasy ILI9341_SPI nie naruszoną wartość zmiennej 🙂 CZAD KUR...WA CZAD 🙂 a wystarczyła 1 linijka jego pseudo-klasy, chyba że to taki DELAY 🙂 bo wartości weigh i heitgt mozna pozyskac z klasy ILI***

inline void MiniGrafx::setRotation(uint8_t m) { this->driver->setRotation(m); }

Już Ci pisałem, zapoznaj się z bibioteką której używasz i z metodami jej klasy !!! wszystkie metody publiczne oznaczone etykietą "public: "możesz używać za pomocą nazwa_obiektu.nazwa_metody(). Do metod prywatnych "private:" się nie odwołasz, co wcale nie oznacza że nie można, ale proponuje jakąś lekturę o budowie klas. Biblioteka ma pełny kod źródłowy, możesz ją przebudować jak Ci się tylko podoba.

 

Z tego co znalazłem w necie kiedy szukałem sam na początku dotarłem do tego że ta stacja pogodowa była pisana na płytkę Ardiuno i lcd2x16. Potem zaczęło się przerabianie na inne płytki i wyświetlacze (nawet ten z noki 3100) więc nie dziw się ludzie są leniwi jak coś działa to po co ruszać, zmienić bibliotekę i działa (wiem trochę spłycam ale wiesz chyba co mam na myśli). Co do nauki może zacznę ale jak na razie to więcej z tym zachodu niż to warte (może dlatego że brak mi jakichkolwiek podstaw) niemniej podczas swoich poszukiwań zauważyłem potencjał ESP8266 i temu podobnych ale naukę zacznę raczej Pythona i micropythona ( miałem jakąś styczność ) lub LUA niż C++. 

Co do mojego "wykonania" tego projektu to wpadłem na niego szukając zupełnie czegoś innego. Patrząc na filmik i wykonanie to naprawdę nic skomplikowanego, ot taka samo-stójka.  

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.