Перейти к контенту
МОРСКОЙ АКВАРИУМ - форум Аква Лого

Аквариум Каждый год мы уезжаем в отпуск, и любители аквариума не исключение. Как оставить аквариум на две-четыре недели, и что нужно сделать, чтобы в ваше отсутствие не произошла катастрофа?

Реконструкция древних температур по ушным отложениям рыб

Морские цветы

Рак и его актиния

Alex67Z

Моряки
  • Число публикаций

    55
  • Регистрация

  • Последнее посещение

Сообщения опубликованы Alex67Z


  1. Алекс!

    Спасибо за подсказку:

    if ( ( millis() % 1000 ) == 0 ) //вызов раз в секунду, читаем температуру и обновляем экран

    {

    Temp_read(); //читаем температуру

    Screen_out(); //обновляем экран

    }

    В итоге сделал отдельный блок для температуры и датчиков, все нормально работает!!!!

     

     

    Basopotam

    Для i2c использовалась такая шняга? http://www.ebay.com/...=item4d05d53c27

    Нет. По i2c подключил так - http://jt5.ru/examples/oled-i2c/

    Там все расписано.


  2. Вот если бы она еще работал))) Было бы .... круто))))

    Вот в настоящий момент дисплей ничего не показывает. На serial.print - шим начинает переходить в "закат" и уменьшать значения. Т.е основная программа работает, а вот все что вокруг...)))

    Кнопки распаены через резисторы. Если только поочередно - кнопок - 5 штук.

    Да, по поводу релюх забыл.... 4 релюхи управление - 5 вольт. А уровни - герконовые, черз резистор на 5 в. При замыкании - на общий (землю).

    Это все на коленках, на плате монтажной)) По отдельности - все работает. А вот вместе(((

    По поводу библиотек - библиотеки те, что Алекс давал + :

     

    DallasTemperature.zip

     

    LiquidCrystal_I2C.zip

     

    Все работает в версии - 1.0

     

    Сходу не подскажу.

    Я сам пока только начинаю разбираться с arduino. Я планировал объявить глобальные переменные для хранения считанных значений температуры и создал бы отдельную процедуру для считывания с датчиков температуры. А где необходимо использовал бы значения температуры из глобальной переменой.

     

    Мдя.... для меня темный лес.... переменные((


  3. Basopotam
    По поводу "мегаконтроллера" - согласен. Слишком много всего....
    Дтчики температупы - DS18B20.
    А если по порядку)) Arduino Uno, LCD Keypad Shield DFRobot (это LCD с кнопками. Сверху уны ставить удобно, а вот если хочешь использовать выходы на ардуино по полной, то он нафиг не нужен)), тем более при подключении его по I2C, у него RW на землю запаян, так что без напильника не обойтись - надо отрывать), часы 1307.
    LCD подключен по I2C через микросхему PCF8574.
    Сначала запускал часы, датчики температуры.... Потом пытался объединить скетчи.
    В итоге заработало только так:


    // Подключение необходимых библиотеки
    #include <Wire.h>
    #include "RTClib.h"
    #include <OneWire.h>
    #include <DallasTemperature.h>

    // Датчик (или датчики) подключаются к пину 2 Ардуины
    #define ONE_WIRE_BUS 2

    // настройка «onewire» для работы с любыми другими девайсами (не только Dallas датчиками температуры)
    OneWire oneWire(ONE_WIRE_BUS);

    // подключаем Dallas Temperature.
    DallasTemperature sensors(&oneWire);

    // подключение библиотеки для LCD через PCF8574
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x38,16,2); // «0х38» адрес LCD

    int k=0; // назначение для переменной при нажатии кнопок
    int u=0; // назначение 2-й переменной для датчика уровня
    int v=0; // назначение 3-й переменной для охлаждения воды
    int Relay1=7; // вентилятор охлаждения радиатора, назначаем 7-й выход
    int Relay2=8; // включение «луны», назначаем 8 выход
    byte Relay1Status=false;
    byte Relay2Status=false;
    int Relay3 = 4; // вентилятор охлаждения воды, назначаем 4-й выход
    int Relay4 = 12; // автодолив, назначаем 12-й выход

    RTC_DS1307 RTC;
    // назначаем время восходов и закатов, выходы PWM
    int Hours_Start_Sunrise[6] = {11, 9, 10, 11, 12, 12}; // начало рассвета по каналам час
    int Minutes_Start_Sunrise[6] = {0, 0, 0, 0, 0, 0}; // начало рассвета по каналам минута
    int Hours_End_Sunrise[6] = {15, 12, 13, 14, 15, 15}; // окончание рассвета по каналам час
    int Minutes_End_Sunrise[6] = {0, 0, 0, 0, 0, 0}; // окончание рассвета по каналам минута

    int Hours_Start_Sunset[6] = {17, 20, 19, 18, 17, 17}; // начало заката по каналам час
    int Minutes_Start_Sunset[6] = {0, 0, 0, 0, 0, 0}; // начало заката по каналам минута
    int Hours_End_Sunset[6] = {21, 23, 22, 21, 21, 21}; // окончание заката по каналам час
    int Minutes_End_Sunset[6] = {0, 0, 0, 0, 0, 0}; // окончание заката по каналам минута

    int MinuteDay_Start_Sunrise[6]; // день в минутах для начала рассвета
    int MinuteDay_End_Sunrise[6]; // день в минутах для окончания рассвета

    int MinuteDay_Start_Sunset[6]; // день в минутах для начала заката
    int MinuteDay_End_Sunset[6]; // день в минутах для окончания заката

    int Current_MinuteDay; // текущая минута суток
    int Current_Period[6]; // текущая часть суток 1-рассвет, 2-день, 3-закат, 4-ночь для каждого ШИМ

    int Meridian_PWM[6] = {128, 128, 128, 128, 128, 76}; // макс. значение ШИМ 50% на все каналы, 76% на Red
    int Midnight_PWM[6] = {0, 0, 0, 0, 0, 0}; // минимальное значение ШИМ
    int Current_PWM[6] = {0, 0, 0, 0, 0, 0}; // текущее значение ШИМ


    /* *********************************************************/
    /* * * */
    /* * ШИМ пин для CW, TV, RB, NB, CY, DR * */
    /* * Пин - 3 - CW - Cool White * */
    /* * Пин - 5 - TV - True Violet * */
    /* * Пин - 6 - RB - Royal Blue * */
    /* * Пин - 7 - NB - Blue * */
    /* * Пин - 10 - CY – Cyan * */
    /* * Пин - 11 - DR - DeepRed * */
    /* * * */
    /* *********************************************************/

    int PWM_Pin[6] = {3, 5, 6, 9, 10, 11}; // назначение PWM выходов для CW, TV, RB, NB, CY, DR


    void setup ()
    {

    lcd.init();
    lcd.backlight();
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();
    sensors.begin();

    pinMode(A0, INPUT); // настраиваем аналоговый вход A0
    pinMode(A1, INPUT); // настраиваем аналоговый вход A1

    // назначаем на 7-м и 8-м пинах уровени
    pinMode(Relay1, OUTPUT);
    pinMode(Relay2, OUTPUT);
    digitalWrite(Relay1, LOW);
    digitalWrite(Relay2, HIGH);
    // назначаем на 4-м и 12-м пинах (пины реле) низкий уровень
    pinMode(Relay4, OUTPUT);
    digitalWrite(Relay4, LOW);
    pinMode(Relay3, OUTPUT);
    digitalWrite(Relay3, LOW);

    if (! RTC.isrunning())
    {
    lcd.setCursor(0, 0);
    lcd.print("RTC no time");
    //строчка ниже – установка времени (для установки – убрать комм. и установить дату и время)
    //RTC.adjust(DateTime(__DATE__, __TIME__));
    }

    for (int i=0; i<=5; i++)
    {
    pinMode(PWM_Pin[i], OUTPUT); // Установка пин для ШИМ
    }

    for (int i=0; i<=5; i++)
    {
    analogWrite(PWM_Pin[i], Midnight_PWM[i]); // Установка минимального значения ШИМ
    Current_PWM[i]=Midnight_PWM[i]; // Установка текущих значений ШИМ в минимум
    }

    for (int i=0; i<=5; i++)
    {
    MinuteDay_Start_Sunrise[i]=60*Hours_Start_Sunrise[i] + Minutes_Start_Sunrise[i]; // Расчет минуты суток для начала рассвета
    MinuteDay_End_Sunrise[i]=60*Hours_End_Sunrise[i] + Minutes_End_Sunrise[i]; // Расчет минуты суток для окончания рассвета
    MinuteDay_Start_Sunset[i]=60*Hours_Start_Sunset[i] + Minutes_Start_Sunset[i]; // Расчет минуты суток для начала заката
    MinuteDay_End_Sunset[i]=60*Hours_End_Sunset[i] + Minutes_End_Sunset[i]; // Расчет минуты суток для окончания заката
    }

    }


    // Процедура расчета текущего периода и значения PWM по каналам

    void Led_Dim_PWM()
    {
    DateTime now = RTC.now();
    Current_MinuteDay = (now.hour() * 60) + now.minute();

    for (int i=0; i<=5; i++)
    {
    Current_Period[i]=4;
    if (Current_MinuteDay>=MinuteDay_Start_Sunrise[i] && Current_MinuteDay<=MinuteDay_End_Sunrise[i])
    {
    Current_Period[i]=1;
    }
    if (Current_MinuteDay>MinuteDay_End_Sunrise[i] && Current_MinuteDay<MinuteDay_Start_Sunset[i])
    {
    Current_Period[i]=2;
    }
    if (Current_MinuteDay>=MinuteDay_Start_Sunset[i] && Current_MinuteDay<=MinuteDay_End_Sunset[i])
    {
    Current_Period[i]=3;
    }

    if (Current_Period[i]==1)
    {
    Current_PWM[i]=(float)(((float)Current_MinuteDay-MinuteDay_Start_Sunrise[i])/((float)MinuteDay_End_Sunrise[i]-MinuteDay_Start_Sunrise[i]))*((float)Meridian_PWM[i]-Midnight_PWM[i]);

    if (Current_PWM[i]<Midnight_PWM[i])
    {
    Current_PWM[i]=Midnight_PWM[i];
    }
    analogWrite(PWM_Pin[i], Current_PWM[i]);
    }

    if (Current_Period[i]==2)
    {
    if (Current_PWM[i]!=Meridian_PWM[i])
    {
    Current_PWM[i]=Meridian_PWM[i];
    analogWrite(PWM_Pin[i], Current_PWM[i]);
    }
    }

    if (Current_Period[i]==3)
    {
    Current_PWM[i]=(float)(((float)MinuteDay_End_Sunset[i]-Current_MinuteDay)/((float)MinuteDay_End_Sunset[i]-MinuteDay_Start_Sunset[i]))*((float)Meridian_PWM[i]-Midnight_PWM[i]);
    analogWrite(PWM_Pin[i], Current_PWM[i]);
    }

    if (Current_Period[i]==4)
    {
    if (Current_PWM[i]!=Midnight_PWM[i])
    {
    Current_PWM[i]=Midnight_PWM[i];
    if (Current_PWM[i]<Midnight_PWM[i])
    {
    Current_PWM[i]=Midnight_PWM[i];
    }
    analogWrite(PWM_Pin[i], Current_PWM[i]);
    }
    }
    }

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.print(" Current_MinuteDay: ");
    Serial.print(Current_MinuteDay, DEC);
    Serial.println();


    for (int i=0; i<=5; i++)
    {
    Serial.print("Channel #");
    Serial.print(i, DEC);
    Serial.print(", Current Period: ");
    if (Current_Period[i]==1) {Serial.print("Sunrise");}
    if (Current_Period[i]==2) {Serial.print("Meridian");}
    if (Current_Period[i]==3) {Serial.print("Sunset");}
    if (Current_Period[i]==4) {Serial.print("Midnight");}
    Serial.print(", Current PWM: ");
    Serial.print(Current_PWM[i], DEC);
    Serial.println();
    }
    Serial.println();
    }

    void RalayOnOff()
    {
    int SumPWM=0;

    for (int i=0; i<=5; i++)
    {
    SumPWM=SumPWM+Current_PWM[i];
    }
    if (SumPWM>=50 && Relay1Status==false)
    {
    Relay1Status=true;
    Relay2Status=false;
    digitalWrite(Relay1, HIGH);
    digitalWrite(Relay2, LOW);
    }

    if (SumPWM<50 && Relay1Status==true)
    {
    Relay1Status=false;
    Relay2Status=true;
    digitalWrite(Relay1, LOW);
    digitalWrite(Relay2, HIGH);
    }
    }
    void loop ()
    {
    {

    Led_Dim_PWM();
    RalayOnOff();

    }

    DateTime now = RTC.now();
    sensors.requestTemperatures(); // запрос показаний температуры

    k=analogRead(0); // значение «k» равно аналоговому входу A0
    u=analogRead(1); // значение «u» равно аналоговому входу A1

    if (u<10) // при срабатывании датчика уровня, на выходе 4 устанавливается высокий уровень
    {
    digitalWrite(Relay4, HIGH);
    delay(3000);
    }
    else if (u>=10) // при срабатывании датчика уровня, на выходе 4 устанавливается низкий уровень
    {
    digitalWrite(Relay4, LOW);
    }


    v=sensors.getTempCByIndex(1); // переменной "v" присваивается темп. 1-го датчика (Т воды)
    if (v>=28) // если температура поднимается до 28 градусов, срабатывает реле на вентилятор охлаждения
    {
    digitalWrite(Relay3, HIGH);
    }
    else if (v<26) // если температура опускается до 26 градусов, вентилятор выключается
    {
    digitalWrite(Relay3, LOW);
    }
    if (k>1000) // если кнопки не нажаты, то высвечивается время и данные по температуре
    {
    lcd.setCursor(0, 0);
    lcd.print(now.hour(), DEC);
    lcd.print(":");
    lcd.print(now.minute(), DEC);
    lcd.print(":");
    lcd.print(now.second(), DEC);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print("A="); // температура аквариума
    lcd.setCursor(2, 1);
    lcd.print(sensors.getTempCByIndex(0)); // первый датчик в воде
    lcd.print(" ");
    lcd.setCursor(8, 1);
    lcd.print("R="); // температура на радиаторе
    lcd.setCursor(10, 1);
    lcd.print(sensors.getTempCByIndex(1)); // второй датчик на радиаторе
    }
    }
    Понимаю, что не очень красиво))
    В комментариях расписано - что и для чего)))

    Алекс!
    Можете помочь?
    Вот куда это:

    [color=#000088]if[/color] [color=#666600]([/color] [color=#666600]([/color] millis[color=#666600]()[/color] [color=#666600]%[/color] [color=#006666]1000[/color] [color=#666600])[/color] [color=#666600]==[/color] [color=#006666]0[/color] [color=#666600])[/color] [color=#880000]//вызов раз в секунду, читаем температуру и обновляем экран[/color]
    [color=#666600]{[/color]
    [color=#660066]Temp_read[/color][color=#666600]();[/color] [color=#880000]//читаем температуру[/color]
    [color=#660066]Screen_out[/color][color=#666600]();[/color] [color=#880000]//обновляем экран[/color]
    [color=#666600]}[/color]

    надо пришпилить?
    Или... как правильно сделать?

    P.S. Знатоков прошу не шпынять)) Помогите лучше с советом))
    Никогда с программированием не дружил)) С паяльником и электрикой - более менее, а вот с программированием....

    Надеюсь за офтоп не примут? а то может уже пора ветку по программированию ардуино открывать))

  4. Вообще-то я это к чему спрашивал))

    Имеется - Arduino UNO, LCD16x2, часы, датчики температуры...

    Увидев вашу тему, подумал - вот оно, то, что надо!))) Затрат минимум, эффективность - 100%

    Скетч с библиотеками запустились сразу. Все нормально работает. Подключаю LCD - по I2C, проблема((( С "delay (60000)", время на дисплее и температура обновляется через минуту((

    Убираю delay - все работает нормально.

    Т.к. в ардуино понимаю, надеюсь пока) мало, возник вопрос - ничего там никуда в память не забивается???)) Так что в итоге работать вообще не будет????))


  5. Добрый день!

    Проект понравился - просто и доступно! Думаю многие захотят повторить, или использовать какую нибудь часть, просто не все пишут((

     

    Alex_M!

    У меня вопрос по скетчу - что произойдет, если в

     

     

    void loop ()

    {

     

    Led_Dim_PWM();

    RalayOnOff();

     

    delay(60000);

     

    }

     

    убрать прерывание delay(60000)???


  6. Бзик аквариума -фон и пенник.

    Я заказал в www.orgsteklo-shop.ru синее оргстекло по размеру задней стенки. Там при заказе можно выбрать размер, они режут, привозят. Вырезаешь потом сверху слева и справа для сампа - слив и подача воды. Клеишь герметиком.

    Единственная проблема - сливать воду, выталкивать камни и живность....


  7. По прошествии определенного времени после переделки какие у Вас впечатления от работы пенника???

     

    Работает))) Как не удивительно)) Конечно если загрузить - его будет мало(( Поляки на пенник поскупились((


  8. То что было в максе, трудно назвать пенной и пеником, особенно когда раньше пользовался на другой акве дельтеокм 600-м. Сейчас могу спокойно регулировать до сухой пены краном подачи воздуха. И при этом бьет скимат, а не желтая водичка.


  9. Всем добрый день!

    Решил написать по поводу доработки пенника в Aquael ReefMaх. Может кому-нибудь, кто уже намучился и пригодится))

    В своем первоначальном состоянии – это чистой воды «аппарат для перегонки воды» из одного отсека в другой. Долго ждал, когда же начнет пенить)) Не дождался… (((

    Обратился к Sliam по поводу Нептуна для ReefMax, но увы, он их сейчас не делает. Решил подумать, что можно сделать с родным… Конечно самый простой вариант – просто выкинуть))

    Но все равно же… интересно и руки чешутся…

    Основная проблема данного девайса – это высокий уровень воды. Вода доходит до трубки и получается – или он не пенит, когда перекрываешь воздух до конца, или он гонит воду, когда открываешь воздух. Но кроме крана для воздуха ничего у него больше нет…

    Схематично, это выглядит так (кто имеет данный аквариум, заглядывал во внутрь пенника и понимает, о чем я пишу):

    post-8472-1330327242_thumb.jpg

     

    Подумал попробовать уменьшить уровень воды в пеннике, при этом перелив воды в другой отсек должен остаться.

    Для этого надо перенести слив воды в другой отсек немного ниже. И это будет выглядеть так:

    post-8472-1330327300_thumb.jpg

    post-8472-1330327318_thumb.jpg

     

    Я отрезал козырек и внешнюю стенку, приклеил козырек обратно (клей – эпоксин из серии «Момент»), получилось, что при заполнении пенника водой, ее уровень стал ниже – где-то до уровня начала «куполообразной»)) чаши (порядка на 4,5 -5 см).

    В итоге через минут 15-20 работы, получилось следующее:

    post-8472-1330328469_thumb.jpg

    post-8472-1330328485_thumb.jpg

     

     

    Минусы – пенник висит выше и задняя крышка не закрывается.

    Но, все таки это минимальная доработка, когда он пенит и ничего под руками, я имею в виду другие пенники, нет)))

     

     

    P.S. Никогда не думал, что в морском аквариуме можно покрыть стекло краской, которая СТИРАЕТСЯ! При этом стирается, когда проходишь по ней губкой… Не чем-то карябаешь, а именно, просто нажимая губкой промываешь… Будьте осторожнее, когда будете промывать задний отсек.


  10. Весной хотел начать новую баночку литров на 100.

    По мотивам AlexLegend

    http://www.aqualogo.ru/phpbb2/index.php?sh...10613&st=20

     

    В качестве актинников были куплены 2 светодиодные лампы:

    Aquabeam 500 single - REEF BLUE

    Длина - 18"/45 см.

    http://www.urmstonaquatics.com/index.php?a...amp;portrelay=1

    Но баночка не сложилась. Лампы лежат мертвым грузом.

     

    Так что продам каждую по 4 500 руб.

    Обе сразу отдам за 8 000 руб.

     

    Если кому интересно - пишите в личку.


  11. Продам сарк и клавулярию.

    1. Сарк - высота где-то 10-15 см, да и шляпка такая же.

    Цена вопроса - 1500 р.

    (резать и проращивать на продажу - не по мне, да и негде...)

    2. Клавулярия на камне - размеры камня: высота-ширина-длина (это с какой стороны посмотреть :-))

    где-то 12-14-16 см.

    Цена вопроса - 1000 р.

     

    Если заинтересовались - пишите в личку....

    Живу в Строгино (Твардовского)

    Фото прилагаю...

    post-8472-1252395804_thumb.jpg

    post-8472-1252395890_thumb.jpg


  12. Всем привет. Есть некоторые ненужные вещи:

     

    1. Помпы, все НОВЫЕ, не использовались:

     

    a. Hydor Pico 400 (385 л/ч, 0,7 м) – 300 руб.

     

    b. Blupower 900 – 600 руб.

     

    c. Maxi-Jet 1000 (с труб. Вентури и Pinwheel для MCE 300) – 2 000 руб.

    Можно использовать, например, для DIY скиммера…

     

     

    2. Помпа Koralia Nano (в работе была 4 месяца) – 500 руб.

     

    4. Скиммер TMC, V2SKIM- 400 (помпа Rio 2100) – 1 500 руб.

    Недостатки:

    Был в работе 6 месяцев.

    Отсутствует «V2Bubble Stop»

    Треснут сверху и заклеен стакан для скимата (из-за тугой крышки).

     

    5. Автокормушка Trixie Aqua Pro (новая, была подарена и не пригодилась) – 500 руб.

    http://www.aqua-shop.ru/product_info.php/c...ucts_quantity/0

     

     

    Пишите в личку.

    Если на выходные не отвечу, обязательно всем заинтересованным отвечу в рабочие дни.


  13. ПВХ - забрали. Остались только помпы:

     

    Помпы:

    1. От нано скиммера Resun SK05 б.у. – 100 руб.

    2. Hydor Pico 400 (385 л/ч, 0,7 м) – 300 руб.

    3. Blupower 900 – 600 руб.

    4. Maxi-Jet 1000 от Deltec MCE300 (подача воздуха, игольчатое) – 2 000 руб.

     

    Рассмотрю варианты обмена на живность:

    - сарки,

    - ксения,

    - лобофитум,

    - синулярия…..


  14. После перестроек, переделок, оценки остатков и понимания того, что много лишнего было глупо куплено …

    Итак, есть некоторое количество фитинга, труб ПВХ и помпы…

     

    ПВХ:

    1. Диаметр 32 мм:

    - труба 2 обрезка по 1,5 м – 70 руб.

    - уголок 90 гр. 4 шт. – 80 руб.

    - муфта соединительная 2 шт. – 20 руб.

    - кран шаровой 1 шт. – 250 руб.

    Итого: 420 руб.

     

    2. Диаметр 25 мм:

    - труба 2 обрезка 1,5 м + 1,2 м – 50 руб.

    - уголок 90 гр. 6 шт. – 100 руб.

    - муфта соединительная 4 шт. – 40 руб.

    - тройник 2 шт. – 30 руб.

    - кран шаровой 1 шт. – 200 руб.

    Итого: 420 руб.

     

    3. Диаметр 20 мм:

    - труба 2 обрезка 0,8 м + 0,2 м – бесплатно.

    - уголок 90 гр. 4 шт. – бесплатно.

    - тройник 2 шт. – бесплатно.

    Итого: бесплатно.

     

    4. Диаметр 25 мм:

    - труба 1 обрезок 1,2 м – бесплатно.

    - уголок 90 гр. 4 шт. – бесплатно.

    - тройник 2 шт. – бесплатно.

    Итого: бесплатно.

     

    Желательно забрать сразу всё! Отдам всё в одни руки за 800 руб.

    Рассмотрю варианты обмена на живность:

    - сарки,

    - ксения,

    - лобофитум,

    - синулярия…..

     

     

    Помпы:

    1. От нано скиммера Resun SK05 б.у. – 100 руб.

    2. Hydor Pico 400 (385 л/ч, 0,7 м) – 300 руб.

    3. Blupower 900 – 600 руб.

    4. Maxi-Jet 1000 от Deltec MCE300 (подача воздуха, игольчатое) – 2 000 руб.

     

    Рассмотрю варианты обмена на живность:

    - сарки,

    - ксения,

    - лобофитум,

    - синулярия…..

×
×
  • Создать...