Ок, если еще не запарил, то мне непонятно, что такое start/stop, а также смысл переменной-члена класса s? Иначе с т.з. кнопки - это можно понять по-разному. Например, принудительно считать, что кнопка была нажата, принудительно считать, что кнопка была отжата, вроде бы смысл какой то наблюдается. А вот что такое смена нажата на отжата или отжата на нажата, как то с трудом понимаю смысл этих действий. Отсюда будет и название действия, когда будет понятен смысл этого действия. toggleStartStop тоже как то криво, хотя, в моем понимании более или менее нормально, пока не понимаю смысл этого действия. А еще это можно понять, как начать/закончить отслеживание какого то события, например, длительности нажатия кнопки, типа нажата дольше какого то времени. Короче контекст объяснит всё.
Философия ON [можно игнорировать]
А еще, если это действительно отслеживание длительности нажатия, то тут уже возникает вопрос наследования от базового класса, а не лепить все яйца в одну корзину, хотя в embedded порожденные классы - это скорее нонсенс. Зато базовый класс можно вылизать и забыть про него, а в порожденном накидать функциональность отслеживания длительности нажатия. Ладно, это философия, можно забить, если не труЪ. А если еще подбросить какашек на вентилятор, то можно использовать разные длительности, типа 0,5с это генерация повтора нажатия, 2с - переход в режим редактирования, 3с - выход в главное меню. Это всё условные события, как пример того, что длительность нажатия может быть разной.
PS Работы мало, вот меня и прет пофилософствовать ;)
Ок, если еще не запарил, то мне непонятно, что такое start/stop, а также смысл переменной-члена класса s? Иначе с т.з. кнопки - это можно понять по-разному. Например, принудительно считать, что кнопка была нажата, принудительно считать, что кнопка была отжата, вроде бы смысл какой то наблюдается. А вот что такое смена нажата на отжата или отжата на нажата, как то с трудом понимаю смысл этих действий. Отсюда будет и название действия, когда будет понятен смысл этого действия. toggleStartStop тоже как то криво, хотя, в моем понимании более или менее нормально, пока не понимаю смысл этого действия. А еще это можно понять, как начать/закончить отслеживание какого то события, например, длительности нажатия кнопки, типа нажата дольше какого то времени. Короче контекст объяснит всё.
Вообще, в моем понимании noDELAY, start - это фактически {s = 0; read(millis()); s = 1;}
В read было бы логично при инициализации previous устанавливать s = 1; в конце строки 28 внутри скобок. В этом ключе stop нафиг не нужен. Вместо стоп, достаточно в строке 29 вместе с tick = 1; устанавливать s = 0;
А еще tick лучше сбрасывать при старте. Не в 27 строке, а в 28 внутри скобок. Это для того, чтобы знать, сработало ли предыдущее событие до старта текущего. Иначе получается, что tick сбрасывается случайным "образом", т.е. непрогнозируемо в методе read, который будет вызван неизвестно когда и мы моем легко пропустить срабатывание события. А если сбрасывать тик по старту нового ожидания, то это логичней.
Я бы вообще s забил в приват и никому бы его не показывал, потому что эта переменная нафиг не нужна снаружи класса. Ладно, не буду тебе мозг маять, у меня своё видение, у тебя - своё. Боюсь мы друг друга можем не понять. :)
Иначе получается, что tick сбрасывается случайным "образом", т.е. непрогнозируемо в методе read, который будет вызван неизвестно когда и мы моем легко пропустить срабатывание события. А если сбрасывать тик по старту нового ожидания, то это логичней.
ну, да - один уже забил обработчик класса титановой кнопки в цикл и спрашивал, почему кнопка не работает.
*ежу понятно, что код не реалтайм - всё происходит в лупе.
Вот вот, про то я и пишу, что тик надо сбрасывать либо при старте отслеживания нового события, либо еще можно сбрасывать при чтении, но тогда здесь тоже найдутся Колумбы, которые будут считывать по нескольку раз и набрасывать говнеца на вентилятор.
Классы вообще надо рассматривать как черный ящик, который не позволяет шаловливым ручкам делать что они захотят. Потому я и говорю, что все внутренние переменные должны быть недоступны. Оставляют обычно только паблик методы, которые позволяют делать только то, что можно, а не то, что хочу. Еще есть плюсы в том, что внутернние переменные закрыты и для них делаются геттеры/сеттеры (т.е. доступ к переменных только через паблик методы), что например, в сеттер можно добавить не только установку переменной, но и какое то действие. Как пример (не совсем, но всё-таки) то, что я писал про start, когда он не только s=1, но сначала запускает read(millis()), например. Хотя read я бы переделал (писал в предыдущих сообщениях), тогда он будет независим от того, как часто он запускается.
Вот вот, про то я и пишу, что тик надо сбрасывать либо при старте отслеживания нового события, либо еще можно сбрасывать при чтении, но тогда здесь тоже найдутся Колумбы, которые будут считывать по нескольку раз и набрасывать говнеца на вентилятор.
так и происходит
25
voidread(unsigned long_interval) {
26
interval = _interval;
27
unsigned longcurrent = millis(); tick = 0;
kisoft пишет:
Классы вообще надо рассматривать как черный ящик, который не позволяет шаловливым ручкам делать что они захотят. Потому я и говорю, что все внутренние переменные должны быть недоступны. Оставляют обычно только паблик методы, которые позволяют делать только то, что можно, а не то, что хочу. Еще есть плюсы в том, что внутернние переменные закрыты и для них делаются геттеры/сеттеры (т.е. доступ к переменных только через паблик методы), что например, в сеттер можно добавить не только установку переменной, но и какое то действие. Как пример (не совсем, но всё-таки) то, что я писал про start, когда он не только s=1, но сначала запускает read(millis()), например. Хотя read я бы переделал (писал в предыдущих сообщениях), тогда он будет независим от того, как часто он запускается.
ты в который раз повторяешь read(millis()) - я не понимаю, что это и как делает.
по поводу переменной s - и, какая разница, чем ты будешь ею рулить, если её НУЖНО изменять.
Я предполагал, что этот класс используется другим образом. Теперь я понимаю, что я вообще ничего не понял. Ну тогда нафиг. Себе и тебе мозг заполоскал. Извини. :)
Весна, спамеры расцвели, вот нескушный сад, мля. Иногда по нескольку раз в день попадаются. Когда ж им жабу то разорвет. На необитаемый остров и никакого интернета!
Прохождение каждого метра в заданном квадрате несмотря на уклоны (не большие) и почву(не крупная пахота), проверка цвета почвы - если найден цвет, остановка, доп проверка, фиксация на GPS, маркировка на месте.
Управление: через сервер и GSM модуль в идеале. (сервер есть - серверную часть сделаю). Доп способ управления - Телеметрия и т.п. (нужен ваш опыт и мнение).
Ходовая: моторы от шуруповертов 12В по двум сторонам, поворот за счет движения одной строны, колеса диаметром 300мм из пулеуретана. Остальное чем легче тем лучше.
Вес: в зависимости от нужного количества акумуляторов и оборудования.
Размер: 1м на 1м (не строго) главное устойчивость.
Питание: аккумуляторы с перспективой заменить на бензогенератор.
Скорость: от 1 до 10км час. (нужна регулировка скорости).
Желаемое расстояние на одном заряде: 100 на 100метров.
Очень важно проходить каждый метр независимо от пробуксовки и почвы - что приводит к мысли движения по GPS + компас и корректировки хода контроллером.
Что есть:
1.АПМ 2.6 + ЖПС+ Компас
2.Ардуины разные + ЖПС и любой нужный модуль
3.Моторы шуруповертов на 12в и током до 10А
С большим уважением отнесусь к помощи людей которые сталкивались с подобными задачами и смогут помоч советом.
Добрый день всем!
Коль для чайно-чайнутых тем нет, позвольте со своим наивом здесь к вам, эксперты, обратиться с горстью моих вопросов.
Конечно, если у кого найдется время и возможность - просветите, пожалуйста, буду признателен.
Собираю слайдер на основе рельсы и каретки HIWIN. Планирую его "обвесить" моторчиками и вдохновится созданием таймлапсов. Средний вес конструкции на рельсе(1метр) - около 1,5-2 кг предполагаю - каретка, голова под фотоаппарат сам фот + блок вращения по другой оси..
1. Как я понимаю - мне придется собрать два слайдера - под свои задачи. Один слайдер планирую использовать в видеорежиме - набирать репортажные фрагменты разных событий(свадьба, концерт) в движении камеры, которую планирую запускать в ритме "маятника" - вариант с концевиками, переключащими на обратный ход; скорость перемещения каретки 20-200 секунд за метр. Какие DC-движки есть для этих задач и какие к ним есть блоки управления (на алиэкспр или-или)?
2. Второй вариант слайдера - для таймлапсов (фото-режим) и как понимаю - здесь уже нужны шаговые движки. Один движок планирую на движение каретки по рельсе через привод на резьбовой рейке (грубо 200руб/метр - самое простое решение). Второй движок разместить на каретке в блоке для движения камеры по линии горизонта (тут я уже, наверное, через чур фантазирую - хотя бы по рельсе двигать для начала :) ) . Nema 17? Какой к нему нужен простейший драйвер/контроллер для движения по рельсе со скоростью 15-200минут/метр?
Еще попыта - я под другим именем(Sogdiec) нечаянно вновь зарегился.. уж извините..
Итак, я пока к чему пришел - для фото-таймлапсов надо бы собрать NEMA17+ ардуино и пр.
Коль решит кто ..снизойти - надеюсь, подскажете - где и каким "поездом" далее двигаться :)
1. Как синхронизировать АРдуино с моим фотоаппаратом gh3? В фоте есть режим интервальной съемки. И чтоб создать синхрон - надо либо комммуницировать фот с Ардуино, либо дисплей в схему ввести.. В общем - пока запутался..
2. Писать скетчи - не мое.. Наверняка есть простые и готовые скетчи, которые можно использовать для движения каретки по рельсе в синхроне с фотографирующим фотоаппаратом..?
Ок, если еще не запарил, то мне непонятно, что такое start/stop, а также смысл переменной-члена класса s? Иначе с т.з. кнопки - это можно понять по-разному. Например, принудительно считать, что кнопка была нажата, принудительно считать, что кнопка была отжата, вроде бы смысл какой то наблюдается. А вот что такое смена нажата на отжата или отжата на нажата, как то с трудом понимаю смысл этих действий. Отсюда будет и название действия, когда будет понятен смысл этого действия. toggleStartStop тоже как то криво, хотя, в моем понимании более или менее нормально, пока не понимаю смысл этого действия. А еще это можно понять, как начать/закончить отслеживание какого то события, например, длительности нажатия кнопки, типа нажата дольше какого то времени. Короче контекст объяснит всё.
Философия ON [можно игнорировать]
А еще, если это действительно отслеживание длительности нажатия, то тут уже возникает вопрос наследования от базового класса, а не лепить все яйца в одну корзину, хотя в embedded порожденные классы - это скорее нонсенс. Зато базовый класс можно вылизать и забыть про него, а в порожденном накидать функциональность отслеживания длительности нажатия. Ладно, это философия, можно забить, если не труЪ. А если еще подбросить какашек на вентилятор, то можно использовать разные длительности, типа 0,5с это генерация повтора нажатия, 2с - переход в режим редактирования, 3с - выход в главное меню. Это всё условные события, как пример того, что длительность нажатия может быть разной.
PS Работы мало, вот меня и прет пофилософствовать ;)
Философия OFF
какая тема -> какой вопрос -> такой и ответ должен быть !
Ок, если еще не запарил, то мне непонятно, что такое start/stop, а также смысл переменной-члена класса s? Иначе с т.з. кнопки - это можно понять по-разному. Например, принудительно считать, что кнопка была нажата, принудительно считать, что кнопка была отжата, вроде бы смысл какой то наблюдается. А вот что такое смена нажата на отжата или отжата на нажата, как то с трудом понимаю смысл этих действий. Отсюда будет и название действия, когда будет понятен смысл этого действия. toggleStartStop тоже как то криво, хотя, в моем понимании более или менее нормально, пока не понимаю смысл этого действия. А еще это можно понять, как начать/закончить отслеживание какого то события, например, длительности нажатия кнопки, типа нажата дольше какого то времени. Короче контекст объяснит всё.
смысл переменной s простой: запустил start() - поехало. запустил stop() - остановилось.
НО! на практике юзание start()&stop() оказывается неудобно, т.к. что-то делает, но не возвращает состояние.
пример мигания светодиода, запускаемого/отсанавливаемого нажатием кнопки:
класс class_noDELAY.h
получается, что start()&stop() нафиг не нужно.
А еще, если это действительно отслеживание длительности нажатия
не - функционал работы с кнопкой находится в классе class_BUTTON.h класс титановый велосипед для тактовой кнопки.
а, для работы с интервалами между событиями есть совсем простой класс, который возвращает интервал между последним и предпоследним событием.
опять 322.....
:(
"крайним и предкрайним событием" - а то сибе накаркаешь ( ...... ....... ...... ....... , бля )
как переменную ( или функцию ) звать-то будешь ?
конкретная ложь !!!!!!!!!!!!!!
н е ч е г о повреждать-то :)
Вообще, в моем понимании noDELAY, start - это фактически {s = 0; read(millis()); s = 1;}
В read было бы логично при инициализации previous устанавливать s = 1; в конце строки 28 внутри скобок. В этом ключе stop нафиг не нужен. Вместо стоп, достаточно в строке 29 вместе с tick = 1; устанавливать s = 0;
А еще tick лучше сбрасывать при старте. Не в 27 строке, а в 28 внутри скобок. Это для того, чтобы знать, сработало ли предыдущее событие до старта текущего. Иначе получается, что tick сбрасывается случайным "образом", т.е. непрогнозируемо в методе read, который будет вызван неизвестно когда и мы моем легко пропустить срабатывание события. А если сбрасывать тик по старту нового ожидания, то это логичней.
Я бы вообще s забил в приват и никому бы его не показывал, потому что эта переменная нафиг не нужна снаружи класса. Ладно, не буду тебе мозг маять, у меня своё видение, у тебя - своё. Боюсь мы друг друга можем не понять. :)
Иначе получается, что tick сбрасывается случайным "образом", т.е. непрогнозируемо в методе read, который будет вызван неизвестно когда и мы моем легко пропустить срабатывание события. А если сбрасывать тик по старту нового ожидания, то это логичней.
ну, да - один уже забил обработчик класса титановой кнопки в цикл и спрашивал, почему кнопка не работает.
*ежу понятно, что код не реалтайм - всё происходит в лупе.
Вот вот, про то я и пишу, что тик надо сбрасывать либо при старте отслеживания нового события, либо еще можно сбрасывать при чтении, но тогда здесь тоже найдутся Колумбы, которые будут считывать по нескольку раз и набрасывать говнеца на вентилятор.
Классы вообще надо рассматривать как черный ящик, который не позволяет шаловливым ручкам делать что они захотят. Потому я и говорю, что все внутренние переменные должны быть недоступны. Оставляют обычно только паблик методы, которые позволяют делать только то, что можно, а не то, что хочу. Еще есть плюсы в том, что внутернние переменные закрыты и для них делаются геттеры/сеттеры (т.е. доступ к переменных только через паблик методы), что например, в сеттер можно добавить не только установку переменной, но и какое то действие. Как пример (не совсем, но всё-таки) то, что я писал про start, когда он не только s=1, но сначала запускает read(millis()), например. Хотя read я бы переделал (писал в предыдущих сообщениях), тогда он будет независим от того, как часто он запускается.
Вот вот, про то я и пишу, что тик надо сбрасывать либо при старте отслеживания нового события, либо еще можно сбрасывать при чтении, но тогда здесь тоже найдутся Колумбы, которые будут считывать по нескольку раз и набрасывать говнеца на вентилятор.
так и происходит
25
void
read(unsigned
long
_interval) {
26
interval = _interval;
27
unsigned
long
current = millis(); tick = 0;
Классы вообще надо рассматривать как черный ящик, который не позволяет шаловливым ручкам делать что они захотят. Потому я и говорю, что все внутренние переменные должны быть недоступны. Оставляют обычно только паблик методы, которые позволяют делать только то, что можно, а не то, что хочу. Еще есть плюсы в том, что внутернние переменные закрыты и для них делаются геттеры/сеттеры (т.е. доступ к переменных только через паблик методы), что например, в сеттер можно добавить не только установку переменной, но и какое то действие. Как пример (не совсем, но всё-таки) то, что я писал про start, когда он не только s=1, но сначала запускает read(millis()), например. Хотя read я бы переделал (писал в предыдущих сообщениях), тогда он будет независим от того, как часто он запускается.
ты в который раз повторяешь read(millis()) - я не понимаю, что это и как делает.
по поводу переменной s - и, какая разница, чем ты будешь ею рулить, если её НУЖНО изменять.
Я предполагал, что этот класс используется другим образом. Теперь я понимаю, что я вообще ничего не понял. Ну тогда нафиг. Себе и тебе мозг заполоскал. Извини. :)
зацените жучок для прослушки
http://www.online-life.cc/1173-strela-2012.html
1 сезон 6 серия 25:35
зацените жучок для прослушки
http://www.online-life.cc/1173-strela-2012.html
1 сезон 6 серия 25:35
Весна, спамеры расцвели, вот нескушный сад, мля. Иногда по нескольку раз в день попадаются. Когда ж им жабу то разорвет. На необитаемый остров и никакого интернета!
Ага, чищу неустанно, особенно умиляет спам на польском языке (тексты, впрочем, не отличаются от русских/английских).
В аду у спаммеров отдельный большой котёл, и дрова под него подкладывают не черти, а прочие грешники ))).
зацените жучок для прослушки
http://www.online-life.cc/1173-strela-2012.html
1 сезон 6 серия 25:35
шутник посмотри сначала
зацените жучок для прослушки
http://www.online-life.cc/1173-strela-2012.html
1 сезон 6 серия 25:35
Не очень разглядел, конденсатор что ли в карман ему бросил? :)
Не очень разглядел, конденсатор что ли в карман ему бросил? :)
странно - раньше они литиевыми батарейками всех прослушивали
Ага, чищу неустанно, особенно умиляет спам на польском языке (тексты, впрочем, не отличаются от русских/английских).
В аду у спаммеров отдельный большой котёл, и дрова под него подкладывают не черти, а прочие грешники ))).
Что б их так дети кормили. :)
Не очень разглядел, конденсатор что ли в карман ему бросил? :)
ага))
зацените жучок для прослушки
http://www.online-life.cc/1173-strela-2012.html
1 сезон 6 серия 25:35
шутник посмотри сначала
Спасибо, разжевали-с )) Интеесно где они там нашли "раздетый" электролит )) или реквизиторы потрудились сняли термоусадочку ))))
Порубилли парубков. А чего там ниггеры среди мяса? совсем кусать нечего в незалэжной?
или только в Киеве и живут ?
Добрый день всем!
Коль для чайно-чайнутых тем нет, позвольте со своим наивом здесь к вам, эксперты, обратиться с горстью моих вопросов.
Конечно, если у кого найдется время и возможность - просветите, пожалуйста, буду признателен.
Собираю слайдер на основе рельсы и каретки HIWIN. Планирую его "обвесить" моторчиками и вдохновится созданием таймлапсов. Средний вес конструкции на рельсе(1метр) - около 1,5-2 кг предполагаю - каретка, голова под фотоаппарат сам фот + блок вращения по другой оси..
1. Как я понимаю - мне придется собрать два слайдера - под свои задачи. Один слайдер планирую использовать в видеорежиме - набирать репортажные фрагменты разных событий(свадьба, концерт) в движении камеры, которую планирую запускать в ритме "маятника" - вариант с концевиками, переключащими на обратный ход; скорость перемещения каретки 20-200 секунд за метр. Какие DC-движки есть для этих задач и какие к ним есть блоки управления (на алиэкспр или-или)?
2. Второй вариант слайдера - для таймлапсов (фото-режим) и как понимаю - здесь уже нужны шаговые движки. Один движок планирую на движение каретки по рельсе через привод на резьбовой рейке (грубо 200руб/метр - самое простое решение). Второй движок разместить на каретке в блоке для движения камеры по линии горизонта (тут я уже, наверное, через чур фантазирую - хотя бы по рельсе двигать для начала :) ) . Nema 17? Какой к нему нужен простейший драйвер/контроллер для движения по рельсе со скоростью 15-200минут/метр?
Еще попыта - я под другим именем(Sogdiec) нечаянно вновь зарегился.. уж извините..
Итак, я пока к чему пришел - для фото-таймлапсов надо бы собрать NEMA17+ ардуино и пр.
Коль решит кто ..снизойти - надеюсь, подскажете - где и каким "поездом" далее двигаться :)
Пока читаю, изучаю - как за-драйверить ардуино-плату - нашел здесь на сайте. Схемы подключения - https://robom.ru/blog/mehanica/shagovyj-dvigatel-i-ego-drajver.html
И пока два вопроса остается:
1. Как синхронизировать АРдуино с моим фотоаппаратом gh3? В фоте есть режим интервальной съемки. И чтоб создать синхрон - надо либо комммуницировать фот с Ардуино, либо дисплей в схему ввести.. В общем - пока запутался..
2. Писать скетчи - не мое.. Наверняка есть простые и готовые скетчи, которые можно использовать для движения каретки по рельсе в синхроне с фотографирующим фотоаппаратом..?