Таймер-детонатор
- Войдите на сайт для отправки комментариев
Здравствуйте, помогите, пожалуйста, с заданием.
RGB диоды последовательно мигают. При вводе кода в Com порт мы переводим детонатор в активное состояние. Программа запрашивает установить время срабатывания (от 1 до 60 сек). Если ввели неверный код действия не происходит. Задаем необходимое время в Com порт. Программа начинает отчет (раз в секунду в Com порт выводиться оставшееся время, B светодиод мигает раз в секунду). По истечении заданного времени загорается R светодиод – детонация произошла. В процессе обратного отчета нужно предусмотреть ввод кода отмены. В таком случае обратный отчет прекращается, загорается G светодиод.
Вот код, который получился, но не получается составить код без delay, а также не работает код отмены.
int outputPin = 11; //здесь храним номер контакта int val; //здесь будет храниться принятый символ volatile unsigned long int timerLED1; void setup() { //pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); //установка порта на скорость 9600 бит/сек pinMode(outputPin, OUTPUT); //устанавливаем 13 контакт в режим вывода } void loop() { //if (Serial.available()) { //если есть принятый символ, val = Serial.read(); // то читаем его и сохраняем в val if (val == 'L') { // если принят симовол 'L', digitalWrite(12,HIGH); delay(60000); // то выключаем светодиод } if (val == 'H') { // если принят симовол 'H',... Serial.println("60 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("59 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("58 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("57 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("56 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("55 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("54 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("53 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("52 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("51 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("50 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("49 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("48 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("47 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("46 sec");digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("45 sec");digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("44 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("43 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("42 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("41 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("40 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("39 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("38 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("37 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("36 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("35 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("34 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("33 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("32 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("31 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("30 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("29 sec");digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("28 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("27 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("26 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("25 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("24 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("23 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("22 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("21 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("20 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("19 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("18 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("17 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("16 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("15 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("14 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("13 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("12 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("11 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("10 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("9 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("8 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("7 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("6 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("5 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("4 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("3 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("2 sec"); digitalWrite(outputPin, HIGH);// то включаем светодиод delay(500); digitalWrite(outputPin, LOW); delay(500); Serial.println("1 sec"); digitalWrite(13, HIGH); delay(60000); } { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second digitalWrite(12, HIGH); delay(1000); digitalWrite(12, LOW); delay(1000); digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); delay(1000); } }
но не получается составить код без delay
В задании нет требования, чтобы код был без delay.
Какие ещё нюансы задания Вы от нас скрыли?
в принципе, можно и с delay, но как мне сказал преподаватель, что код отмены не работает, потому что есть задержка по времени (delay)
Куда органы смотрят? На форумах бомбы строят и ничего. Бежать надо от греха подальше.
Какая жуткая жуть. Оля, если вас преподаватель научил так программировать, он обязан сделать себе харакири.
Оля, тебя пасодють. И твоего преподавателя тоже.
Оля, тебя пасодють. И твоего преподавателя тоже.
неееее, блондинок не содют )))
Да, ладно! Усіх саджають!
Вот код, который НЕ получился
:) Вот этого точно нет:
Программа запрашивает установить время срабатывания (от 1 до 60 сек).
а вообще с 26 по 320 строку всё удалить и вставить десяток строк моргания светодиодом на таймере, тогда чтение порта освободится
Оля, проще в разделе "Ищу исполнителя" поискать кто напишет вам код.
думаю за пару тыщ сделают.
не забудьте почту свою указать.
не забудьте почту свою указать.
ага, чтоб те кто будет сажать, долго не парились с поиском.)))
Оля - вам здесь не помогут. И я не помогу - нахрена нам плохие (здесь было другое слово) программисты? Но общую идею подскажу - каждую сепкунду у Вас происходит что-то (типа лед какой-то). Далее - убираем delay() в пользу millis().
Я учился в МИФИ и наши девченки с этого поняли-бы...
Я учился в МИФИ и наши девченки с этого поняли-бы...
"Я академиев не кончал, но высшее образование вам даду".
"Я академиев не кончал, но высшее образование вам даду".
Гы )))
Оля, проще в разделе "Ищу исполнителя" поискать кто напишет вам код.
думаю за пару тыщ сделают.
не забудьте почту свою указать.
да ну пару тыщ, Скиф рублей за 300 сделает )))
Оля - вам здесь не помогут. И я не помогу - нахрена нам плохие (здесь было другое слово) программисты? Но общую идею подскажу - каждую сепкунду у Вас происходит что-то (типа лед какой-то). Далее - убираем delay() в пользу millis().
Я учился в МИФИ и наши девченки с этого поняли-бы...
не , Вы за всех то не подписывайтесь, девочки они исполнительные, а Оля вдобавок упорная, 300 строк написать - здесь вам не тут, так что, я лично помогу, тем более кода там строк 30-50
не , Вы за всех то не подписывайтесь, девочки они исполнительные, а Оля вдобавок упорная, 300 строк написать - здесь вам не тут, так что, я лично помогу, тем более кода там строк 30-50
Да ну - копирование с апгрейтом у них по жизни прописано :) А у нас были дефки в том числе и умненькие. Им преподы всегда четверки ставили :)
не , Вы за всех то не подписывайтесь, девочки они исполнительные, а Оля вдобавок упорная, 300 строк написать - здесь вам не тут, так что, я лично помогу, тем более кода там строк 30-50
Да ну - копирование с апгрейтом у них по жизни прописано :) А у нас были дефки в том числе и умненькие. Им преподы всегда четверки ставили :)
да ну, девки должны быть приятные на ощупь )))
И по разговору.)
да ну, девки должны быть приятные на ощупь )))
После темы про тремор прошу обозначить "ощупь" в цифрах )))
И по разговору.)
Т.е. обработку string() Вы берете на себя?
Miss Оля, write me an mail.
охринеть... вы китайских програмистов переплюнули, которые обьявляют вместо массива а1,а2,а3,.....
начните с премитивного- логической схемы работы своей программы в виде кубиков, ромбиков-? да/нет, стрелочек. потом одним диодом помаргайте...
это помагает
Я как на форум ни зайду - обязательно живая тема про "как избавиться от delay". Мне кажется можно целую книжку написать, по типу "millis() и таймеры для чайников или как запараллелить исполнение" :)
strarbit, думаю эта тема для вас в самый раз. Наше ФСБ к вам не дотянется.)
да ну, девки должны быть приятные на ощупь )))
После темы про тремор прошу обозначить "ощупь" в цифрах )))
в этом программисты пролетают мимо, зто нельзя оцифровать и автоматизировать )))
в этом программисты пролетают мимо, зто нельзя оцифровать и автоматизировать )))
да ладно, ещё в школе была шкала 1-10 или 1-100.
и дефкам нравилось, если они где то в верхах числились))))
Я как на форум ни зайду - обязательно живая тема про "как избавиться от delay".
И чем он им всем так не угодил?
в этом программисты пролетают мимо, зто нельзя оцифровать и автоматизировать )))
да ладно, ещё в школе была шкала 1-10 или 1-100.
и дефкам нравилось, если они где то в верхах числились))))
в Таганрогком радиотехническом была обратная шкала -Кушпит )))
strarbit, думаю эта тема для вас в самый раз. Наше ФСБ к вам не дотянется.)
Dear sir, Green Have a Cool Evening!
I stood up for a schoolgirl. Needless to say, this is not real, it's just a game.
в Таганрогком радиотехническом была обратная шкала -Кушпит )))
Ну там есть определенные цифры 1, 2,3, 4 ... больше на ощупь не встречал. Говорят, что бывают 0 и 9, но 0, по моему мнению, не имеет смысла, а 9 не влезает в байт.
От delay я вроде как избавилась. время в компорт выводит и параллельно мигает.
Но теперь не работает код начала действия. Куда поместить if (val == 'H'), чтобы он начинал мигать, когда вводим H?
и с кодом отмены тоже проблемы)
Все почти OK, только по if(...'H') надо инвертировать дополнительную переменную-флаг, а в строку 16 добавить условие, при истинности которого будет вызываться фунция blinkLed().
Все почти OK, только по if(...'H') надо инвертировать дополнительную переменную-флаг, а в строку 16 добавить условие, при истинности которого будет вызываться фунция blinkLed().
такое построение идеологически потянет максимум на трояк, а девочка трудолюбивая, надо подсказать как на пятёрочку, да и выводит в миллисекундах, видимо надо поправить тут:
А так примерно нужно было инвертировать переменную? Просто теперь светодиод не мигает и время выводится единожды.
Спасибо за подсказку!) Да мне бы хоть как...((
Спасибо за подсказку!) Да мне бы хоть как...((
напишите в личку ник на яндексе
Просто теперь светодиод не мигает и время выводится единожды.
Если flag - это признак поданной команды 'H', то blinkLed(BLINK_INTERVAL); должен выполняться не внутри условия if (val == 'H'..., а внутри отдельного самостоятельного условия if (flag==1) в цикле loop() (ну и время тоже там если параллельно миганию надо)
А где здесь личка?
а то выкладывать свой примитивный код на обозрение нездоровой критики нет желания )))
напишите в личку ник на яндексе
О-о-о, да наш форум залазит на поляну https://www.mamba.ru :)
А так примерно нужно было инвертировать переменную?
Примерно вот так:
Спасибо!
А так примерно нужно было инвертировать переменную?
Примерно вот так:
как обработчик можно и так, можно через IF а вот таймера у неё нет, хотя бы как блинк на миллис взять за основу
а вот таймера у неё нет, хотя бы как блинк на миллис взять за основу
Незамысловатый блинк у неё есть.
Но, думаю, Вы нам сейчас покажете, как это на таймере делается. Чтобы на пятёрку.
а вот таймера у неё нет, хотя бы как блинк на миллис взять за основу
Незамысловатый блинк у неё есть.
Но, думаю, Вы нам сейчас покажете, как это на таймере делается. Чтобы на пятёрку.
на пятёрку я не знаю, только на четвёрку...
таймер,легко, но не покажу, пусть поработает, ну может на миллис разве что )))
а вскетче два недотаймера, их выбросить и сделать хотя бы как в примерах блинк без делей
напишите в личку ник на яндексе
О-о-о, да наш форум залазит на поляну https://www.mamba.ru :)
тема оказывается еще жива, вот уж не подумал бы )))