Перейти к содержимому

Open

Фотография
* * * * * 17 Голосов

Аква-контроллер от Олега


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7638

#921 shakalby

shakalby

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 699
  • Меня зовут:Михаил
  • Откуда:RU23

Отправлено 04 Декабрь 2014 - 10:26

Полностью с Вами согласен!! Каждый сам индивидум!)



#922 oleg_il

oleg_il

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 711
  • Откуда:Israel

Отправлено 04 Декабрь 2014 - 14:02

Вкратце разница небольшая есть.

Глобально это конечно русский язык, адаптированный под Аквашилд. Небольшое изменение главного экрана.

Управление светом практически без изменений. Думаю тут не стоит уже ничего менять.

Так же добавлена кормушка. В программе решил не делать управление сервой, только вкл. выкл., в кормушку воткнул ардуино нано и повесил на нее серву, контроль уровня корма и микровибратор чтоб корм не зависал. (Но это уже другая тема :))

Добавил дозатор УДО - 4 канала. (Для пресняка. Для моря тоже можно использовать. Для баллинга.)

Контроль уровня PH с управлением подачей CO2 в процессе допиливания. Контроль уровня воды планируется либо на двух простейших поплавках, либо на одном, но с несколькими герконами в трубке и резистивным делителем. (Вход будет задействован один)

Убрал погоду и помпы. Мне ни к чему, но можно и вернуть. 

 

У меня почему то про погоду все время спрашивали владельцы пресных аквариумов, так что пришлось сделать

 

Потихоньку запихиваю повторяющиеся операции в функции. Так что места должно хватить наверно на всё. Ну или почти на всё.))))

 

Сколько места в % у тебя осталось от памяти, интересно..

 

Вот насчет повторяющихся функций - интересно. Предлагаю бартер  :biggrin:

С удовольствием бы взял хорошую функцию таймера, но мне нужно с секундами. Это то что требуется для УДО и дозаторов.

Могу дать новую навороченную функцию кнопок +/- типа тех что в настройках температуры, но единую для всей программы.

:)



#923 avp8853

avp8853

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 146
  • Откуда:Пятигорск

Отправлено 04 Декабрь 2014 - 17:15

Вот еще есть хорошая библиотека сильно уменьшает размер скетча 

#include "CyberLib.h"

void setup()
{
  D13_Out; //Настраиваем пин D13 на выход
}

void loop()
{
label:  
 
 D13_High;
 D13_Low;
 
goto label; 
}

Скетч занял 456 байт в памяти контроллера, что почти в двое меньше и на выходе пина 13 получили частоту 2650 кГц.
Теперь результат впечатляет, скорость работы отличается в 22 раза

 

Описание функций библиотеки CyberLib

********Управление пинами: 
Dx_Out;  - установка пина Х как выход 
Dx_In; - установка пина Х  как вход 
Dx_Hihg;-  установка высокого уровна на пине Х 
Dx_Low; - установка низкого уровня на пине Х 
Ax_Read; - чтение аналогового пина Х 

********SmallUart 
UART_Init(115200);//инициализация последовательного порта 
UART_ReadByte(byte);//получить байт данных из последовательного порта 
UART_SendByte(byte);//отправить байт данных в последовательный порт 
UART_SendArray(array, size array);// Функция отправляет в UART порт, массив типа байт, максимальный объем которого не должен превышать 65535 байт, минимальный объем массива 1 байт 
Можно также отправлять часть массива 
array-имя вашего массива,  
size array-число отправляемых байт массива 

******** delay_us() и delay_ms() 
Функции delay_us() и delay_ms() можно применять в прерываниях так как они не используют таймер, но следует не забывать что точность этих функций зависит от использования в коде обработчиков прерываний. Если Вы не используете в коде прерывания то и точность будет высокая 
delay_us(n); //где n - задержка в мкс, максимальная задержка может быть не больше 16000мкс 
delay_ms(n); //где n - задержка в мс, максимальная задержка может быть не больше 65000мс это равно 65сек 

******* Timer1.  
Настройку прерываний таймера можно настривать от 6мкс. до 4000000мкс.(4сек.) с шагом 1мкс. 
StartTimer1(obrobotchik, 1000);// запуск таймера, первый параметр это Ваш обработчик прерывания, второй параметр это время, может принимать значения от 6 до 4000000 
StopTimer1();// Выключить таймер 
ResumeTimer1(); возобновить отсчет после остановки 
RestartTimer1(); перезапустить отсчет таймера заново 


********SPI. Увеличил пропускную способность в 1,85 раза, при работе на одной и той же частоте 
SPI теперь можно настроить и запустить одной строкой : StartSPI(0, 2, 1); Где первый параметр это режим mode от 0 до 3 
Второй параметр это делитель тактовой частоты, может принимать значения 2, 4, 8, 16, 32, 64, 128. Если Вы хотите выяснить частоту SPI то должны  
тактовую частоту контроллера 16000000 разделить на любой делитель из списка. И последний параметр это какой бит пойдет первым. Если 1 то первым пойдет старший бит 
если 0 то первым пойдет младший бит. Отправить байт данных в шину SPI можно так: SendSPI(12); Получить байт данных MyData=ReadSPI(); Выключить SPI можно так: StopSPI(): 

*********EEPROM 
Ограничение! адресует максимум 256 адресов для типа Byte 
Для Word максимум 128 
Для Long максимум 64 

Сохранить значение 4000000 в EEPROM по адресу 0 тип Long 
WriteEEPROM_Long(0, 4000000);  

Прочитать из EEPROM с адреса 0 значение типа Long 
uint32_t tmp=ReadEEPROM_Long(0); 

Сохранить значение 4000 в EEPROM по адресу 0 тип Word 
WriteEEPROM_Word(0, 4000);  

Прочитать из EEPROM с адреса 0 значение типа Word 
uint16_t tmp=ReadEEPROM_Word(0); 

Сохранить значение 400 в EEPROM по адресу 0 тип Byte 
WriteEEPROM_Byte(0, 200);  

Прочитать из EEPROM с адреса 0 значение типа Byte 
uint8_t tmp=ReadEEPROM_Byte(0); 

********find_similar(Array, sizeArray, range); 
Фильтр удаления шума и ложных срабатываний  
Функция возвращает наиболее часто встречаемое в массиве значение  
Array - Указатель на проверяемый массив, массив может иметь тип uint16_t или uint8_t 
sizeArray - длинна массива не более 256 элементов 
range - предел погрешности(отклонен� �е) может колебаться от 0 до 127, при значении 0 функция будет искать точные копии значений 

********beep 
beep(uint16_t dur, uint16_t frq); 
Генерирует звуковые колебания, на любом пине с заданной частотой и длительностью 
dur - длительность от 50мс до 65535 мс 
frq - частота от 10 Гц до 2000 Гц 

*********Soft Reset 
reset(); - программный сброс контроллера  
При помощи этой функции можно отправить контроллер в ребут в любом месте выполняемой программы 

*********Бесконечный цикл 
Start - Начало цикла 
End - Конец цикла 

********* Работа со сторожевым таймером      
wdt_reset() - обнулить сторожевой таймер 
wdt_disable() - выключить сторожевой таймер 
wdt_enable(timeout) - Инициализация сторожевого таймера 

Возможные значения timeout 
WDTO_15MS 
WDTO_30MS 
WDTO_60MS 
WDTO_120MS 
WDTO_250MS 
WDTO_500MS 
WDTO_1S 
WDTO_2S 
WDTO_4S 
WDTO_8S  


#924 avp8853

avp8853

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 146
  • Откуда:Пятигорск

Отправлено 04 Декабрь 2014 - 17:23

Вот сама библиотека

Прикрепленные файлы


  • Dima.K это нравится

#925 Akorg

Akorg

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 1 321
  • Меня зовут:Андрей
  • Откуда:Рязань

Отправлено 04 Декабрь 2014 - 17:28

 

Сколько места в % у тебя осталось от памяти, интересно..

 

Вот насчет повторяющихся функций - интересно. Предлагаю бартер  :biggrin:

 

 

Я не питаю иллюзий по поводу написания кода :) Далеко мне еще до совершенства.

Таймер дозатора как раз посекундно отрабатывает. Специально секундомером измерял :)

 

Код пришлю в личку обязательно. (может будет над чем посмеяться) 

 

Скетч занимает 232 кб. 89%. Но это без погоды и помп. Но с кормушкой, таймерами и дозаторами. Места как раз под контроль PH я думаю хватит. 

 

А навороченная функция это типа нажал-подержал и побежали? Было бы интересно.



#926 MONSTR

MONSTR

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 611
  • Меня зовут:Alexandr
  • Откуда:Novosibirsk

Отправлено 04 Декабрь 2014 - 19:46

вот корпус подобрал........ может кому пригодится........

Прикрепленные изображения

  • DSC_0069.JPG


#927 Kiraso

Kiraso

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 1 426
  • Откуда:St.Petersburg

Отправлено 04 Декабрь 2014 - 21:21

 

 

 

 

для максимальной  производительности и компактности кода, советую использовать сразу стандартную/нормальную запись в порт  (я тут опускаю ассемблерные вставки, это очень редко когда необходимо, кроме того, приведенная ниже запись на С практически повторяет мнемокод, зависит от включенной оптимизации и самого компилятора конечно)

 

#define  bMASK = 0b00001000;

// запись единицы в PORTB (для примера), в bit3 (также для примера) 

PORTB |= bMASK;

// запись 0 туда же

PORTB &= !bMASK;

 

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

 

// тоже самое, только без define

PORTB |= 0x08;

PORTB &= 0xF7;


"Зато теперь
Мы знаем, каково с серебром;
Посмотрим, каково с кислотой..." ©БГ

#928 Как то так

Как то так

    Новичок

  • Пользователи
  • Pip
  • Cообщений: 36
  • Меня зовут:Николай
  • Откуда:Краснодар

Отправлено 04 Декабрь 2014 - 21:33

А я все в старую крышку вмонтировал DSC_0483.JPG

к стати русская версия Вадима работает с шилдом Олега DSC_0483.JPG

DSC_0489.JPG

есть маленькие баги по экрану , я задавал вопрос на аква-лого , но так никто не ответил:)

Прикрепленные изображения

  • DSC_0486.JPG

  • shakalby это нравится

#929 Akorg

Akorg

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 1 321
  • Меня зовут:Андрей
  • Откуда:Рязань

Отправлено 04 Декабрь 2014 - 21:38

Если пины переназначить то работает конечно. У меня баги на экране появляются иногда при сохранении настроек на флешку. На стандартном шилде этого нет. Разбираюсь с назначением пинов. Думаю косяк как раз в этом.

#930 Александр Авдеев

Александр Авдеев

    Продвинутый пользователь

  • Авдеевы
  • PipPipPip
  • Cообщений: 16 541
  • Меня зовут:Александр
  • Откуда:Ухта, Республика Коми

Отправлено 04 Декабрь 2014 - 21:44

А как на флешку сохраняешь... или или SDкарту имеешь в виду?

На карту пишет без вопросов и глюков.



#931 Как то так

Как то так

    Новичок

  • Пользователи
  • Pip
  • Cообщений: 36
  • Меня зовут:Николай
  • Откуда:Краснодар

Отправлено 04 Декабрь 2014 - 21:45

у меня вот такое

 

а спустя минуту все норм

Прикрепленные изображения

  • DSC_0524.JPG
  • DSC_0525.JPG

  • shakalby это нравится

#932 Как то так

Как то так

    Новичок

  • Пользователи
  • Pip
  • Cообщений: 36
  • Меня зовут:Николай
  • Откуда:Краснодар

Отправлено 04 Декабрь 2014 - 21:46

я заметил что это возникает когда срабатывают таймеры и охлаждение или обогреватель.


  • shakalby это нравится

#933 Александр Авдеев

Александр Авдеев

    Продвинутый пользователь

  • Авдеевы
  • PipPipPip
  • Cообщений: 16 541
  • Меня зовут:Александр
  • Откуда:Ухта, Республика Коми

Отправлено 04 Декабрь 2014 - 21:47

Имхо где-то что-то не контачит или наводки какие (не электрик я :ah: )



#934 Akorg

Akorg

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 1 321
  • Меня зовут:Андрей
  • Откуда:Рязань

Отправлено 04 Декабрь 2014 - 21:52

А как на флешку сохраняешь... или или SDкарту имеешь в виду?

На карту пишет без вопросов и глюков.

Неправильно выразился. Конечно речь про SDкарту идет.

Сам процесс сохранения проходит нормально. Просто артефакты на экране возникают иногда. От таймеров нет такого у меня. Может потому, что твердотельные реле стоят.



#935 Как то так

Как то так

    Новичок

  • Пользователи
  • Pip
  • Cообщений: 36
  • Меня зовут:Николай
  • Откуда:Краснодар

Отправлено 04 Декабрь 2014 - 21:59

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



#936 Akorg

Akorg

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 1 321
  • Меня зовут:Андрей
  • Откуда:Рязань

Отправлено 05 Декабрь 2014 - 00:49

А вот это не факт. Контакты реле - источник помех в очень широком спектре частот. Если реле близко к низковольтным цепям - всякое возможно... 



#937 shakalby

shakalby

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 699
  • Меня зовут:Михаил
  • Откуда:RU23

Отправлено 05 Декабрь 2014 - 09:46

Николай Я  ищу  ту  строку на которой  у тебя  встречается глюк!!!
это координаты значений температуры (если не забыл),  там  вылазят строки и у  тебя  идет глюк в координатах! одни  ложатся на другие!!!  и  еще  был глюк с голубым!!  он съехал в сторону к  белому !!! я залью твой скетч , еще раз гляну!!!
сейчас проблема  у  меня   идут соревнования! и я прихожу  убит  домой! все ни как  руки не дотянутся!(((((



#938 gregor

gregor

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 586
  • Откуда:Мурманская обл.

Отправлено 05 Декабрь 2014 - 13:59

Добрый день.

Хотел попросить у Вас скинуть в личку, посмотреть Вашу версию скетча для аква контроллера.
Подскажите на какой версии (по дате) Вадима Вы делали Свою модификацию?

С Уважением Григорий.



#939 Александр Авдеев

Александр Авдеев

    Продвинутый пользователь

  • Авдеевы
  • PipPipPip
  • Cообщений: 16 541
  • Меня зовут:Александр
  • Откуда:Ухта, Республика Коми

Отправлено 05 Декабрь 2014 - 15:14

Я бы тоже посмотреть хотел... :)



#940 MONSTR

MONSTR

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 611
  • Меня зовут:Alexandr
  • Откуда:Novosibirsk

Отправлено 05 Декабрь 2014 - 19:58

тоже очень интересно, если можно и мне ....






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных

Ветка управляется: