Посетитель


148 8
Пятигорск
51 мин.

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

Всем привет вот за пару дней наваял контроллер.

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

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

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




2011-06-1616/06/2011 11:21:27
#1443198
Нравится Volcan0, KoRvin
Свой на Aqa.ru


2012 203
Москва
2 года

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

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


148 8
Пятигорск
51 мин.

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-3030/08/2012 14:00:47
#1665279
Посетитель


148 8
Пятигорск
51 мин.

AquaCross

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


2012 203
Москва
2 года

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


108 4
Волгоград
4 года

AquaCross
если в этот час нет команд,


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



Paradox860


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

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

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

Изменено 30.8.12 автор wattnik
2012-08-3030/08/2012 14:43:56
#1665304
Посетитель


148 8
Пятигорск
51 мин.

AquaCross

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


148 8
Пятигорск
51 мин.

wattnik

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


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


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


108 4
Волгоград
4 года

Paradox860

а какая проблема у тебя с годом?
2012-08-3030/08/2012 15:03:51
#1665317
Посетитель


148 8
Пятигорск
51 мин.

wattnik

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


108 4
Волгоград
4 года

Paradox860

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

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

Изменено 31.8.12 автор wattnik
2012-08-3030/08/2012 21:50:25
#1665500
Посетитель


148 8
Пятигорск
51 мин.

wattnik

RTC.set(DS1307_YR,rtc[6]);
2012-08-3131/08/2012 06:58:09
#1665565
Посетитель


148 8
Пятигорск
51 мин.

wattnik

RTC.set(DS1307_YR,rtc[6]);
2012-08-3131/08/2012 06:58:10
#1665566
Посетитель


108 4
Волгоград
4 года

Paradox860


RTC.fillByYMD(myTime[2],myTime[1],myTime[0]);
RTC.fillByHMS(myTime[3],myTime[4],0);
2012-08-3131/08/2012 07:45:06
#1665581
Посетитель


148 8
Пятигорск
51 мин.

wattnik

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


108 4
Волгоград
4 года

Paradox860


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

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

Изменено 31.8.12 автор wattnik
2012-08-3131/08/2012 08:53:28
#1665601
Посетитель


148 8
Пятигорск
51 мин.

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-3131/08/2012 10:13:04
#1665640
Нравится wattnik
Посетитель


108 4
Волгоград
4 года

Paradox860

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


148 8
Пятигорск
51 мин.

wattnik

2012-08-3131/08/2012 12:15:29
#1665699
Посетитель


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


108 4
Волгоград
4 года

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


Поздравляю.


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


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


148 8
Пятигорск
51 мин.

wattnik

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

Изменено 31.8.12 автор Paradox860
2012-08-3131/08/2012 21:15:19
#1665867
Посетитель


148 8
Пятигорск
51 мин.
Народ кто какой БП использует?
2012-09-0606/09/2012 08:59:14
#1668023
Новичок


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

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



Top