///////////////////////////////////////////////////////////////////////////////
// Что сделано
///////////////////////////////////////////////////////////////////////////////
# 2010/04/13 - 3.0.0.4 / последняя 3.х реализация автора Maurice Ribble
далее mod
- общий "рефакторинг", моддинг...(без подробностей)
- перевод на прямую работу с портами
- перевод на "стандартную" версию LCD/I2C
- EEPROM default значениия, макрос DEF_xxx
- бипер
- два индикаторных св.диода, на будущее (пока не несут особой функциональности, кроме сигнализации сработки камеры/вспышки)
- сброс настроек к заводским перевел на одну горячую кнопку MENU (включение с зажатой кнопкой), ей же выход обратно в меню
add new preprocessor / Timeout for processes
- KEY_TIMEOUT_LOOP
- TIMEOUT_TRIGG_CAMERA
- TIMEOUT_BTN_DEBOUNCE
перевод задержек на версии CyberLib (без изменений)
- delay_ms(uint16_t tic_ms)
- delay_us(uint16_t tic_us)
подрихтованы меню/строки
Fast_Cam & LowPow_Cam меняем на интуитивно понятное
Camera/Foc - с предварительным срабатыванием автофокуса
Camera/Std - стандартное срабатывание, фокус и затвор одновременно
timelapseFunc()
доработал, улучшил точность, до максимально возможной на мандарине :о)
измерение времени, вместо подсчета интервалов через delay() -> заменил на измерение общего системного времени millis()
projectileFunc()
немного рихтанул, перенес выключение девайсов и сделал "стандартную" задержку для срабатывания Device камеры/вспышки
///////////////////////////////////////////////////////////////////////////////
// Некоторые особенности
///////////////////////////////////////////////////////////////////////////////
Volve Sensor
управление эл.магнитным клапоном производится через "канал вход/сенсор", канал переходит в режим OUT (на время работы Volve Sensor)
нет реализации захвата события сработкой сенсора (как в фотодурине), тут только захват
события/времени первого плевка (капли)
...
добавил бипер и функции управления
beep() & beep_set()
т.к. используется "упрощенная" версия пищалки, блокирующая работу (в обычных
случаях использования), то и соотв. задержка вносит неудобства в работу
интерфейса, напр., "с пищялкой" быстро мотать меню не удобно, чуствуются задержки
на писке.
короч, оставил сигнал только для особо важных событий (сработка устройств DEV_SET)
...
добавил два индикаторных св.диода на "ком-порт" :о)
пока повешаны на "полное управление выходом девайсов камер", макрос
DEV_SET, DEV_CLR
т.е. пока достаточно бесполезная хрень, т.к. выходы Flash/Device будут обвешаны
внешними индикаторными св.диодами
...
сброс настроек к заводским - сменил "горячую кнопку" сделал одну MENU, она же
и выход из сервисного меню
по установке едениц: дефолтное значение едениц -> UNIT_CM
и да, почему-бы, блин, не сделать установку "едениц измерений" в меню?! а...???!!!
немного настроил дефолтные настройки
///////////////////////////////////////////////////////////////////////////////
// ADC & etc
///////////////////////////////////////////////////////////////////////////////
delete мандарино функции: analogRead() & digitalRead/Write()
сейчас ADC читается ADC0_READ с постоянной установкой канала
что бы вызывать простое чтение adc_read(), без промежуточных операций:
надо дотюнить работу с меню или использовать ОДНОВРЕМЕННО только один датчик,
что не подходит, т.е. оставляем все как есть :о)
особенность "аналоговое измерение/ADC"
измерение делается с пом-ю макросов
SENSOR1_AREAD --> ADC0_READ --> (adc_read_MUX(ADC_MUX0))
в кот. устанавливается селектор каналов MUX и необходима задержка перед измерением
delay_us(ADC_TIMEOUT);
в CameraAxe - "измеряется" сразу два датчика (ADC канала), кот. постоянно
переключаются, поэтому нужна задержка
сразу после смены канала - у ADC на выходе муссор (видимо около нуля... что и было
отрицательным сигналом срабатывания т.е. срабатывание по падению сигнала, как у
нас, в активных датчиках :о)
строки меню пока разбросаны по всему коду, что есть полная жопа!!! руки пока не дошли...
видимо, не женская ...
!!! есть одна неприятность, пока не понял... короч, после выхода из "сервисного
меню/Reset to Defaul" в "обычное меню" - срабатывает промотка на один пункт и
устанавливается пункт "Device2" (только НУ ОЕНЬ быстрое нажатие на кн. MENU
устанавливает правильный, первый пункт меню)
возможно переборщил с rc-цепочкой на кнопках
///////////////////////////////////////////////////////////////////////////////
// Linux
///////////////////////////////////////////////////////////////////////////////
Вся работа проводилась на Linux, кодировка UTF8
для просмотра кода установить TAB=2
в архиве есть скрипты для сборки/загрузки
_build.sh
_upload.sh
arduino_build
htm - старый архив с описанием, Builders Guide и User Guide (в инете последних двух уже нету :о)
Linux x32
Arduino 1.5.8