szeryf Grudzień 8, 2020 Udostępnij Grudzień 8, 2020 Witam, mam kolejne pytanie. Czy przy podłączeniu kilku wyświetlaczy 7-segmentowych przez ekspandery PCF8574, da się nimi sterować przy użyciu biblioteki SevSeg lub innej? Podłączyłem wyświetlacze 3-cyfrowe FJ5361BH w ten sposób, że diody są podłączone do wyprowadzeń ekspanderów, a anody są sterowane z pinów w Arduino. Nie wiem, czy takie podłączenie jest zgodne ze sztuką, ale nigdzie nie znalazłem przykładów pokazujących, jak to zrobić. Ręcznie sterować się tym da, ale są pewne dziwne zachowania takiego układu, których nie rozumiem. Kiedy pierwsza cyfra coś wyświetla, to pozostałe cyfry świecą dużo słabiej, kiedy pierwsza jest wyłączona pozostałe dwie świecą normalnie.
Treker (Damian Szymański) Grudzień 9, 2020 Udostępnij Grudzień 9, 2020 @szeryf w takim przypadku musisz wykorzystać bibliotekę do wyświetlaczy 7-segmentowych, która potrafi współpracować z wyświetlaczami podłączonymi przez ekspander. Nie każda biblioteka do wyświetlaczy będzie miała taką możliwość 1
galism Luty 26, 2021 Udostępnij Luty 26, 2021 Moje rozwiązanie zadania 6.3 #define SEG_C 2 #define SEG_E 3 #define SEG_D 4 #define SEG_B 5 #define SEG_G 6 #define SEG_A 7 #define SEG_F 8 #define W1 9 #define W2 10 void setup() { //Konfiguracja pinow jako wyjscia pinMode(SEG_A, OUTPUT); pinMode(SEG_B, OUTPUT); pinMode(SEG_C, OUTPUT); pinMode(SEG_D, OUTPUT); pinMode(SEG_E, OUTPUT); pinMode(SEG_F, OUTPUT); pinMode(SEG_G, OUTPUT); pinMode (W1, OUTPUT); pinMode (W2, OUTPUT); } void loop() { int i = 0; int j; int y = 0; for (i = 0; i < 100; i++) { y = 0; do { digitalWrite(W1, HIGH); //Włącz pierwszy wyświetlacz digitalWrite(W2, LOW); //Wyłącz drugi wyswietlacz(i / 10); //Wyswietl wartosc na wyswietlaczu delay(10); digitalWrite(W1, LOW); //Wyłącz pierwszy wyświetlacz digitalWrite(W2, HIGH); //Włącz drugi j = i - (i / 10) * 10; wyswietlacz(j); //Wyswietl wartosc na wyswietlaczu delay(10); y++; } while (y < 20); } } void wyswietlacz(int cyfra) { //Instrukcja switch ustawia odpowiednie stany na wyjsciach //w zaleznosci od podanej cyfry switch (cyfra) { case 0: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, HIGH); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, LOW); break; case 1: digitalWrite(SEG_A, LOW); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, LOW); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, LOW); digitalWrite(SEG_G, LOW); break; case 2: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, LOW); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, HIGH); digitalWrite(SEG_F, LOW); digitalWrite(SEG_G, HIGH); break; case 3: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, LOW); digitalWrite(SEG_G, HIGH); break; case 4: digitalWrite(SEG_A, LOW); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, LOW); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); break; case 5: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, LOW); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); break; case 6: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, LOW); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, HIGH); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); break; case 7: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, LOW); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, LOW); digitalWrite(SEG_G, LOW); break; case 8: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, HIGH); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); break; case 9: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, HIGH); digitalWrite(SEG_C, HIGH); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, HIGH); digitalWrite(SEG_G, HIGH); break; default: digitalWrite(SEG_A, HIGH); digitalWrite(SEG_B, LOW); digitalWrite(SEG_C, LOW); digitalWrite(SEG_D, HIGH); digitalWrite(SEG_E, LOW); digitalWrite(SEG_F, LOW); digitalWrite(SEG_G, HIGH); break; } } Sugestie mile widziane. 1
Gieneq Marzec 2, 2021 Udostępnij Marzec 2, 2021 @galism Ciekawy sposób rozwiązania zadania a mógłbyś w ramach zadania z gwiazdką spróbować pozbyć się tego opóźnienia i pętli o 20 iteracjach ze zmienną y? Z tego co rozumiem służy ona zapewnieniu opóźnienia bez zacinania programu i tu zgodzę się dobra idea! Ale jakby tak zrobić, że program odświeża wyświetlacz z zadaną częstotliwością? Coś jak FPS w grach. Spróbuj
HubertHubertHub Maj 1, 2021 Udostępnij Maj 1, 2021 Witam wszytskich, mam pytanie, czy ktoś może zrobił zadanie 6.3 z przyciskami?
Treker (Damian Szymański) Maj 1, 2021 Udostępnij Maj 1, 2021 @HubertHubertHub witam na forum Napisz z czym dokładnie masz problem - chętnie pomożemy!
Shary Maj 15, 2021 Udostępnij Maj 15, 2021 Ja mam pytanie trochę z innej beczki, techniczne. Jak dobrze rozumiem podstawy elektroniki, a nie twierdzę, że dobrze rozumiem to nie ma różnicy w którym miejscu w obwodzie podłączymy rezystor (w sensie oczywiście czy do np. anody czy katody diody). Poprawcie mnie jeśli się mylę, ale nie zrobi to jej (diodzie) różnicy. Czy w przypadku takiego wyświetlacza 7-segmentowego, jeżeli mam 1 wspólną katodę, to czy nie mogę podłączyć tylko 1 rezystora do niej zamiast 7 rezystorów do anod?
maciekb Maj 15, 2021 Udostępnij Maj 15, 2021 1 godzinę temu, Shary napisał: Czy w przypadku takiego wyświetlacza 7-segmentowego, jeżeli mam 1 wspólną katodę, to czy nie mogę podłączyć tylko 1 rezystora do niej zamiast 7 rezystorów do anod? Hej! Zadałem niedawno dokładnie takie samo pytanie Możesz rzucić okiem: 2
Shary Maj 16, 2021 Udostępnij Maj 16, 2021 (edytowany) Dzięki, dokładnie o to mi chodziło - a nie mogłem znaleźć potwierdzenia mojej teorii. Muszę sobie sam poeksperymentować z takimi wyświetlaczami bo nie mam doświadczenia z tym. Czyli tak jak myślałem, można bo to logiczne, ale im więcej segmentów zaświecisz tym większy problem. Co będzie skutkować nierównym podświetleniem. Edytowano Maj 16, 2021 przez Shary
Vuko Wrzesień 28, 2021 Udostępnij Wrzesień 28, 2021 Dnia 31.08.2017 o 15:52, Radosław napisał: Moje rozwiązanie zadania 6.3 : #define seg_a 7 //Opis #define seg_b 5 //segmentów #define seg_c 2 // i #define seg_d 4 // ich #define seg_e 3 //pinów #define seg_f 6 #define seg_g 8 #define wys_jed 9 // piny do #define wys_dwa 10 // wyświetlaczy void setup() { pinMode(seg_a,OUTPUT); pinMode(seg_b,OUTPUT); pinMode(seg_c,OUTPUT); pinMode(seg_d,OUTPUT); pinMode(seg_e,OUTPUT); pinMode(seg_f,OUTPUT); pinMode(seg_g,OUTPUT); pinMode(wys_jed,OUTPUT); pinMode(wys_dwa,OUTPUT); } void loop() { for(int j=0;j<10;j++) //Pętla do zmiany pierwszej cyfry { for ( int i=0;i<10;i++){ //Pętla do zmiany drugiej cyfry for(int k=0; k<30; k++){ //Pętla do ustawiania szybkości licznika digitalWrite(wys_jed,HIGH); //Włączamy 1. wyświetlacz digitalWrite(wys_dwa,LOW); //Włączamy 2. wyświetlacz showTheNumber(j); //Funkcja dobierająca odopwiednią cyfrę ( kod poniżej ) delay(5); digitalWrite(wys_dwa,HIGH); //Włączamy 2. wyświetlacz digitalWrite(wys_jed,LOW); //Wyłączamy 1. wyświetlacz showTheNumber(i); delay(5); } } } } void showTheNumber(byte number){ switch(number){ case 0: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,HIGH); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,LOW); break; case 1: digitalWrite(seg_a,LOW); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,LOW); digitalWrite(seg_e,LOW); digitalWrite(seg_f,LOW); digitalWrite(seg_g,LOW); break; case 2: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,LOW); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,HIGH); digitalWrite(seg_f,LOW); digitalWrite(seg_g,HIGH); break; case 3: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,LOW); digitalWrite(seg_f,LOW); digitalWrite(seg_g,HIGH); break; case 4: digitalWrite(seg_a,LOW); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,LOW); digitalWrite(seg_e,LOW); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,HIGH); break; case 5: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,LOW); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,LOW); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,HIGH); break; case 6: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,LOW); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,HIGH); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,HIGH); break; case 7: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,LOW); digitalWrite(seg_e,LOW); digitalWrite(seg_f,LOW); digitalWrite(seg_g,LOW); break; case 8: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,HIGH); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,HIGH); break; case 9: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,HIGH); digitalWrite(seg_c,HIGH); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,LOW); digitalWrite(seg_f,HIGH); digitalWrite(seg_g,HIGH); break; default: digitalWrite(seg_a,HIGH); digitalWrite(seg_b,LOW); digitalWrite(seg_c,LOW); digitalWrite(seg_d,HIGH); digitalWrite(seg_e,LOW); digitalWrite(seg_f,LOW); digitalWrite(seg_g,HIGH); break; } } Witam, czy ktoś mógłby wytłumaczyć tak po chłopsku dlaczego i jak działa 'kaskada' 3 pętli for w powyższym kodzie? Nie mogę rozgryźć jak to się dzieje, że cyfra dziesiątek zmienia się dopiero kiedy jedności doliczą do 9. Proszę o wyjaśnienie w 'zwolnionym tempie' w swoim układzie zastosowałem wyświetlacz 4 cyfrowy i rozbudowałem ową 'kaskadę' o 2 kolejne stopnie. Licznik działa pięknie i odlicza do 9999 ale chciałbym wiedzieć na jakiej zasadzie. Pozdrawiam.
Gieneq Wrzesień 30, 2021 Udostępnij Wrzesień 30, 2021 @Vuko najlepiej wyobraź sobie jak zmienia się zmienna służąca do iteracji w każdej z pętli. Np j zmienia się najrzadziej bo musi poczekać aż i się doliczy do końca i k doliczy do końca czyli czeka aż 300 kolejek. Więc jeżeli i jest związane z jednościami a j (ta zewnętrzna pętla) z dziesiątkami to ta zewnętrzna (dziesiątki) czeka aż ta wewnętrzna (jedności) doliczy od 0 do 9.
StefanekP Luty 2, 2022 Udostępnij Luty 2, 2022 Czy to możliwe, że wyświetlacz z mojego zestawu jest inny niż ten w kursie? Bo mam wszystko złożone tak jak w kursie, kod też taki sam, a układ zachowuje się tak, jakby segmenty f i g były zamienione miejscami.
Gieneq Luty 3, 2022 Udostępnij Luty 3, 2022 @StefanekP sprawdź każdy pin i porównaj z dokumentacją/tym co jest opisane w kursie. Podłącz do 5V rezystor i przytknij kabelek do każdego wyprowadzenia.
StefanekP Luty 3, 2022 Udostępnij Luty 3, 2022 Sprawdziłem, wszystko jest tak jak w kursie. Dziwne. 1
Pierunek Lipiec 30, 2022 Udostępnij Lipiec 30, 2022 (edytowany) Nikt się nie chwali swoim dziełem to ja się pochwalę :] Zad 6.1 #define SEG_A 0 #define SEG_B 1 #define SEG_C 2 #define SEG_D 3 #define SEG_E 4 #define SEG_F 5 #define SEG_G 6 #define P 7 #define S1 8 #define S2 9 #define S3 10 #define WYSW_1 11 #define WYSW_2 12 int i = 0 ; void setup() { // Konfiguracja pinow jako wyjscia pinMode(SEG_A , OUTPUT) ; pinMode(SEG_B , OUTPUT) ; pinMode(SEG_C , OUTPUT) ; pinMode(SEG_D , OUTPUT) ; pinMode(SEG_E , OUTPUT) ; pinMode(SEG_F , OUTPUT) ; pinMode(SEG_G , OUTPUT) ; pinMode(P , OUTPUT) ; pinMode(S1 , INPUT_PULLUP) ; pinMode(S2 , INPUT_PULLUP) ; pinMode(S3 , INPUT_PULLUP) ; pinMode(WYSW_1 , OUTPUT ) ; pinMode(WYSW_2 , OUTPUT) ; // test segmentow digitalWrite(SEG_A , HIGH) ; digitalWrite(SEG_B , HIGH) ; digitalWrite(SEG_C , HIGH) ; digitalWrite(SEG_D , HIGH) ; digitalWrite(SEG_E , HIGH) ; digitalWrite(SEG_F , HIGH) ; digitalWrite(SEG_G , HIGH) ; digitalWrite(WYSW_1 , HIGH) ; digitalWrite(WYSW_2 , LOW) ; } void loop() { for(i = 0 ; i <= 10 ; i++) { wyswietlacz(i) ; delay(500) ; } } void wyswietlacz(int cyfra) { switch(cyfra) { case 0: lcd(1,1,1,1,1,1,0,0) ; break ; case 1: lcd(0,1,1,0,0,0,0,0) ; break ; case 2: lcd(1,1,0,1,1,0,1,0) ; break ; case 3: lcd(1,1,1,1,0,0,1,0) ; break ; case 4: lcd(0,1,1,0,0,1,1,0) ; break ; case 5: lcd(1,0,1,1,0,1,1,0) ; break ; case 6: lcd(1,0,1,1,1,1,1,0) ; break ; case 7: lcd(1,1,1,0,0,0,0,0) ; break ; case 8: lcd(1,1,1,1,1,1,1,0) ; break ; case 9: lcd(1,1,1,1,0,1,1,0) ; break ; default: lcd(1,0,0,1,0,0,1,1) ; break ; } } void lcd(bool a , bool b , bool c , bool d , bool e , bool f , bool g , bool p) { digitalWrite(SEG_A , a) ; digitalWrite(SEG_B , b) ; digitalWrite(SEG_C , c) ; digitalWrite(SEG_D , d) ; digitalWrite(SEG_E , e) ; digitalWrite(SEG_F , f) ; digitalWrite(SEG_G , g) ; digitalWrite(P , p) ; } Zad 6.2 #define SEG_A 0 #define SEG_B 1 #define SEG_C 2 #define SEG_D 3 #define SEG_E 4 #define SEG_F 5 #define SEG_G 6 #define P 7 #define S1 8 #define S2 9 #define S3 10 #define WYSW_1 11 int i = 0 ; void setup() { // Konfiguracja pinow jako wyjscia pinMode(SEG_A , OUTPUT) ; pinMode(SEG_B , OUTPUT) ; pinMode(SEG_C , OUTPUT) ; pinMode(SEG_D , OUTPUT) ; pinMode(SEG_E , OUTPUT) ; pinMode(SEG_F , OUTPUT) ; pinMode(SEG_G , OUTPUT) ; pinMode(P , OUTPUT) ; pinMode(S1 , INPUT_PULLUP) ; pinMode(S2 , INPUT_PULLUP) ; pinMode(S3 , INPUT_PULLUP) ; pinMode(WYSW_1 , OUTPUT ) ; // test segmentow digitalWrite(SEG_A , HIGH) ; digitalWrite(SEG_B , HIGH) ; digitalWrite(SEG_C , HIGH) ; digitalWrite(SEG_D , HIGH) ; digitalWrite(SEG_E , HIGH) ; digitalWrite(SEG_F , HIGH) ; digitalWrite(SEG_G , HIGH) ; digitalWrite(WYSW_1 , HIGH) ; } void loop() { if(digitalRead(S1) == LOW) i = i - 1 ; if(digitalRead(S2) == LOW) i = i + 1 ; if(digitalRead(S3) == LOW) i = 0 ; wyswietlacz(i) ; delay(200) ; } void wyswietlacz(int cyfra) { switch(cyfra) { case 0: lcd(1,1,1,1,1,1,0,0) ; break ; case 1: lcd(0,1,1,0,0,0,0,0) ; break ; case 2: lcd(1,1,0,1,1,0,1,0) ; break ; case 3: lcd(1,1,1,1,0,0,1,0) ; break ; case 4: lcd(0,1,1,0,0,1,1,0) ; break ; case 5: lcd(1,0,1,1,0,1,1,0) ; break ; case 6: lcd(1,0,1,1,1,1,1,0) ; break ; case 7: lcd(1,1,1,0,0,0,0,0) ; break ; case 8: lcd(1,1,1,1,1,1,1,0) ; break ; case 9: lcd(1,1,1,1,0,1,1,0) ; break ; default: lcd(1,0,0,1,0,0,1,1) ; break ; } } void lcd(bool a , bool b , bool c , bool d , bool e , bool f , bool g , bool p) { digitalWrite(SEG_A , a) ; digitalWrite(SEG_B , b) ; digitalWrite(SEG_C , c) ; digitalWrite(SEG_D , d) ; digitalWrite(SEG_E , e) ; digitalWrite(SEG_F , f) ; digitalWrite(SEG_G , g) ; digitalWrite(P , p) ; } Zad 6.3 Zad 6.3 forbot.pl #define SEG_A 0 #define SEG_B 1 #define SEG_C 2 #define SEG_D 3 #define SEG_E 4 #define SEG_F 5 #define SEG_G 6 #define WYSW_1 11 #define WYSW_2 12 void setup() { // Konfiguracja pinow jako wyjscia pinMode(SEG_A , OUTPUT) ; pinMode(SEG_B , OUTPUT) ; pinMode(SEG_C , OUTPUT) ; pinMode(SEG_D , OUTPUT) ; pinMode(SEG_E , OUTPUT) ; pinMode(SEG_F , OUTPUT) ; pinMode(SEG_G , OUTPUT) ; pinMode(S1 , INPUT_PULLUP) ; pinMode(S2 , INPUT_PULLUP) ; pinMode(S3 , INPUT_PULLUP) ; pinMode(WYSW_1 , OUTPUT ) ; pinMode(WYSW_2 , OUTPUT) ; // test segmentow digitalWrite(SEG_A , HIGH) ; digitalWrite(SEG_B , HIGH) ; digitalWrite(SEG_C , HIGH) ; digitalWrite(SEG_D , HIGH) ; digitalWrite(SEG_E , HIGH) ; digitalWrite(SEG_F , HIGH) ; digitalWrite(SEG_G , HIGH) ; digitalWrite(WYSW_1 , HIGH) ; digitalWrite(WYSW_2 , HIGH) ; } void loop() { for(int a = 0 ; a < 10 ; a++) { for(int b = 0 ; b < 10 ; b++) { digitalWrite(WYSW_1, HIGH); digitalWrite(WYSW_2, LOW); wyswietlacz(a); delay(50); digitalWrite(WYSW_1, LOW); digitalWrite(WYSW_2, HIGH); wyswietlacz(b); delay(50); } } } void wyswietlacz(int cyfra) { switch(cyfra) { case 0: lcd(1,1,1,1,1,1,0,0) ; break ; case 1: lcd(0,1,1,0,0,0,0,0) ; break ; case 2: lcd(1,1,0,1,1,0,1,0) ; break ; case 3: lcd(1,1,1,1,0,0,1,0) ; break ; case 4: lcd(0,1,1,0,0,1,1,0) ; break ; case 5: lcd(1,0,1,1,0,1,1,0) ; break ; case 6: lcd(1,0,1,1,1,1,1,0) ; break ; case 7: lcd(1,1,1,0,0,0,0,0) ; break ; case 8: lcd(1,1,1,1,1,1,1,0) ; break ; case 9: lcd(1,1,1,1,0,1,1,0) ; break ; default: lcd(1,0,0,1,0,0,1,1) ; break ; } } void lcd(bool a , bool b , bool c , bool d , bool e , bool f , bool g , bool p) { digitalWrite(SEG_A , a) ; digitalWrite(SEG_B , b) ; digitalWrite(SEG_C , c) ; digitalWrite(SEG_D , d) ; digitalWrite(SEG_E , e) ; digitalWrite(SEG_F , f) ; digitalWrite(SEG_G , g) ; digitalWrite(P , p) ; } wyśw z pot. Edytowano Lipiec 31, 2022 przez Pierunek poprawka wg sugestii :] 1
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »