Сброс времени во время работы
- Войдите на сайт для отправки комментариев
Пт, 05/08/2016 - 12:13
Господа.подскажите пожалуйста как сделать так что бы когда работает отсчет времени введенный с тача , его можно было принудительно сбросить на 0 кнопкой тача.в коде видно что попытался воткнуть в цикл отсчета кнопку сброса , но она не работает (даже не нажимается, по истечение времение если нажать на кнопку сброса , начинает отсчет 20 секунд , как будто он ее не отличает от кнопки 20 секунд . как бы по другому сделать сброс нажатием ? скобки начала и конца могут не совпадать , так как просто выдернул часть кода :)
while (true)
{
if (myTouch.dataAvailable())
{
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
if ((y>=10) && (y<=100)) //
{
if ((x>=10) && (x<=100)) //
{
waitForIt(10, 10, 100, 100);
digitalWrite(8, HIGH);
l=20;
for (t=0;t<l;)
{
l=l-1;
myGLCD.setFont(SevenSegNumFont);
myGLCD.setBackColor(0, 0,0);
myGLCD.setColor(255, 0, 0);
myGLCD.printNumI (l, 120, 116);
delay(1000);
myGLCD.setColor(0, 0, 0);
myGLCD.fillRoundRect (111, 111, 198, 168);
if ((y>=110) && (y<=170))
{
if ((x>=10) && (x<=100)) //
{
waitForIt(10, 110, 100, 170);
l=0;
}
}
}
digitalWrite(8,LOW);
}
}
if ((x>=110) && (x<=200)) //
{
waitForIt(110, 100, 200, 100);
digitalWrite(8, HIGH);
l=35;
for (t=0;t<l;)
{
l=l-1;
myGLCD.setFont(SevenSegNumFont);
myGLCD.setBackColor(0, 0,0);
myGLCD.setColor(255, 0, 0);
myGLCD.printNumI (l, 120, 116);
delay(1000);
myGLCD.setColor(0, 0, 0);
myGLCD.fillRoundRect (111, 111, 198, 168);
}
digitalWrite(8,LOW);
}
if ((x>=210) && (x<=300)) //
{
waitForIt(210, 10, 300, 100);
digitalWrite(8, HIGH);
l=50;
for (t=0;t<l;)
{
l=l-1;
myGLCD.setFont(SevenSegNumFont);
myGLCD.setBackColor(0, 0,0);
myGLCD.setColor(255, 0, 0);
myGLCD.printNumI (l, 120, 116);
delay(1000);
myGLCD.setColor(0, 0, 0);
myGLCD.fillRoundRect (111, 111, 198, 168);
}
digitalWrite(8,LOW);
}
}
if ((y>=180) && (y<=227))
{
if ((x>=10) && (x<=300))
{
waitForIt(10, 180, 300, 227);
str1();
}
}
}
1. Код вставляется вот так - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
2. У Вас в трёх местах стоят "delay(1000);". Вы всерьёз надеетесь, что при этом ещё и кнопки будут работать?
delay можно использовать, когда точно известно, что контроллеру в это время нечем заняться. Если же он должен контролировать нажатие кнопки, то извините, с delay это несовместимо. Убирайте delay или забудьте про обработку кнопок.
3 раза потому что 3 разные кнопки с 3 разными значениями времени , они же не одновременно все работают а по выбору. А как же тогда запилить секундный отсчет без delay ? Какие функции использовать ?
Пока выполняется delay() - всё остальное ждёт, никакие кнопки не обрабатываются.
А как же тогда запилить секундный отсчет без delay ? Какие функции использовать ?
millis()
http://arduino.ru/tutorials/BlinkWithoutDelay
http://robocraft.ru/blog/arduino/385.html
Не по теме вопроса.
Как при соблюдении условия
может выполниться условие?
К тому же, вместо того, что бы издеваться над циклом for(), не логичнее использовать while()?
Как при соблюдении условия
может выполниться условие?
К тому же, вместо того, что бы издеваться над циклом for(), не логичнее использовать while()?
оп не туда посмотрел , оно как бы внутри цикла уже задается , тоесть первое нажатие и запустился цикл , а вторым нажатием я типа проверяю если нажата другая область то ...
что первое пришло на ум то и воспроизвел )) как программа будет написана до конца тогда можно и подумать как ее оптимизаровать если будет необходимость ,а так первозадача отключение )
А секундные и всяуие прочие отсчёты делаются 100500 способами, один из них - с ипользованием функции millis, как Вам уже сказали.
что первое пришло на ум то и воспроизвел )) как программа будет написана до конца тогда можно и подумать как ее оптимизаровать если будет необходимость ,а так первозадача отключение )
Так может сначала напишете аккуратно (как можете), а потом уж, если не получится, за советом обратитесь? А то люди время тратят, смотрят. замечания пишут, а это, оказывается, просто "первое пришло на ум". Вы уверены, что людям больше заняться нечем, кроме как иучать особенности логистики Вашей головы?
[/quote]
Так может сначала напишете аккуратно (как можете), а потом уж, если не получится, за советом обратитесь? А то люди время тратят, смотрят. замечания пишут, а это, оказывается, просто "первое пришло на ум". Вы уверены, что людям больше заняться нечем, кроме как иучать особенности логистики Вашей головы?
[/quote]
еслиб я знал что delay блокирует работу( в описание функций которое я нашел про это умолчали), я бы не обратился за помощью , еслиб бы на форуме был поиск я бы тоже скорей всего нашел что искал , ну извините что я думаю не как вы и использую for заместо while , мой уровень корень даже не пень(все сводится к университетскому курсу информатики) и глупо меня обвинять в том что я с самого начала не начал писать программу как профи !!
все когда то начинали как умеют , в этом нет ни чего постыдного , и за помощью я обращаюсь когда захожу в тупик а не просто так что бы кто то за меня что то написал . Впринцепи первый ответ что delay блокирует работу почти всего я усвоил, дальше уже другой вопрос как его обходить на который любезно тут же дали ответ.
P.S. Всем спасибо я получил ответ и даже больше (код для обхода ). А Вам ЕвгенийП прежде чем обвинять стоит дождаться фразы "может кто может программу написать" или что то подобное
еслиб я знал что delay блокирует работу( в описание функций которое я нашел про это умолчали)
Не надо самооправдываться, плз - вы просто не хотели увидеть то, что написано вот прямо на заборе, https://www.arduino.cc/en/Reference/Delay :
Pauses the program for the amount of time
Щас уже увидел , я просто качал сразу мануал с описаниями функций переменных и все что надо знать тем кто только скачал программу и там много полезного но и недосказки есть. Все закрыли тему , добрые люди помогли,где то сам недосмотрел,тоже виноват что доверяю только первому что увидел.
еслиб я знал что delay ... глупо меня обвинять в том что я с самого начала не начал писать программу как профи !!
Не надо лохматить бабушку, в этом Вас никто не обвиняет. Вы сами написали "оп не туда посмотрел ... что первое пришло на ум то и воспроизвел" и это было вовсе не про delay.
Вас вообще никто и ни в чём не обвиняет, Вам советуют прежде чем дёргать людей посмотреть и подумать самому, а не устраивать цирк с "первым, что пришло в голову".
А про делэй, я Вам кажется, первым написал.
Не надо лохматить бабушку, в этом Вас никто не обвиняет. Вы сами написали "оп не туда посмотрел ... что первое пришло на ум то и воспроизвел" и это было вовсе не про delay.
Вас вообще никто и ни в чём не обвиняет, Вам советуют прежде чем дёргать людей посмотреть и подумать самому, а не устраивать цирк с "первым, что пришло в голову".
А про делэй, я Вам кажется, первым написал.
Спасибо Гуру !! где Вам можно плюсик поставить ?))) я так и сделал подумал, что получилось написать то и написал , а дальше тупик и помощь знатоков )) Вообщем программу написал, громозко , не профиссионально , но зато работает как планировалось.