Переход в другой цикл по нажатию кнопки
- Войдите на сайт для отправки комментариев
Ср, 15/07/2015 - 16:40
Добрый день, помогите с таким вопросом: есть несколько циклов, часть идет по истечению времени атоматически, а часть должна переходить на следующий цикл по нажатию кнопки.
...... case 11: // нагрев if (T<T6) {port1_stat=1;} else { port1_stat=0; process++; procStTime=timer; } break; case 12: // временя выдерки if (procStTime+P6*60 < timer) {process++;} else { port1_stat=0; if (T<T6) {port1_stat=1;} } break; case 13: // варка if (T<T7) {port1_stat=1;} else { port1_stat=0; process++; procStTime=timer; } break; case 14://пауза варки. тут нужно перейти к следующей варки по нажатию кнопки if (procStTime+P7*60 < timer) {process++;} else { port1_stat=0; if (T<T7) {port1_stat=1;} } break; case 15: // варка if (T<T8) {port1_stat=1;} else { port1_stat=0; process++; procStTime=timer; } break; .....
изначальный нагрев и старт по нажатию реализавал вот так
case 1: // нагрев до заданной температуры if (T<T1) {port1_stat=1;} else port1_stat=0; if (butPush == 3) process++; procStTime=timer;
и вывод сообщения
.... case 1: { lcd.print("^"); lcd.print(T1); lcd.setCursor(6,0); if (port1_stat){ lcd.print("ждите, нагрев");} else {lcd.setCursor(0,0); tone(buzzer, 500); delay(500); noTone(buzzer); lcd.print(" нажмите "ок" "); } break; }
Вы не знаете как и почему работает Ваш скетч? Или Вы что-то сделали и оно работает не так?
Скетч работает, но сделал в автоматическом режиме. т.е. поднимет температуру и держит паузу, после истечения времени переходит к ледующему шагу. Понадобилось сделать увеличение температуры на следующем шаге по истечению времени на предидущем по нажатию кнопки.
читайте кнопку не в case , делайте инкремент переменной при нажатии и переходите по значению переменной (если по кругу). можно крутится в case и менять переменную, но она должна быть глобальной (while)
те. нагрелся теплоноситель до 80 градусов и прошло заданное время. и продолжение цикла (нагрев и следующая пауза) произойдет только после нажатия на кнопку.
Скетч работает, но сделал в автоматическом режиме. т.е. поднимет температуру и держит паузу, после истечения времени переходит к ледующему шагу. Понадобилось сделать увеличение температуры на следующем шаге по истечению времени на предидущем по нажатию кнопки.
бррр, не понял и/или запутался :)... сколько экранов (вы же где-то смотрите эти значения)? проще переключаться между экранами и менять значение соответствующих переменных (глобальных) т.е. можно выполнять одно, а смотреть другое и менять другую переменную.
Вы не указали, с каким интервалом у вас обрабатываются здесь приведенные Case-s. Если эти интервалы короткие, то можете просто так:
То есть если еще действует таймер и не нажата кнопка некоторая... то идет отсчет таймера до конца, иначе обрабатываем else.
читайте кнопку не в case , делайте инкремент переменной при нажатии и переходите по значению переменной (если по кругу). можно крутится в case и менять переменную, но она должна быть глобальной (while)
Может виной всему простуда, но где Вы увидели чтение кнопки к кейсе? зачем инкремент и причем тут while?!?!
те. нагрелся теплоноситель до 80 градусов и прошло заданное время. и продолжение цикла (нагрев и следующая пауза) произойдет только после нажатия на кнопку.
while не нажали на кнопку, ничего не происходит :))))
читайте кнопку не в case , делайте инкремент переменной при нажатии и переходите по значению переменной (если по кругу). можно крутится в case и менять переменную, но она должна быть глобальной (while)
Может виной всему простуда, но где Вы увидели чтение кнопки к кейсе? зачем инкремент и причем тут while?!?!
криво прочитал :)
зы. я точно простыл... кашель адский :(
криво прочитал :)
зы. я точно простыл... кашель адский :(
Я про свою простуду писал )))))
криво прочитал :)
зы. я точно простыл... кашель адский :(
Я про свою простуду писал )))))
Вы в какой палате? может в гости зайду )))))
В шестой. С Наполеоном и Бонопартом.
В шестой. С Наполеоном и Бонопартом.
ты это хорош, гостей то зазывать. самим мало.
Всем спасибо, глюк был в принудительном ограничении температуры т.е. прескакивал на следующий шаг при достижении определенной температуры, исправил все пошло через вот такой вид.