Inkrementacja zmiennej

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
maver144
Młodszy majsterkowicz
Posty: 2
Rejestracja: 5 sie 2016, 15:51

Inkrementacja zmiennej

Post autor: maver144 » 5 sie 2016, 15:59

Mam pewien problem związany ze zmiennymi w arduino. Podczas trwania pętli loop w instrukcji warunkowej inkrementuje pewną zmienną. Natomiast po wyjściu z if'a wraca ona do wartości początkowej.

Kod: Zaznacz cały

	
	#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);

void setup(){
  Serial.begin(9600);
  while(!Serial);
  pinMode(A0,INPUT);
  lcd.begin(16,2);
  lcd.print("ABCDEFGHIJKLMNOP");
  lcd.setCursor(0,1);
  lcd.print("QRSTUVWXYZ");
  lcd.cursor();
  }

void loop(){
  float odczyt = analogRead(A0)/1024.00*5;
  float T1;
  float T2;
  int counterX = 0;
  int counterY = 0;

  
  
  T1=analogRead(A0)/1024.00*5;
  delay(500);
  T2=analogRead(A0)/1024.00*5;
  
  Serial.print(T1);
  Serial.print(" ");
  Serial.print(T2);
  Serial.print(" X_OUT:");
  Serial.println(counterX);
  
  if(T1-T2>0.1){
    Serial.print("INKREMENTACJA ");
    Serial.print("X_FOR: ");
    counterX++;
    Serial.println(counterX);
    lcd.setCursor(counterX,counterY);
    //if(counterX>=15)counterX=15;
    }
  
  
  }
	
Serial monitor:

Kod: Zaznacz cały

4.17 4.17 X_OUT:0
4.17 4.17 X_OUT:0
4.17 4.17 X_OUT:0
4.17 4.07 X_OUT:0
INKREMENTACJA X_FOR: 1 <-------- nastepuje inkrementacja od wartości 0 do 1
4.07 3.63 X_OUT:0 <---------------- po wyjściu z ifa wartośc zmiennej ponownie jest 0
INKREMENTACJA X_FOR: 1
3.63 3.41 X_OUT:0
INKREMENTACJA X_FOR: 1
3.41 3.22 X_OUT:0
INKREMENTACJA X_FOR: 1
3.23 3.09 X_OUT:0
INKREMENTACJA X_FOR: 1
3.09 3.01 X_OUT:0
3.01 3.01 X_OUT:0
3.01 3.01 X_OUT:0
3.01 3.01 X_OUT:0

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Monk
Młodszy majsterkowicz
Posty: 35
Rejestracja: 31 lip 2016, 23:02

Re: Inkrementacja zmiennej

Post autor: Monk » 5 sie 2016, 16:22

Tworzysz zmienną w pętli - na samym początku pętli przypisujesz dla int counterX wartość 0. Nie tyle po wyjściu z "ifa" wartość ulega wyzerowaniu, tylko po ponownym odtworzeniu głównej pętli.
Możesz to sprawdzić tak, że po ifie (ale przed końcem programu) dajesz znów Serial.println(counterX); i zobaczysz, że nadal ma ona przypisaną 1.

Jeżeli chcesz żeby counterX rosło dalej niż 1 i się nie zerowało, to musisz tą zmienną dać u góry programu - poza pętlą, po prostu ustawiasz ją raz z wartością 0 (ale nie w pętli głównej), a dalej leci - aż do jakiejś wartości np. 16 i dopiero ją sobie zerujesz w pętli po spełnieniu warunku (że np. wzrosło do 16).

Chyba o to Ci chodzi tak?
maver144
Młodszy majsterkowicz
Posty: 2
Rejestracja: 5 sie 2016, 15:51

Re: Inkrementacja zmiennej

Post autor: maver144 » 5 sie 2016, 17:02

Tak o to chodziło dziękuje ! Oczywiste ale jakoś mi umknęło :)
Monk
Młodszy majsterkowicz
Posty: 35
Rejestracja: 31 lip 2016, 23:02

Re: Inkrementacja zmiennej

Post autor: Monk » 5 sie 2016, 17:44

Czasem już tak bywa :)
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 18 paź 2019, 20:39

Witam,
mam mały problem, nie umiem zaimplementować przycisku tak, aby inkrementował mi zmienną o 1.

Kod: Zaznacz cały

int i;
int j=0;
void setup() {
    Serial.begin(9600); //Begin serial communication
  pinMode(dioda, OUTPUT);        // Ustawienie pinu 8 jako wyjście
  pinMode(przycisk,INPUT_PULLUP);      // Ustawienie pinu 3 jako wejście

  if (digitalRead(przycisk) == LOW)
{
   int i=0;
}
while (digitalRead(przycisk) == HIGH);
{
  j=i++;
}

}

void loop() 
{


  Serial.print("liczba: "); 
    Serial.print(j);
    delay (1000);
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 18 paź 2019, 23:29

Ale namieszałeś...
Od początku. Co wiesz na temat arduino?
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 21 paź 2019, 17:40

Hej,
na temat arduino wiem bardzo mało. dopiero co zaczynam pisać projekty.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 21 paź 2019, 19:24

Chcesz dostać gotowca, czy się czegoś nauczyć?
Przede wszystkim, opisz dokładnie, co chcesz osiągnąć.
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 23 paź 2019, 18:04

gotowca projektu nie chce, bardziej potrzebuję kawałka kodu, który będzie działać tak jak chce.
Mój projekt to: przepływomierz wody z czujnikiem.
Projekt ma za zadania badać przepływ wody do karmików świń. Jeśli stały przepływ wody przekroczy 30l. przepływomierz ma odciąć dostęp do wody. Naprawiam awarię i chcę, aby woda ponownie zaczęła lecieć więc uruchamiam przepływkę z czujnikiem (program) przyciskiem (coś typu START). Problem mój jest taki, że nie potrafię w żaden sposób zatrzymać działania po osiągnięciu celu (30l.).
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 23 paź 2019, 18:51

Może załóż nowy temat. Bo Ty nie masz problemu z inkrementacją zmiennej.
Moim zdaniem, w Twoim przypadku najłatwiej będzie zrobić maszynę stanu. Ale to rozwiniemy w Twoim temacie :) opisz tam dokładnie, jak ma to działać.
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 24 paź 2019, 06:29

O kurde, napisałem problem nie w tym temacie przepraszam :)
Jeśli chodzi o inkrementację to chce zrobić program sterujący pracą wentylatora. Ogólnie program mam i działa jak chcę, że po osiągnięciu 25 stopni ma się wentylator włączać a poniżej nie, ale gdybym chciał zmienić tą wartość (stałą) z 25 stopni na 23 to nie chce wgrywać programu tylko ustawić to za pomocą inkrementacji i dekrementacji.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 25 paź 2019, 15:12

No cóż. Może zacznij od przykładów z arduino ide?
Tam jest taki przykład w "Digital", który nazywa się "Debounce".

A w ogóle, pokaż cały swój kod. Bo z tego, co widzę, chcesz zrobić najprostszy termostat. Ciekaw jestem, jak Ci to wyszło.

A odnosząc się do tego fragmentu kodu, który tu wrzuciłeś: przycisk sprawdzasz tylko jeden raz, zaraz po podaniu zasilania. Później tylko wyświetlasz wartość zmiennej, która będzie stała i wynosiła 1.

Jeśli chcesz, mogę pomóc napisać ten program w całości. Ale tylko pomóc :)
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 28 paź 2019, 19:30

tutaj jest działający inkubator. Narazie na tym kodzie chcę przetestować to zatrzymywanie się programu i uruchamianie z przycisku ponieważ mam podzespoły z których złoże całość i wytestuję.

Kod: Zaznacz cały

//Include libraries
//#include <OneWire.h>
//#include <DallasTemperature.h>
int przekaznik=7;
#include "DHT.h"
#include <TM1637Display.h>

#define DHTPIN 2     // what pin we're connected to
// Data wire is plugged into pin A0 on the Arduino
//#define ONE_WIRE_BUS A0
#define DHTTYPE DHT22   // DHT 22  (AM2302)
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
//OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
//DallasTemperature sensors(&oneWire);
DHT dht(DHTPIN, DHTTYPE);
const int CLK = 4; //Set the CLK pin connection to the display
const int DIO = 3; //Set the DIO pin connection to the display
int NumStep = 0;  //Variable to interate
TM1637Display display(CLK, DIO);  //set up the 4-Digit Display.
int resetPin = 12;
void setup(void)
{
    digitalWrite(resetPin, HIGH);
  delay(1000);
   digitalWrite(resetPin, LOW);
  pinMode(przekaznik,OUTPUT);  // ustawienie pinu jako wyjście
  digitalWrite(przekaznik,LOW); // ustawienie na nim stanu niskiego
  display.setBrightness(0x0a);  //set the diplay to maximum brightness
  Serial.begin(9600); //Begin serial communication
 // Serial.println("Arduino Digital Temperature // Serial Monitor Version"); //Print a message
  //sensors.begin();
  dht.begin();
}

void loop(void)
{ 
  
 unsigned char i, j ;   
  // Send the command to get temperatures
//  sensors.requestTemperatures();  
 // Serial.print("Temperature is: ");
 // Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  //Update value every 0,5 sec.
 // delay(100);
   float h = dht.readHumidity();
  float t = dht.readTemperature();
if (dht.readTemperature()>=37.88)  // wywołanie funkcji warunkowej
{
     digitalWrite(przekaznik,HIGH);  // włączenie przekaźnika   
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" *C");
     delay(10000);
}

  else  // wywołanie funkcji warunkowej
  {
   digitalWrite(przekaznik,LOW);  // wyłączenie przekaźnika

    display.showNumberDec(h); //Display the Variable value;

  delay(100);     
  
  } 
  
}


Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 29 paź 2019, 13:36

Ale namieszałeś... to chyba zostało złożone z kilku przykładów z internetu?
Możemy poprawiać to, co tu wstawiłeś. Albo napisać od początku. I nie, nie podam gotowego rozwiązania. Możemy napisać razem od początku. Albo razem poprawiać.

A zaczniemy od... wypisz to listę elementów, których chcesz użyć. I napisz, albo najlepiej narysuj schemat połączenia
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 29 paź 2019, 19:20

w tym projekcie używam grzałki na przekaźniku, czujnika DTH22, i 3 wyświetlaczy do wyświetlania temperatury, wilgotności a trzeci do liczenia czasu (sekundomierz) bo zwiesił mi sie program i jajka się zesmażyły. Więc jak widzę ze on stoi to umiem zareagować i wyciągnąć z prądu a tak bez tego ie wiedziałem czy program wisi czy nie.
Ten program to sklejka kilku elementów z neta.
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 30 paź 2019, 15:02

Wyświetlacze na sterowniku TM163?
Napisz jeszcze, co działa
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 30 paź 2019, 18:34

Tak wyswietlacze są TM1637. działa wiatrak ale on jest włączony ciagle bo ma rozprowadzać powietrze po inkubatorze. Na dole zapomniałem dodać kod odpowiedzialny za wyswietlanie sie danych na wyswietlaczu :) ale to nie istotne :)
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 31 paź 2019, 00:24

Wszystkie wyświetlacze masz podłączone do tych samych pinów?!
Wstaw cały kod, tak to jest tylko próba zgadnięcia co i jak działa
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 5 lis 2019, 18:32

Kod: Zaznacz cały

int przekaznik=7;
#include "DHT.h"
#include <TM1637Display.h>

#define DHTPIN 2     // what pin we're connected to

#define DHTTYPE DHT22   // DHT 22  (AM2302)

DHT dht(DHTPIN, DHTTYPE);
const int CLK = 4; //Set the CLK pin connection to the display
const int DIO = 3; //Set the DIO pin connection to the display
const int CLK1 = 6; //Set the CLK pin connection to the display
const int DIO1 = 5; //Set the DIO pin connection to the display
const int CLK2 = 9; //Set the CLK pin connection to the display
const int DIO2 = 8; //Set the DIO pin connection to the display
int NumStep = 0;  //Variable to interate
TM1637Display tm1637a(CLK, DIO);  //set up the 4-Digit Display.
TM1637Display tm1637b(CLK1, DIO1);  //set up the 4-Digit Display.
TM1637Display tm1637c(CLK2, DIO2);  //set up the 4-Digit Display.
int resetPin = 12;
void setup(void)
{
    digitalWrite(resetPin, HIGH);
  delay(1000);
   digitalWrite(resetPin, LOW);
  pinMode(przekaznik,OUTPUT);  // ustawienie pinu jako wyjście
  digitalWrite(przekaznik,LOW); // ustawienie na nim stanu niskiego
  tm1637a.setBrightness(0x0a);  //set the diplay to maximum brightness
  tm1637b.setBrightness(0x0a);  //set the diplay to maximum brightness
  tm1637c.setBrightness(0x0a);  //set the diplay to maximum brightness
  Serial.begin(9600); //Begin serial communication

  dht.begin();
}

void loop(void)
{ 
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  int i=0;
if (dht.readTemperature()>=36.5)  // wywołanie funkcji warunkowej
{
     digitalWrite(przekaznik,HIGH);  // włączenie przekaźnika   
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" *C");

}

  else  // wywołanie funkcji warunkowej
  {
   digitalWrite(przekaznik,LOW);  // wyłączenie przekaźnika
   Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" *C");  
  } 
      tm1637a.showNumberDec(h); //Display the Variable value;
      tm1637b.showNumberDec(t); //Display the Variable value;
      
      
    for (i; i <= 10; i++) {
     tm1637c.showNumberDec(i); //Display the Variable value;  
    delay(1000);
    }  
  
}


hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 15 lis 2019, 18:47

@Marhef zapomnialeś :) ?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 20 lis 2019, 13:45

Nie, nie zapomniałem. Nie miałem czasu, żeby nad tym posiedzieć.
Ale skoro tu jestem, to jeszcze pytanie. Gdzie chcesz wyświetlić ustawianą wartość? I co się ma zmieniać?

Po co jest resestPin? I dlaczego nie jest ustawiony funkcją pinMode?
A po co zmienna NumStep?

Trochę się pogubiłem... popraw, co nie trafiłem (rozpisuję w punktach, jak widzę Twój kod). Pomijam sekcję setup(), tam jest w miarę dobrze:
1) odczytujesz wartość temperatury i wilgotności
2) jeżeli temperatura jest wyższa niż 36,5 st, to załącz przekaźnik i wyślij mnóstwo danych do komputera
3) jeżeli temperatura nie jest wyższa niż 36,5 st, to wyłącz przekaźnik i wyślij mnóstwo danych do komputera
4) wyświetl wilgotność i temperaturę na wyświetlaczach
5) wyświetl cyfry od 1 do 10 na trzecim wyświetlaczu
6) poczekaj sekundę

Kod jest... kiepski. Co mi się rzuca w oczy:
1) masz w programie zmienne, których nie używasz. Pewnie zostały z któregoś kodu
2) kopiujesz gotowce, a nie zwracasz uwagi, co się gdzie dzieje. Deklaracje zmiennych masz w różnych miejscach, wyjście resetPin jest używane ale nie ustawione wcześniej
3) dwa razy masz w kodzie to samo - wysyłanie danych do kompa. Wyrzuć to poza warunek (w obu przypadkach wysyłasz to samo)
4) dodaj histerezę załączenia/wyłączenia przekaźnika. Masz if t>36.5. Zamień else na elseif t<35.5

Kod pisałem z głowy, może to trochę inaczej wyglądać.
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 23 lis 2019, 09:39

Hej, dzięki za odpowiedź, co do kodu tak kopiowany częściami z neta i zmiennej numstep nie używam. co do ustawienia danych poza if to faktycznie zrobiłem tak i też wyświetla :) a ja myślałem że jak się zmieni wartość i przeskoczy do else to muszę znowu ustawić co chcę widzieć.
na 2 wyświetlaczach wyświetlam temp i wilgotność, na trzecim licznik od 1 do 10 bo kiedyś mi się zawiesiło i jajka się ugotowały a przez licznik widzę czy program działa czy nie. Reset pin jest używany do tego ze po odpaleniu resetuje arduino bo za 1 razem nie chciało mi się nic wyświetlać na wyświetlaczach, po resecie pokazywały się dane.
Co to jest histereza?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 23 lis 2019, 12:37

hazi18 pisze:
23 lis 2019, 09:39
co do ustawienia danych poza if to faktycznie zrobiłem tak i też wyświetla :) a ja myślałem że jak się zmieni wartość i przeskoczy do else to muszę znowu ustawić co chcę widzieć.
W warunku wyświetlanie miałoby sens, jeśli w zależności od warunku wyświetlałbyś różne wartości.
hazi18 pisze:
23 lis 2019, 09:39
na 2 wyświetlaczach wyświetlam temp i wilgotność
A przy zmianie temperatury do załączenia gdzie ma się wyświetlić temperatura nastawiana?
hazi18 pisze:
23 lis 2019, 09:39
na trzecim licznik od 1 do 10 bo kiedyś mi się zawiesiło i jajka się ugotowały a przez licznik widzę czy program działa czy nie.
Nie wiem, czy zauważyłeś, ale wyświetlanie blokuje Ci działanie programu na 10 sekund! W tym czasie nic nie możesz zrobić!
hazi18 pisze:
23 lis 2019, 09:39
Reset pin jest używany do tego ze po odpaleniu resetuje arduino bo za 1 razem nie chciało mi się nic wyświetlać na wyświetlaczach, po resecie pokazywały się dane.
A pin 12 połączyłeś z pinem reset? Jeśli nie, to nie restartujesz arduino.
hazi18 pisze:
23 lis 2019, 09:39
Co to jest histereza?
Jakby to najprościej? W Twoim przypadku to nie ma sensu, bo temperaturę mierzysz raz na 10 sekund. Ale wyobraź sobie, że mierzysz 2 razy na sekundę. I temperatura jest na granicy przełączenia, raz mierzysz 36,5 raz 36,4. Jeżeli zostawisz warunek if (dht.readTemperature()>=36.5), to przekaźnik będzie się przełączał dwa razy na sekundę - szybko się zużyje.
A teraz rozpatrzmy taki przypadek:

Kod: Zaznacz cały

if (dht.readTemperature()>=36.5)
{
  digitalWrite(przekaznik,HIGH);
}
if (dht.readTemperature()<=35.5)
{
  digitalWrite(przekaznik,LOW);
}
Wtedy przekaźnik załączy się, jeżeli raz zmierzona temperatura przekroczy 36,5 stopnia, ale wyłączy dopiero kiedy spadnie do 35,5 stopnia.
Takie rozwiązanie jest stosowane w wielu urządzeniach.
hazi18 pisze:
23 lis 2019, 09:39
na trzecim licznik od 1 do 10 bo kiedyś mi się zawiesiło i jajka się ugotowały a przez licznik widzę czy program działa czy nie.
Osobiście, mrugałbym diodą na arduino, widzisz, co się dzieje, a nie potrzebujesz trzeciego wyświetlacza. I możesz na nim wyświetlić ustawioną temperaturę :)
hazi18
Młodszy majsterkowicz
Posty: 23
Rejestracja: 18 paź 2019, 20:36

Re: Inkrementacja zmiennej

Post autor: hazi18 » 23 lis 2019, 14:06

Hej, dzięki za odpowiedź :)
temperatura jest ustawiana na sztywno nigdy nie będzie zmieniana.
Reset był podpięty pod pin reset.
Szczerze powiedziawszy chciałem z początku tak zrobić (dla wiatraka wymieniającego powietrze w chlewni) aby przy temp 25 włączył się wiatrak a przy 23 wyłączył i czekał aż znowu osiągnie 25. Bo tak jak piszesz takie przełączanie to sprzęt się szybko zużywa. Postaram się histerezę użyć do mojego drugiego projektu :)
co do mrugania diodą nie wpadłem na to :) Więc jeśli poprawię program według Twoich zaleceń to będzie okej? Czy widzisz coś jeszcze do poprawy?
Awatar użytkownika
Marhef
Złota rączka
Posty: 1188
Rejestracja: 18 lis 2011, 02:18

Re: Inkrementacja zmiennej

Post autor: Marhef » 23 lis 2019, 14:24

Zaraz, to jaką zmienną chcesz inkrementować?
Z resetem też nie łapię... przecież tak, jak masz napisane, arduino powinno się co sekundę restartować.
Popraw, wrzuć tu jeszcze raz. Zobaczę, może coś mi się jeszcze nasunie :)
ODPOWIEDZ

Strony partnerskie: