Как правильно считать время удержания контакта?

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

Всем привет! Заморочился с такой штукой как срабатывание от наводок. Подключен датчик и время от времени на нем нет сигнала, а ардуина ловит наводку на его ноге. Решил обойти это временем опроса сигнала с датчика. Вот код который придумал:


unsigned long timeD7_on = 200;
unsigned long timestartD7 = 0;
unsigned long timestopD7 = 0;
bool stD7=false;
bool D7_ON=false; // полезное действие кнопки

...
loop() {

if ((digitalRead(5)==HIGH) && (st==false)) {
  stD7=true; // включили счетчик
  timestartD7=millis(); //  запоминаем когда было первое нажатие
}

if (stD7==true) {
  if (digitalRead(5)==HIGH) { // пока есть сигнал от кнопки 
   timestopD7=millis(); // записываем текущее значение таймера    
  }else {
    D7_ON=false;
    stD7=false; // отключаем счетчик
    timestopD7=millis();
    timestartD7=millis();
  }  
}

if (stD7==true) && (timestopD7-timestartD7==timeD7_on) {
   D7_ON=true; // полезное действие некий флаг
  stD7=false;
  timestopD7=millis();
  timestartD7=millis();  
}

}

Как считаете по работоспособности этот кусок удачный?

b707
Offline
Зарегистрирован: 26.05.2017

строгое равенство в строке 26(второе условие) - это неудачный подход. Поставьте вместо него "больше-равно"

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

Ну да, есть  в этом истина )) А в целом оптимизировать код не получится? Допустим что у меня 4 датчика - это на каждого заводить свои переменные получается?

b707
Offline
Зарегистрирован: 26.05.2017

ради чего оптимизировать? - уменьшение размера кода, расхода ОЗУ. ускорение работы?

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

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Dr_grizzly пишет:

Всем привет! Заморочился с такой штукой как срабатывание от наводок. Подключен датчик и время от времени на нем нет сигнала, а ардуина ловит наводку на его ноге. Решил обойти это временем опроса сигнала с датчика. 

Что за датчик такой чудесный? Подтяжка к питанию/земле от помех с эфира, говорят, с этого воскресенья перестала помогать - это на самом деле так, не знаете?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Dr_grizzly пишет:

Ну да, есть  в этом истина )) А в целом оптимизировать код не получится? Допустим что у меня 4 датчика - это на каждого заводить свои переменные получается?

Мда. Похоже для вас есть хорошее известие. Людям которые задолбались придумывать название перемннных на каждый датчик и придумали классы. Так что почитайте "Библию " от Страуструпа.

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

qwone пишет:

 Мда. Похоже для вас есть хорошее известие. Людям которые задолбались придумывать название перемннных на каждый датчик и придумали классы. Так что почитайте "Библию " от Страуструпа.

Вы с таким усердием, уважаемый qwone, настоятельно рекомендуете всем использовать ООП, что возникает полное ощущение, что вы сами не до конца понимаете его назначение.
Вы точно знаете, что кроме инкапсуляции, которую вы активно используете в своих примерах классов, есть еще два столпа ООП - наследование и полиморфизм?
Вы понимаете, что смешивание функционального программирования и ООП, что вы рекомендуете и используете в своих примерах - не есть хороший тон программирования?
В конечном счете, практически во всех хороших книгах по С++ и ООП так или иначе прослеживается, что "ООП — это и ОО программирование и проектирование. Одно без другого бессмысленно чуть более чем полностью."

Человеку достаточно освоить массивы, идеально - структуры и массивы структур и тогда жизнь его заблестит новыми красками. ООП ему совершенно не обязательно.

Logik
Offline
Зарегистрирован: 05.08.2014

///Вы точно знаете, что кроме инкапсуляции, которую вы активно используете в своих примерах классов, есть еще два столпа ООП - наследование и полиморфизм?

Знает он. Точно знает, я ему уже както писал что без наследования и полиморфизма неинтересно. И пример писал с иерархией классов. Так что будте уверены.

///Вы понимаете, что смешивание функционального программирования и ООП, что вы рекомендуете и используете в своих примерах - не есть хороший тон программирования?

Вот тут я бы не соглашался. По краайней мере такое смешивание - точно не есть плохой тон. Все от задачи, где нужно одно, где другое а где и оба подхода. Кстати виринг - тому пример.

// ОО программирование и проектирование. Одно без другого бессмысленно чуть более чем полностью.

))) разслабтесь, форум любительский, от слов проектирование и моделирование у большинства ушки болят, а у буйных крышу сносит. А так вобще оно конечно.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Sr.FatCat пишет:
Вы с таким усердием, уважаемый qwone, настоятельно рекомендуете всем использовать ООП, что возникает полное ощущение, что вы сами не до конца понимаете его назначение.
Похоже вы не различаете Си++ и OOП. Это разные вещи. Можно создавать классы без Си++ , можно делать ООП без Си++. Но удобнее ООП делать все же делать через классы. Но там где есть классы не значит там есть ООП.

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

DIYMan пишет:

Dr_grizzly пишет:

Всем привет! Заморочился с такой штукой как срабатывание от наводок. Подключен датчик и время от времени на нем нет сигнала, а ардуина ловит наводку на его ноге. Решил обойти это временем опроса сигнала с датчика. 

Что за датчик такой чудесный? Подтяжка к питанию/земле от помех с эфира, говорят, с этого воскресенья перестала помогать - это на самом деле так, не знаете?

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

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Dr_grizzly пишет:

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

Провод экранированный?

Dr_grizzly
Dr_grizzly аватар
Offline
Зарегистрирован: 07.12.2015

DIYMan пишет:

Провод экранированный?

Не, от датчика родные провода идут не экранированные, они собираются в распред.коробке а от туда 5-и жильный экранированный идет до ардуины. Каждая жила - датчик

vvadim
Offline
Зарегистрирован: 23.05.2012

Dr_grizzly пишет:

Не, от датчика родные провода идут не экранированные, они собираются в распред.коробке а от туда 5-и жильный экранированный идет до ардуины. Каждая жила - датчик

[/quote]

и при чём здесь программа, если у вас чисто аппаратная борьба с помехами пока не выиграна ?

от самого датчика до дуни всё в экране, экран заземлён.

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

Logik пишет:
Знает он. Точно знает, я ему уже както писал что без наследования и полиморфизма неинтересно. И пример писал с иерархией классов. Так что будте уверены.

Что Вы писали - я видел (в Вашей квалификации у меня и тени сомнения нет), то что он знает у меня сомнений более чем достаточно.

Logik пишет:
///Вы понимаете, что смешивание функционального программирования и ООП, что вы рекомендуете и используете в своих примерах - не есть хороший тон программирования?

Вот тут я бы не соглашался. По краайней мере такое смешивание - точно не есть плохой тон. Все от задачи, где нужно одно, где другое а где и оба подхода. Кстати виринг - тому пример.

Вопрос довольно филосовский. На мой взгляд Java и C# своим появлением полностью подтверждают мою точку зрения. Но спорить, точно не буду. Примеру вайринга противопоставлю пример MBED

Logik пишет:
// ОО программирование и проектирование. Одно без другого бессмысленно чуть более чем полностью.

))) разслабтесь, форум любительский, от слов проектирование и моделирование у большинства ушки болят, а у буйных крышу сносит. А так вобще оно конечно.


А я и не напрягался )))) Более того, я даже не сильно стараюсь понять логику ответов в этом форуме. По мне так ее просто нет. То человека с нормальным вопросом и знанием азов втаптывают в говно и отсылают к "ищу исполнителя", то полному аутисту с незнанием программирования даже на уровне школьной тройки с минусом начинают помогать всем кагалом.

Но даже на этом уровне форума. Отсылание новичков, которые не знают, что такое массивы и циклы к классам - попахивает дебелизмом недосигаемого уровня. Хотя, конечно, зря я смолчать не смог. Каюсь, больше не буду. Пусть все развлекаются как хотят.
 

b707
Offline
Зарегистрирован: 26.05.2017

Sr.FatCat пишет:

 Более того, я даже не сильно стараюсь понять логику ответов в этом форуме. По мне так ее просто нет. То человека с нормальным вопросом и знанием азов втаптывают в говно и отсылают к "ищу исполнителя", то полному аутисту с незнанием программирования даже на уровне школьной тройки с минусом начинают помогать всем кагалом.
 

в основном это зависит от поведения самого новичка. Если уметь общаться и слегка подыгрывать отвечающему - можно даже самых суровых "гуру" развести на решение своей проблемы...

Кстати. я все время вижу какие-то упоминания "программирования в школьной программе". Спросил у дочери- одиннадцатиклассницы - у них никакого программирования нет и не было. Это какие-то спец-мат-школы имеются в виду?

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

qwone пишет:
Похоже вы не различаете Си++ и OOП. Это разные вещи. Можно создавать классы без Си++ , можно делать ООП без Си++. Но удобнее ООП делать все же делать через классы. Но там где есть классы не значит там есть ООП.


Строго говоря, вопрос действительно не простой. Говорят даже Алан Кей, когда придумал термин ООП, говорил, что он точно не имел ввиду то, что там у Страуструпа получилось. Хотя, думаю, брешут.
Если вы говорите о классах, то это точно С++. В голом С можно накостылить объекты и даже получить с миллионом оговорок и головной болью наследование и полиморфизм, но классы как термин - это С++.
По любому, отсылание людей с познаниями в программировании ниже массивов, структур и циклов к классам, выглядит или как идиотизм или как извращенное желание потешить свое эго у человека по диагонали прочитавшего Стауструпа.
Извините, если я ошибаюсь, но выглядит со стороны - именно так.

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

b707 пишет:

Кстати. я все время вижу какие-то упоминания "программирования в школьной программе". Спросил у дочери- одиннадцатиклассницы - у них никакого программирования нет и не было. Это какие-то спец-мат-школы имеются в виду?


Информатика в обязательных предметах пока вроде числится. Программа информатики, вероятно, отличается в гуманитарных лицеях от физико-математических колледжей, но основф алгоритмизации и программирования, пусть в разных объемах, но должны быть. Если их нет, то думаю, вопросы к руководству учебного заведения должны возникнуть.
Сын, действительно, учился в физ-мат, но сейчас спросил у жены - зауча общеобразовательной школы без всяких уклонов, говорит - факультативно с 1 (!!!!) го класса. Обязательно с 4 или 5-го. Основы программирования и алгоритмизации, пока программу не меняли,  с 7-го вроде.

b707
Offline
Зарегистрирован: 26.05.2017

Sr.FatCat пишет:

Информатика в обязательных предметах пока вроде числится.

Информатика в школьной программе к программированию, имхо, не имеет ровно никакого отношения. Большинство учителей. преподающих т.н. "информатику", о реальном программировании знают примерно столько же, как местые "новечки", что уж говорить о детях.

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

b707 пишет:

в основном это зависит от поведения самого новичка. Если уметь общаться и слегка подыгрывать отвечающему - можно даже самых суровых "гуру" развести на решение своей проблемы...


Ну тогда это не технический форум, а сборище неуравновешанных невротиков DDDDDDD

b707
Offline
Зарегистрирован: 26.05.2017

Sr.FatCat пишет:

Ну тогда это не технический форум, а сборище неуравновешанных невротиков DDDDDDD

Это нормально. Это ж обратная зависимость  - чем более сложной интеллектуальной деятельностью человек занят, тем хуже у него с душевным равновесием... И наоборот - "меньше знаешь - крепче спишь".

 

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

b707 пишет:

Информатика в школьной программе к программированию, имхо, не имеет ровно никакого отношения. Большинство учителей. преподающих т.н. "информатику", о реальном программировании знают примерно столько же, как местые "новечки", что уж говорить о детях.

Зачем имховать, когда можно открыть учебный план и убедиться, что все там есть. О качестве обучения и пр. распространяться смысла нет.

vvadim
Offline
Зарегистрирован: 23.05.2012

харе трындеть, кнопками кто то будет заниматься ???????????

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Sr.FatCat пишет:
Зачем имховать, когда можно открыть учебный план и убедиться, что все там есть. О качестве обучения и пр. распространяться смысла нет.

Вот я погляжу, что вы пипец какой умный. Так почему вам не занятся помощью новичкам на этом форуме. Если желаете , то даже в разделе программирования. Вот тогда и пощупаете конкретный контингент новичков.Нащупаете лично свой подход к таким ... дарованиям. А на счет учебного плана. Так учителя учат только тех, кто хочет учится. А для всяких коммисий у учителя есть учебный план. И дополнительно заниматься с каждым "дарованием" индивидуально, банально нет сил и времени.  Но лично вы можете начать работу "учителя программирования" на этом форуме, что лично написаным учебным планом, что без него.

vvadim пишет:
харе трындеть, кнопками кто то будет заниматься ???????????
Разумеется ТС. Потому что про кнопки в разных вариациях было говорено, переговорено на данном форуме 100500 раз.

vvadim
Offline
Зарегистрирован: 23.05.2012

а тс нифига читать не хочет))))

ему конкретно кто то должен всё расписать...

Sr.FatCat
Offline
Зарегистрирован: 19.02.2016

qwone пишет:

Вот я погляжу, что вы пипец какой умный. Так почему вам не занятся помощью новичкам на этом форуме. Если желаете , то даже в разделе программирования. Вот тогда и пощупаете конкретный контингент новичков.Нащупаете лично свой подход к таким ... дарованиям.

Так я и попытался что-то сделать, но тут вы влезли с классами. Но в целом, посыл понятен. Как говорится, ухожу мариванна, ухожу, ухожу...

На самом деле есть прекрасный вариант, кажется на stm32duino: хочешь зарегестрироваться - веллкам свои скетчи модераторам. Дебилов и олигофренов от программирования, ровно как и незамутненных девиц отсекает отлично. Остальных заставляет покурить мануалы хотя бы до уровня бигинерс++. Но здесь о таком только мечтать приходится.

qwone пишет:

А на счет учебного плана. Так учителя учат только тех, кто хочет учится. А для всяких коммисий у учителя есть учебный план. И дополнительно заниматься с каждым "дарованием" индивидуально, банально нет сил и времени.  Но лично вы можете начать работу "учителя программирования" на этом форуме, что лично написаным учебным планом, что без него.

Мне это зачем написали? Я это - как раз отлично понимаю. Это у b707 в школе на информатике программирования нет.