Помогите новичку...

KiberMonstr
KiberMonstr аватар
Offline
Зарегистрирован: 29.05.2018
Приветствую.
 
Нужна помощь в реализации следующей задачи(точнее малой её части):
 
     Есть 3 кнопки:
 
- кнопка_1   (начинает и завершает выполнение всех работ на контроллере)
 
- кнопка_2   (начинает и завершает выполнение цикла)
 
- кнопка_3   (каждое нажатие это +1 в счете нажатий)(кнопка для примера, в реале будет датчик наличия металла)
 
    
     Алгоритм следующий:
 
кнопка_1 нажата и удерживается = начато выполнение всего алгоритма.
кнопка_2 нажата и удерживается = начался цикл счета нажатий с кнопка_3.
кнопка_3 каждое нажатие это +1 к заранее установленному значению(или обратный отсчет от установленного значения).
кнопка_2 отпущена = цикл завершился и должел произойти подсчет нажатий с кнопка_3.(Если колличество нажатий не равно установленному значению, то ... ).
кнопка_1 отпущена = все работы завершены.
 
 
С каждым нажатием кнопка_1 все работы на контроллере начинаются с чистого листа(ресет не подходит, скорость запуска не достаточна).
 
Вопрос по большей части в том, как произвести подсчет нажатий с кнопка_3, ПОСЛЕ отжатия кнопка_2, который вёлся во время удержания кнопка_2.
 
Вроде пока всё.
b707
Offline
Зарегистрирован: 26.05.2017

KiberMonstr пишет:

Вроде пока всё.

курсовая? - на лекции надо было ходить.

Теперь вали в раздел "Ищу исполнителя"

KiberMonstr
KiberMonstr аватар
Offline
Зарегистрирован: 29.05.2018

Зачем же хамить? И это не курсовая, а собственный проект из которого взята лишь малая часть.

Если так нужно, объясню, что за проект.

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

 

ВН
Offline
Зарегистрирован: 25.02.2016

KiberMonstr пишет:
И это не курсовая, а собственный проект из которого взята лишь малая часть.

так покажите уже написанный код хотя бы под  описанный выше  алгоритм

ven-til
Offline
Зарегистрирован: 13.02.2018

Решили автоматизировать производство и уволить человека который выполнял весь алгоритм вручную? На сэкономленые деньги легко найти программиста в раздел "Ищу исполнителя".

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

KiberMonstr пишет:
Это система контроля за состоянием нумерационных голов на нумераторе. Часто ломаются пружины и выходит много брака. Идея проста - когда ломается пружина, датчик видит на одну голову меньше и машина останавливается (число голов меняется в зависимости от заказа).
  В топике темы три кнопки, здесь пружины и датчик.  А потом что еще мы у Вас узнаем неожиданого. 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Нумератор , осмелюсь предположить - элемент промышленной системы?

то есть данным проЭктом Вы решаете коммерческую задачу.

 Решайте. Это Ваша стезя. Скорее всего Вы занее получаете деньги , или она увеличивает эффективность Ваших активов.

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

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

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

inspiritus
Offline
Зарегистрирован: 17.12.2012

Он просто хочет "во дворце пионэров", "забезденег", решить промышленную задачу. Этто как у Гиляровского : " за грош пятаков" :)

он не понимает всего спектра проблем, отличающих пионЭрский от промышленного проекта.б

И исчО он не понимает, что тЭрмин "скэтчь" это практически непристойность . 

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

Который хочет получить это все, и исчо чтобывжопупоцеловали за пару тыр.

и вот поэтому разговор исполнителя с заказчиком начинается только тогда, когда заказчик не просто понимает, а осознаёт саЫым своим естеством, что и почему именно ему нужно, и , что он практически уже ,,, короче пушной зверек запрыгнул под самые его стальные менеджерские яйца и вольфрамовые клыки зверька почти сомкнулись вокруг.... и ничуть не раннее этого момента.

кароче мАркетинг.

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

KiberMonstr пишет:

Приветствую.
 
Нужна помощь в реализации следующей задачи(точнее малой её части):
 
     Есть 3 кнопки:
 
- кнопка_1   (начинает и завершает выполнение всех работ на контроллере)
 
- кнопка_2   (начинает и завершает выполнение цикла)
 
- кнопка_3   (каждое нажатие это +1 в счете нажатий)(кнопка для примера, в реале будет датчик наличия металла)
 
    
     Алгоритм следующий:
 
кнопка_1 нажата и удерживается = начато выполнение всего алгоритма.
кнопка_2 нажата и удерживается = начался цикл счета нажатий с кнопка_3.
кнопка_3 каждое нажатие это +1 к заранее установленному значению(или обратный отсчет от установленного значения).
кнопка_2 отпущена = цикл завершился и должел произойти подсчет нажатий с кнопка_3.(Если колличество нажатий не равно установленному значению, то ... ).
кнопка_1 отпущена = все работы завершены.
 
 
С каждым нажатием кнопка_1 все работы на контроллере начинаются с чистого листа(ресет не подходит, скорость запуска не достаточна).
 
Вопрос по большей части в том, как произвести подсчет нажатий с кнопка_3, ПОСЛЕ отжатия кнопка_2, который вёлся во время удержания кнопка_2.
 
Вроде пока всё.

Примерно так

bool f_kn3;
byte kol_push;
byte summa;

if (digitalRead(kn1)){
  if (digitalRead(kn2)){
    if (digitalRead(kn3)){
      if (!f_kn3)
      {
        f_kn3 = 1;
        kol_push++; //kol_push--;
      }
    }
    else f_kn3 = 0;    
  }
  else summa = kol_push;
}
else {
summa = 0;
kol_push = 0;
f_kn3 =0;
}

 

KiberMonstr
KiberMonstr аватар
Offline
Зарегистрирован: 29.05.2018

vosara, огромная Вам благодарность за безкорыстную помощь. Я и не думал, что код будет таким компактным. Спасибо.

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Я надеюсь что Вы понимаете что это не ввесь код а просто алгоритм Вашей задачи и его нужно правильно вставить в код

KiberMonstr
KiberMonstr аватар
Offline
Зарегистрирован: 29.05.2018

Конечно, просто никак не мог понять, с какой стороны подойти, принцип не был понятен.. теперь всё встало на свои места!

inspiritus
Offline
Зарегистрирован: 17.12.2012

И еще один novichek , понял, что можно решать коммерческие задачи забесплатна, ибо не оскудеет земля русская доброхотами.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

KiberMonstr пишет:

Вопрос по большей части в том, как произвести подсчет нажатий с кнопка_3, ПОСЛЕ отжатия кнопка_2, который вёлся во время удержания кнопка_2.
Выделяете набор состояний кнопки_2, которые Вам интересны, напимер:
1. Кнопка отпущена - до первого нажатия на кнопку.
2. Кнопка нажата (удерживается).
3. Кнопка была нажата и после этого отпущена.
4. ...
Определяете переменную, которая описывает этот набор состояний.
Определяете условия, при которых эта переменная переходит из одного состояния в другое.
Принимаете решение, в каких из состояний должен быть подсчет нажатий на кнопку_3, а в каких - нет.
KiberMonstr
KiberMonstr аватар
Offline
Зарегистрирован: 29.05.2018

andriano, Спасибо, всё понятно.