Простенький акваконтроллер на ARDUINO


Посетитель




132 4
Пятигорск
8 дн. назад
Простенький акваконтроллер на ARDUINO
Всем привет вот за пару дней наваял контроллер.

Что умеет:
1. Включать выключать свет по таймеру
2. Включать выключать Co2 по таймеру
3. Ну и включать кулеры в крышке или обогреватель - термоконтроллер
4. Показывать время и температуру))).

Что еще хотелось бы прикрутить:
1. измерение PH.
2. Добавление удо 1 раз в X минут или часов.
Проект пока не доделан. Может кто поможет оптимизировать код ну или поправить если что не красиво зделанно.
Корпуса пока нет))).

Щас жду некоторые запчастюльки для силовой части схемы потом продолжу если кому интересно.




2011-06-16 добавлено 16/06/2011 11:21:27#1443198
Нравится KoRvin

Свой на Aqa.ru




2011 198
Москва
1 мес. назад
wattnik
Цикл, который указал Paradox860 подвесит контроллер на 10 секунд. В это время контроллер не будет выполнять остальной код.

Оч страно, это такая проблема самой матери Дуино, если стоит команда делей, то она распространяется на всю деятельность ОЗУ или проца?
2012-08-30 добавлено 30/08/2012 13:38:48#1665261

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

Аналоговые выводы, не такие как цифровые, и не требуют
предварительной декларации их как INPUT или OUTPUT
обращение к цифровым пинам
digitalRead (pin)
digitalWrite (pin, value)

Обращения к аналоговым пинам
analogRead (pin)
analogWtite (pin, value)
В твоем случае, думаю, просто
analogpin = A1 или просто 1
analogWrite(analogpin,value)

Изменено 30.8.12 автор Paradox860

Изменено 30.8.12 автор Paradox860

Изменено 30.8.12 автор Paradox860
2012-08-30 добавлено 30/08/2012 14:00:47#1665279

Посетитель




132 4
Пятигорск
8 дн. назад
AquaCross

Думаю проблема в том, что на микроконтроллере нет многозадачности,отдельных фоновых потоков как на компьютере. Вся программа один большой бесконечный цикл, и естественно если в нем гдето поставить задержку - тормозит и весь цикл.
2012-08-30 добавлено 30/08/2012 14:11:40#1665284

Свой на Aqa.ru




2011 198
Москва
1 мес. назад
Paradox860
Ну дак тогда вообще проблем нет, если разделить жизнь аквы в 24 часа, и делать все команды по определенному и отдаленному друг от друга времени без пересечения, то вообще не страшно, пусть он хоть на 1 час повиснет, если в этот час нет команд, главное чтоб к наступлению нужного времени он уже был в "стендбай", Вы поняли к чему я?
Пусть так:
00:00
----
выкл О2
ждем
вкл СО2
ждем
---
вкл свет1
ждем
---
добавляем УДО
ждем(висим)
ждем(висим)
---
12:00
---
выкл СО2
ждем
вкл О2
ждем
выкл свет
ждем
---
23:59
2012-08-30 добавлено 30/08/2012 14:22:27#1665290

Посетитель




108 4
Волгоград
3 г. назад
AquaCross
если в этот час нет команд,


Измерение температуры и включение/выключение обогрева или охлаждения требует постоянно работающего кода. Плюс если делать плавные закаты и рассветы. Это мое мнение.


Paradox860


Если я буду использовать к примеру 1 цифровой канал как ШИМ-канал:
int ledpin=1;
int ledlevel = 255;
pinmode(ledpin, OUTPUT);
analogWrite(ledpin, ledlevel);

то каким образом
analogRead(1)

будет считывать показания с аналоговой ноги, а цифровую не тронет?

Изменено 30.8.12 автор wattnik
2012-08-30 добавлено 30/08/2012 14:43:56#1665304

Посетитель




132 4
Пятигорск
8 дн. назад
AquaCross

А как ты поймеш есть команды в это время или нет?
У меня допустим он каждый цикл проверяет сотояние кнопок, датчика температуры, датчика ПШ, считывает и выводит время и кучу других показаний на дисплей. Помимо этого в этот промежуток может быть запрограммированно отключение одной из ламп(эффект облаков), из за повышения температуры включение вентилятора, изи за повышения ПШ отключение СО2 и т.д.
Конечно можно принебреч 10-20 сек зависона, но это как то не комильфо ИМХО.
2012-08-30 добавлено 30/08/2012 14:48:22#1665305

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

Ну вроде да. Чтоб считать с цифровой нужно написать digitalRead();
2012-08-30 добавлено 30/08/2012 14:50:52#1665307

Посетитель




132 4
Пятигорск
8 дн. назад
Народ ну помогите! Дибильнейшая ситуация, я немогу на часах изменить год???ВТФ? Ктонить сделал?
2012-08-30 добавлено 30/08/2012 14:56:58#1665312

Свой на Aqa.ru




2011 198
Москва
1 мес. назад
Ну тогда действительно выход один, 2ю мать ставить со слабыми "мозгами", мне это напоминает книгу Гарри Гаррисона про искуственный интеллект - он тоже это так же решил, процессор, который следит за другим, чтоб тот в цикл не уходил )))
Тогда действительно, самые трудоемкие процессы можно выводить на второго Дуино и не беспокоиться, что жизненно важные процессы "затупят" и приведут к Ч/П.
2012-08-30 добавлено 30/08/2012 15:02:47#1665316

Посетитель




108 4
Волгоград
3 г. назад
Paradox860

а какая проблема у тебя с годом?
2012-08-30 добавлено 30/08/2012 15:03:51#1665317

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

Часы на DS1307, попробуй поменять год используя кнопочки под дисплеемю. У меня из меню меняется все - часы,минуты, месяцы,дни недели, дата. А вот год нихрена, главное код такой же ведь...
2012-08-30 добавлено 30/08/2012 15:56:03#1665340

Посетитель




108 4
Волгоград
3 г. назад
Paradox860

У меня нормально часы устанавливаются.

P.S. А вы уверены что код такой же как у меня?

Изменено 31.8.12 автор wattnik
2012-08-30 добавлено 30/08/2012 21:50:25#1665500

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

RTC.set(DS1307_YR,rtc[6]);
2012-08-31 добавлено 31/08/2012 06:58:09#1665565

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

RTC.set(DS1307_YR,rtc[6]);
2012-08-31 добавлено 31/08/2012 06:58:10#1665566

Посетитель




108 4
Волгоград
3 г. назад
Paradox860


RTC.fillByYMD(myTime[2],myTime[1],myTime[0]);
RTC.fillByHMS(myTime[3],myTime[4],0);
2012-08-31 добавлено 31/08/2012 07:45:06#1665581

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

Arduino 1.0?
У тебя новая библиотека под DS1307, другие команды совсем.
2012-08-31 добавлено 31/08/2012 08:33:47#1665595

Посетитель




108 4
Волгоград
3 г. назад
Paradox860


arduino 1.0.1
библиотека ds1307_new.

Вопрос: Можно поподробнее про PH-датчик?

Изменено 31.8.12 автор wattnik
2012-08-31 добавлено 31/08/2012 08:53:28#1665601

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

Примерный код
#define NUMREADINGS 10
int readings[NUMREADINGS]; // the readings from the analog input
int index = 0; // the index of the current reading
int total = 0; // the running total
int average = 0; // the average

void setup(void) {
for (int i = 0; i < NUMREADINGS; i++)
readings[i] = 0;
}

void loop(void){

int ph_read, ph_val;

// To calibrate ph probe set 7ph to 2V and 10PH to 1V

total -= readings[index]; // subtract the last reading
readings[index] = analogRead(ph_probe); // read from the sensor
total += readings[index]; // add the reading to the total
index = (index + 1); // advance to the next index

if (index >= NUMREADINGS) // if we're at the end of the array...
index = 0; // ...wrap around to the beginning

average = total / NUMREADINGS; // calculate the average

ph_val = (-1.47 * average + 1300); //ph is stored 100 times value

Whole = (ph_val / 100); // separate off the whole and fractional portions
Fract = (ph_val % 100);

lcd.position(3,12);
lcd.println("PH ");
if (Whole < 10){
lcd.println(" ");
}
lcd.println(itoa(Whole, buf, 10));
lcd.println(".");
if (Fract < 10){
lcd.println("0");
}
lcd.println(itoa(Fract, buf, 10));

}




Изменено 31.8.12 автор Paradox860
2012-08-31 добавлено 31/08/2012 10:13:04#1665640
Нравится wattnik

Посетитель




108 4
Волгоград
3 г. назад
Paradox860

За код конечно спасибо, но хотелось бы поподробнее о самом датчике и физической стыковке его с ардуиной.
2012-08-31 добавлено 31/08/2012 11:07:56#1665664

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

2012-08-31 добавлено 31/08/2012 12:15:29#1665699

Посетитель




132 4
Пятигорск
8 дн. назад
Фууу задолбаться переправлять код под новую ИДЕ, вот нафига они пиреписали половину библиотек по другому? Да и год теперь пашет)))УРА!
Заказал себе наконец то дислей 4х20, будет красота теперь!
2012-08-31 добавлено 31/08/2012 13:01:49#1665719

Посетитель




108 4
Волгоград
3 г. назад
Paradox860
Фууу задолбаться переправлять код под новую ИДЕ, вот нафига они пиреписали половину библиотек по другому? Да и год теперь пашет)))УРА!
Заказал себе наконец то дислей 4х20, будет красота теперь!


Поздравляю.


По поводу датчика PH - можно его фото и маркировку?


И вопрос (наверно дурацкий): есть ли датчик на нитраты/нитриты?
2012-08-31 добавлено 31/08/2012 13:27:50#1665729

Посетитель




132 4
Пятигорск
8 дн. назад
wattnik

Ph электроды
На нитриты нитраты не видел.

Изменено 31.8.12 автор Paradox860
2012-08-31 добавлено 31/08/2012 21:15:19#1665867

Посетитель




132 4
Пятигорск
8 дн. назад
Народ кто какой БП использует?
2012-09-06 добавлено 06/09/2012 08:59:14#1668023

Новичок




8
Russian Federation Novosibirsk
4 г. назад
Ну вот заказал arduino, датчик на температуру далас, монтажную плату,жк 2 строчный с кнопками, тока забыл таймер заказать придется самому собрать.

Ребят есть предложения может тему перетресем, шапку обновим, например в верху темы чтоб были схемы разводки плат скетчи итд чтоб вновь прибывшем людям было проще поднять контроллер!
2012-09-06 добавлено 06/09/2012 09:58:21#1668046

<< 1234567 >> Создать новую темуБыстрый ответ