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

Бородатая Бородатая агама - крупная ящерица, она вырастает до 60 см в длину, примерно треть от всей ее длины составляет хвост. Благодаря неприхотливости в содержании и дружелюбному характеру бородатая агама стала популярным домашним питомцем. Для её содержания необходим большой террариум, так как это достаточно крупная ящерица.
После рассольных грелок аквариумисты додумались до другого способа подогрева воды. Они заметили, что обыкновенные электрические сопротивления, используемые в радиоприборах, довольно сильно греются при работе.

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 Мдя.... для меня темный лес.... переменные((
  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. Нужен камушек, примерно размеры 15х10х10. Может у кого есть лишний? В мини не хватило... не рассчитал.
  7. Бзик аквариума -фон и пенник. Я заказал в www.orgsteklo-shop.ru синее оргстекло по размеру задней стенки. Там при заказе можно выбрать размер, они режут, привозят. Вырезаешь потом сверху слева и справа для сампа - слив и подача воды. Клеишь герметиком. Единственная проблема - сливать воду, выталкивать камни и живность....
  8. Работает))) Как не удивительно)) Конечно если загрузить - его будет мало(( Поляки на пенник поскупились((
  9. Alex67Z

    Что за зверь? Стромбус?

    Спасибо всем за ответы. А был куплен на Ленинском - как стромбус)))
  10. Может кто нибудь подсказать? Фотки правда не очень(( выполз ночью на стекло, а так в песке сидит или роется. Как стромбус не прыгает, а плавно движется по стеклу)
  11. Подложить просто что-то - не получится(( В том-то все и дело, что уровень воды стоит на уровне слива. Что-бы понизить уровень внутри, надо понизить уровень слива. Сообщающиеся сосуды))
  12. Может у кого-то есть остатки после переделки света??? Пишите в личку.
  13. То что было в максе, трудно назвать пенной и пеником, особенно когда раньше пользовался на другой акве дельтеокм 600-м. Сейчас могу спокойно регулировать до сухой пены краном подачи воздуха. И при этом бьет скимат, а не желтая водичка.
  14. Всем добрый день! Решил написать по поводу доработки пенника в Aquael ReefMaх. Может кому-нибудь, кто уже намучился и пригодится)) В своем первоначальном состоянии – это чистой воды «аппарат для перегонки воды» из одного отсека в другой. Долго ждал, когда же начнет пенить)) Не дождался… ((( Обратился к Sliam по поводу Нептуна для ReefMax, но увы, он их сейчас не делает. Решил подумать, что можно сделать с родным… Конечно самый простой вариант – просто выкинуть)) Но все равно же… интересно и руки чешутся… Основная проблема данного девайса – это высокий уровень воды. Вода доходит до трубки и получается – или он не пенит, когда перекрываешь воздух до конца, или он гонит воду, когда открываешь воздух. Но кроме крана для воздуха ничего у него больше нет… Схематично, это выглядит так (кто имеет данный аквариум, заглядывал во внутрь пенника и понимает, о чем я пишу): Подумал попробовать уменьшить уровень воды в пеннике, при этом перелив воды в другой отсек должен остаться. Для этого надо перенести слив воды в другой отсек немного ниже. И это будет выглядеть так: Я отрезал козырек и внешнюю стенку, приклеил козырек обратно (клей – эпоксин из серии «Момент»), получилось, что при заполнении пенника водой, ее уровень стал ниже – где-то до уровня начала «куполообразной»)) чаши (порядка на 4,5 -5 см). В итоге через минут 15-20 работы, получилось следующее: Минусы – пенник висит выше и задняя крышка не закрывается. Но, все таки это минимальная доработка, когда он пенит и ничего под руками, я имею в виду другие пенники, нет))) P.S. Никогда не думал, что в морском аквариуме можно покрыть стекло краской, которая СТИРАЕТСЯ! При этом стирается, когда проходишь по ней губкой… Не чем-то карябаешь, а именно, просто нажимая губкой промываешь… Будьте осторожнее, когда будете промывать задний отсек.
  15. Добрый день! Красиво получается! Хорошо и приятно что новые жильцы приживаются и раскрылись!!!
  16. Весной хотел начать новую баночку литров на 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 руб. Если кому интересно - пишите в личку.
  17. Клаву забрали. Остался сарк... Предложение в силе. Рассмотрю обмен на мягкоту...
  18. Продам сарк и клавулярию. 1. Сарк - высота где-то 10-15 см, да и шляпка такая же. Цена вопроса - 1500 р. (резать и проращивать на продажу - не по мне, да и негде...) 2. Клавулярия на камне - размеры камня: высота-ширина-длина (это с какой стороны посмотреть :-)) где-то 12-14-16 см. Цена вопроса - 1000 р. Если заинтересовались - пишите в личку.... Живу в Строгино (Твардовского) Фото прилагаю...
  19. Кормушка и Коралия - проданы. Остальное в продаже.
  20. Всем привет. Есть некоторые ненужные вещи: 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 Пишите в личку. Если на выходные не отвечу, обязательно всем заинтересованным отвечу в рабочие дни.
  21. ПВХ - забрали. Остались только помпы: Помпы: 1. От нано скиммера Resun SK05 б.у. – 100 руб. 2. Hydor Pico 400 (385 л/ч, 0,7 м) – 300 руб. 3. Blupower 900 – 600 руб. 4. Maxi-Jet 1000 от Deltec MCE300 (подача воздуха, игольчатое) – 2 000 руб. Рассмотрю варианты обмена на живность: - сарки, - ксения, - лобофитум, - синулярия…..
  22. После перестроек, переделок, оценки остатков и понимания того, что много лишнего было глупо куплено … Итак, есть некоторое количество фитинга, труб ПВХ и помпы… ПВХ: 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 руб. Рассмотрю варианты обмена на живность: - сарки, - ксения, - лобофитум, - синулярия…..
  23. Alex67Z

    Tunze 7091

    Дальше - в личку.
  24. Alex67Z

    Tunze 7091

    Добрый день! Новый или использовался? Возьму.
×
×
  • Создать...