Тёмный

Уроки Arduino #6 - отработка нажатия кнопки при помощи флажков 

Заметки Ардуинщика
Подписаться 395 тыс.
Просмотров 484 тыс.
50% 1

В этом уроке научимся работать с флажками и сделаем расширенную отработку нажатия кнопки с защитой от дребезга контактов.
▼ Скетчи из урока ▼
alexgyver.ru/arduino/lesson_6_...
▼ OneButton library ▼
github.com/mathertel/OneButton
▼ Огромный стартовый набор GyverKIT ▼
kit.alexgyver.ru/
▼ Уроки Arduino на сайте ▼
alexgyver.ru/lessons/
▼ Модули и датчики с Али ▼
alexgyver.ru/arduino_shop/
▼ Страница "Заметок Ардуинщика" ▼
alexgyver.ru/arduino_lessons/
Теги: #arduino #уроки #ардуино #alexgyver
●●●●●●●●●●●●●●●●●●●●
► Основной канал: / alexgyvershow
► Поддержать автора alexgyver.ru/support_alex/
► Официальный сайт: alexgyver.ru/
► Почта: alex@alexgyver.ru

Наука

Опубликовано:

 

7 апр 2017

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 480   
@SlavikSelin
@SlavikSelin 6 лет назад
Незнание о существовании некоторых библиотек благоприятно влияет на умственное развитие)
@Lobzik01
@Lobzik01 5 лет назад
Золотые слова!
@anon3696
@anon3696 5 лет назад
Со смыслом
@Dmitriitube
@Dmitriitube 4 года назад
Жиза
@lifegood6083
@lifegood6083 4 года назад
@@anon3696 САС МЫСЛОМ ПРАВИЛЬНО
@anon3696
@anon3696 4 года назад
Life Good 🤣🤣🤣 извиняюсь
@user-fi3yo1lm4y
@user-fi3yo1lm4y 2 месяца назад
Уважаемый автор! Большое вам спасибо за ваши уроки!
@edelectron1080
@edelectron1080 2 года назад
Человек, ты просто молодец!!!! Я пока ничерта в этом не соображаю, но мне ОЧЕНЬ ИНТЕРЕСНО!!!!
@user-tx4hu2fp7s
@user-tx4hu2fp7s 3 года назад
Тоже начал осваивать язык ардуино. Спасибо автору за интересные ролики и доступное объяснение! Заметил один нюанс (возможно тут уже кто то об этом писал). Код с millis(); отрабатывает антидребезг только при нажатии на кнопку но не при отпускании (что при отпускамии у меня приводило к ложным срабатываниям). Антидребезг при отпускании устранился дописыванием той же конструкции (- last_press > 50 и last_press = millis();) во второй оператор if.
@mikurrey416
@mikurrey416 29 дней назад
Воот, а я думал, это кнопка у меня такая задолбанная, что ей надо 200мс прописывать. Оказалось, тоже отпускание шумит. Спасибо за комментарий!
@user-gl8oq2sm8p
@user-gl8oq2sm8p 4 года назад
Спасибо! На основе этого урока сделал себе простой сигнализатор наполнения ванны =) Взял 1 Arduino Nano, 1 спикер от ПК и из кусочка старого текстолита сделал "датчик дождя". Выяснилось что спикер тихий и взял у жены старую круглую моно-колонку. Сваял все это дело так, разъем Jack 3.5 землю к земле Arduino, левый и правый канал замкнул на пин D3 (3 pin), далее "датчик дождя" по принципу кнопки, 1 контакт к земле Arduino, 2 к пину A5 (19 pin). Код из этого урока с не большыми поправками: #define b 3 //3 pin спикера if (button1H) { Serial.println("hold"); tone (b, 500); //Пищание с частотой 500 Hz delay(100); //Задержка tone(b, 1000); delay(100); button1H = 0; } void setTone(int pin, int note, int duration) { tone(pin, note, duration); delay(duration); noTone(pin); //Прекращение пищания } Коробку потом из под Тик-Так возьму =) А вообще с ESP8266 или с RFками можно зацепить к "умному" проекту как "датчик дождя", сырости или наполнения резервуара.
@user-dn5to9ow9s
@user-dn5to9ow9s 7 лет назад
Лучшие уроки по ардуинке:)
@georgijwlassow7430
@georgijwlassow7430 5 лет назад
Интересные знания, четкое изложение, лаконичность, понятность и точнось и качество монтажа. Супер. Спасибо.
@DenaGur
@DenaGur 3 года назад
С каждым уроком становится только интереснее и сам материал разобран практически до мелочи, всё очень доходчиво)) Спасибо автору!!!
@_91th
@_91th 7 лет назад
Огромное спасибо автору за работу, очень круто. Лучшие уроки на русском ютубе!
@wolchara25
@wolchara25 4 года назад
Спасибо большое за твои уроки, очень хорошо помогли быстро разобраться во всем и решить поставленную задачу)
@user-oe6ol2yt4l
@user-oe6ol2yt4l 7 лет назад
Автор! Твои уроки просто замечательны! все легко и понятно, формат помогает полностью усвоить все что ты говоришь и показываешь! Продолжай в том же духе! Ты красавчик)
@iserdead458
@iserdead458 7 лет назад
Шикарные уроки, ждём продолжения!
@droncheg
@droncheg 4 года назад
Спасибо за труд. Подача материала на высоте, благодаря этим урокам, рискнул взяться за освоение Ардуино
@Lomosat
@Lomosat 7 лет назад
Прекрасные уроки. Всё по делу, куча полезного материала в единицу времени, приятный голос и музыкальное сопровождение. Вы талантливый преподаватель.
@vsmakeev
@vsmakeev 7 лет назад
Как всегда коротко, но при этом детально разобран вопрос. Спасибо!
@user-rj5oz5fv2z
@user-rj5oz5fv2z 7 лет назад
Все доступно, понятно, лаконично - максимум информации за минимум времени. Наглядно и качественно. Подписка, лайки и пожелание всех благ. Не останавливайтесь!!!
@user-yi7fv6fh6o
@user-yi7fv6fh6o 6 лет назад
Как и в остальных Уроках: четко, последовательно и обстоятельно. Великолепно!
@__520
@__520 7 лет назад
Спасибо, что в описании всё оставил!
@vidi3266
@vidi3266 4 года назад
Очень классно всё объясняешь!! Спасибо!
@LigSei
@LigSei 4 года назад
Капец! Как же это интересно!
@skeppi8412
@skeppi8412 7 лет назад
я вот ожидал шутки "батт-флаг - баттплаг". но я с годами, видимо, стал слишком пошлым :-) а вообще хорошее дело делаешь. я ради интереса смотрю, как второй канал любимого автора, хотя мне, к примеру, учиться тут особо нечему, ибо пишу давно и приходилось на дельфи, сишарпе, разных скриптах пилить код. даже клятые ладдеры копать приходилось :-) а со временем привыкаешь, что синтаксис - дело десятое, главное алгоритм :-) но очень многим без опыта поможет. респект!
@ArduNotes
@ArduNotes 7 лет назад
спасибо =) А шутка и правда лучше моей
@iriska2255
@iriska2255 6 лет назад
Вот умеет же человек обьяснить, просто и по делу.
@SMTHelse01
@SMTHelse01 3 года назад
боже, Гайвер спасибо огромное! Только тут нашёл то, что искал 10 часов! СПАСИБО!
@Klagerh
@Klagerh 5 дней назад
Спасибо за урок ! - КРУТО !!!
@user-fw6zz2qi6l
@user-fw6zz2qi6l 7 лет назад
Как всегда просто и полезно! С кнопками уже разобрался, но всё равно полезно иметь такую напоминалку =D
@Daniel-lg9rg
@Daniel-lg9rg 7 лет назад
Нужно больше видео!!!
@sf_fs_kida
@sf_fs_kida 2 года назад
Качественно, доходчиво, понятно!!!! КЛАС
@romaibragimov9872
@romaibragimov9872 5 лет назад
Спасибо!!! Очень интересное видео!
@Chitinec75rus
@Chitinec75rus 7 лет назад
Все оч. круто!!!!Жду с нетерпение обещанный урок по спящему режиму ардуино.
@user-ws5jf6qz1x
@user-ws5jf6qz1x 7 лет назад
Спасибо за видео. Вы лучший
@Werbard
@Werbard 5 лет назад
Как всегда лайк лучшему ардуинщику ютуба! Но... Есть проблемка... Такой обработчик кнопок отвалится через 49 (49,71026961805556) дней непрерывной работы устройства. Расковырял библиотеку - та же фигня, переход millis через 0 она не отрабатывает. Так что если устройство должно работать нонстоп (у меня это контроллер отопления на даче), то придется корчить сволй обработчик. Вот для примера счетчик секунд, можно и обработчик кнопок аналогично сделать ;) Кстати, пойду сделаю, я сюда именно в расчете на него и залез ) void loop(){ if(!isNewMillis && millis() > nextSec){ newSecond(); } else if(isNewMillis && millis() < oldSec && millis() > nextSec){ newSecond(); } } void newSecond(){ oldSec = nextSec; //задаем значение текущей секунды nextSec += 1000; //вычисляем следующую секунду if(nextSec < oldSec){ //проверяем будет ли следующая меньше текущей (таймер обнулился) isNewMillis = true; } else{ isNewMillis = false; } }
@user-sc8ye9qj5e
@user-sc8ye9qj5e 7 лет назад
Молодец. Видео приятно посмотреть, несмотря на то, что ты это всё давно уже знаешь. )
@neatcut5194
@neatcut5194 5 лет назад
Просто ОФИГЕННЫЙ УРОК !!!!!!!!
@korbinos
@korbinos 4 года назад
very well, please keep going in this way :)
@sparksoul5814
@sparksoul5814 3 года назад
Класс,наслаждение от видоса)
@user-xk9dk3gh4j
@user-xk9dk3gh4j 7 лет назад
как всегда все понятно.
@user-mg6zy3st5p
@user-mg6zy3st5p 6 лет назад
сколько книг с темами по запоминанию состояния кнопки прочитал, это видео - самое понятное и эффективное объяснение! Молодчина, Алекс!
@user-vu6hn4ul2i
@user-vu6hn4ul2i 3 года назад
Эмммм, мне кажется, что вы слегка преувеличиваете. КНИГ (!) по запоминанию состояния кнопки.
@igorpopov5584
@igorpopov5584 7 месяцев назад
пошел вон
@Yaroslav.22
@Yaroslav.22 Год назад
Спасибо за классные видео
@amantaeveldar1300
@amantaeveldar1300 7 лет назад
if aa_old a^= digitalRead(); Функция XOR; С помощью нее можно взвести и сбросить флаг. Сократив цикл if.
@geek4277
@geek4277 5 лет назад
if это не цикл)
@user-yz3us4qu2u
@user-yz3us4qu2u 7 лет назад
Чувак самый что есть крутяк. УВАЖУХА
@kanjosidr
@kanjosidr 6 лет назад
Отсылку оценил, спасибо :D
@user-fr1nh1yx2k
@user-fr1nh1yx2k 4 года назад
Понял все. Спасибо!
@elenapoplos9537
@elenapoplos9537 3 года назад
Спасибо за видео и советы
@Jackson_Sam
@Jackson_Sam 7 лет назад
Спасибо! Всё супер!
@user-hh3cd9yv7b
@user-hh3cd9yv7b 7 лет назад
Хорошо было бы если ты разобрал в видео функции и команды отдельно ,а уже потом показывал их применение .
@user-ck4pn1wn9n
@user-ck4pn1wn9n 3 года назад
спасибо все понятно.РАБОТАЕТ!!!
@Andrew-hh7ht
@Andrew-hh7ht 3 года назад
СПАСИБО ЗА УРОК
@nyanband2291
@nyanband2291 7 лет назад
Было бы классно твои видосы внедрить в школы на уроки информатики, потому что там сейчас полный агхтунг! Пейнт, Карл, пейнт ещё самый первый((((( Ты не думал об этом?
@user-oy1sq7mc4d
@user-oy1sq7mc4d 7 лет назад
а кто там препода1ёт информатику? Зп начинающего учителя 12 000 р. Теперь к зарплате начиначиющего учителя добавь зп начинающего программиста хотя бы. В школе не должны учить программированию. Это прирагатива специализированных кафедр в вузах
@Werbard
@Werbard 7 лет назад
nyan band Герман совершенно прав. Ардуино вообще было придумано именно для студентов. А если внедрять это на уроках информатики - это уже уклон в одну сторону... или нужно все уроки усложнить до такого уровня... ммм... литература на уровне первых курсов филфака...
@alexeibelousov3279
@alexeibelousov3279 7 лет назад
в конце 90х в школе было то же самое, примитивные рисовалки в винде, примитивная печать текста в текстовых редакторах, немного электронных таблиц + бейсик. К сожалению многие даже этого не тянули. Ардуино в школе можно рассматривать как дополнительный кружок по интересам робототехники\моделирования
@hisbelhul
@hisbelhul 6 лет назад
программирование в среде паскаль с 7-9 класс
@nooooordy
@nooooordy 6 лет назад
программированию надо учить начиная с детского сада. Никто ж не заставляет учить С++
@joni1234ize
@joni1234ize 4 года назад
Спасибо за уроки, очень все классно. Единственная проблема у меня - качество моих кнопок такое, что время на устранение дребезга близко к времени, когда уже HOLD надо принимать))))
@jcdfce2707
@jcdfce2707 6 лет назад
Спасибо за видео. Переработаю свой код кнопки в проекте бортового компьютера для игры ETS2. На языке С не писал до ардуино, так что в новинку некоторые вещи. А Com-порт использую не только для дебага, но и для двухстороннего обмена ардуино с программой на Perl в проекте, в частности надо отслеживать нажатие кнопки.
@jdy.
@jdy. 3 года назад
самое нормальное объяснение, которое я только смог найти, не то что хрень типа debounce прописаная в setup
@Mexahoid
@Mexahoid 7 лет назад
Лайк за отсылку к флагштоку =)
@sergeyselishchev4010
@sergeyselishchev4010 7 лет назад
Алекс предлагаю идейку для проекта на ардуинке. Предлагаю сделать сигналку для дома, дачи квартиры. Канала так на четыре для возможности подключить разные датчики дым ,газ ,вода ,движение. Ну и конечно с оповещением на телефон что за лини сработала.
@user-mt7rt8ib2z
@user-mt7rt8ib2z 2 года назад
спасибо за урок
@Taras195
@Taras195 6 лет назад
Первые два правила интернетов не забывай. Отсылка, конечно, хороша, но названия переменных и флагов в уроке хорошо было-бы использовать разными по звучанию, очень легко запутаться.
@valery4653
@valery4653 7 лет назад
Расскажи, пожалуйста, как самому написать библиотеку для ардуино.Думаю, многим будет интересно.
@igorpr.8188
@igorpr.8188 2 года назад
Класс! Спасибо большое!
@netlineWiFi
@netlineWiFi 7 лет назад
*Уроки замечательные!* Все шесть прошел и вот жду следующий выпуск, так интересно стало. Кстати, что ты думаешь о Fritzing, я имею ввиду писать код, прошивать МК и смотреть в монитор COM-порта, почти все нужное там есть для прошивки, как в Arduino IDE. Или дефолтная IDE лучше?
@ElfimAirman
@ElfimAirman 6 лет назад
подскажи Arduino PRO micro прошивать только через специальную плату для прошивки или можно на прямую с компа
@x_mouzzer_x
@x_mouzzer_x 4 года назад
привет, а можно на флажках меню собрать? чтобы выполнять действие по очереди, выставля флаг на след действие и снимая с "себя" как уже завершонее, и чтоб не стопорить луп?
@junyjell8614
@junyjell8614 5 лет назад
СПАСИБО! НАКОНЕЦТО КНОПКА ЗАРАБОТАЛА
@murwi9675
@murwi9675 7 лет назад
Алекс, привет! Покажи пожалуйста туториал по ИК приемнику.
@user-iy2us9rq6o
@user-iy2us9rq6o Год назад
большое спасибо тебе даже мне школьнику всё ясно
@paulogorodetsky3656
@paulogorodetsky3656 7 лет назад
Так вот чем ардуинщики в воскресенье утром занимаются:)
@morkoffka
@morkoffka 7 лет назад
Это вчера вечером под пивко, а выложено утром :-)
@paulogorodetsky3656
@paulogorodetsky3656 7 лет назад
Владимир Белов возможно 😉
@user-db4cx2ww5b
@user-db4cx2ww5b 5 лет назад
Подскажите какую библиотеку или скейч установить для открывания автоматических варот.
@xxx166
@xxx166 6 лет назад
Крутой канал все понятно и доступно, уважение !!!!!!!!!!!!!!!!!!!!!!! так держать, тебя ждет большое успех!!!! Когда следующие видосы ?
@ArduNotes
@ArduNotes 6 лет назад
+David Poshelyk осенью
@ravgim3954
@ravgim3954 2 года назад
А сколько пинов подтянуты внутренним резистором? Т.е. могу ли я подключить например 5-7 кнопок и все их подтянуть внутренним резистором?
@user-zr7rj9qd8x
@user-zr7rj9qd8x 5 лет назад
Скажите пожалуйста, как вы саму схему собирали? в дигитал 3 совали плюс, и со стороны дигитал гнд? или как?
@MrBestKenny
@MrBestKenny 3 года назад
Смотрю Ваши уроки. Возник вопрос с переключанием светодиода. Зачем писать состояние светодиода? Его разве нельзя считать через digitalRead? К примеру, когда кнопка нажата выполнять digitalRead пина, к которому подключен светодиод, и если там LOW, то ставить HIGH и наоборот. Или я что-то не так понимаю?
@FaxMaxx
@FaxMaxx 4 года назад
Цитата с сайта alexgyver.ru/lessons/arduino-libraries/ "oneButton - библиотека для расширенной работы с кнопкой. На мой взгляд неудобная". А в видео говорится, что ЗАМЕЧАТЕЛЬНАЯ. За уроки СПАСИБО!!!
@SergeyKardakov
@SergeyKardakov 6 лет назад
Привет. Ты так классно все разжевываешь! Можешь запилить видео по созданию суточного таймера для включения-выключения света на несколько каналов? Таких видео много, но они какие-то неполные.. Авторы показывают конечный результат, и только...
@sergeikolesnikov6596
@sergeikolesnikov6596 3 года назад
Ochen bistro kommentiruesh i pechataesh, dlya novichkov ochen tiazhelo za toboi uspevat. ne vse zhe programmers like you.
@BDV41
@BDV41 8 месяцев назад
Pause
@vicitacal11
@vicitacal11 7 лет назад
ахахахах Библиотека)))) Я об этом не знал, но инженерное мышление подсказало как регистрировать и нажатие, и удержание, и двойное нажатие без всяких библиотек. Теперь такая гордость из за этого.
@TheVitall
@TheVitall 7 лет назад
Расскажи пожалуйста про это.
@vicitacal11
@vicitacal11 7 лет назад
Когда кнопка нажата, запускается цикл, который каждые 100 мс добавляет 1 к переменной, потом когда кнопка отпущена, цикл заканчивается. Затем можно задавать параметры для интервала этой переменной. То есть в ней записано сколько времени кнопка была нажата.
@user-bf4cz4qj6e
@user-bf4cz4qj6e 4 года назад
Супер!!!
@soloveyaa
@soloveyaa 6 лет назад
а как прописать кнопку к уроку с адресной светолентой, что бы кнопкой переключался режим ленты на следующий, а не вводить вручную с компа?
@user-lo8co2nl5u
@user-lo8co2nl5u 7 лет назад
Алекс!!! АУ, когда gyvermod!??
@MakeFirePro
@MakeFirePro 7 лет назад
Привет из Люберец :)
@user-sc8ye9qj5e
@user-sc8ye9qj5e 7 лет назад
Delay - бичёвская команда! )
@user-vu6hn4ul2i
@user-vu6hn4ul2i 3 года назад
Delay team...
@user-nt8lm9ws8l
@user-nt8lm9ws8l Год назад
Не пойму одну вещь, last time это время предыдущего нажатия, но ведь ко времени следующего нажатия пройдёт какое-то время и если мы от millis отнимем last timer , то разница может быть какой угодно, в зависимости от того через какой промежуток времени мы нажали на кнопку, если бы мы в last timer записывали время нажатия на кнопку то было бы логично? Или я что то упустил?
@vladantomokhin8045
@vladantomokhin8045 4 года назад
Добрый день! Почему в скетче button_press_modes нажатия кнопки всё равно отрабатываются с дребезгом? На однократное нажатие в порт пишется то double, то pressed, то pressed и double вместе,то же самое и при двойном нажатии ...
@user-dz1nj6jt3c
@user-dz1nj6jt3c Год назад
Вопрос статус пин при первом нажатии передается условию второму что кнопка нажата и программа выводит вкл выкл?. Пришлось сбрасывать в первом условий butt = 0. а второе условие сделать if(butt==1 && butt_flag ==1) . Что условие пришлось поменять второе это и за аппаратного исполнения. А вот по чему статус нажатой кнопки он протаскивает через весь loop вот это интересно.
@pozh_rom-64.
@pozh_rom-64. 7 лет назад
ждем новое видео!
@user-gi6pf4bw1f
@user-gi6pf4bw1f 3 года назад
Спасибо.
@Vetalfoto
@Vetalfoto 5 лет назад
Спасибо за классное видео. А как обрабатывать несколько разных кнопок?
@bitbanan4ik766
@bitbanan4ik766 3 года назад
На разные порты подключать кнопки от земли, либо можно помучаться и сделать все кнопки на аналоговый порт(разное напряжение - разный сигнал)
@movsarayubov479
@movsarayubov479 2 года назад
у меня вопрос возник, зачем мы ввели переменную last_press? какую роль он там выполняет? Разве программа не будет работать если просто оставить millis() > 50?
@Disorrder
@Disorrder 3 года назад
Oh, yeees! Touch mu butt harder! А вообще, крайне рекомендую или полностью писать button, или хотя бы btn - это более широко известное сокращение, чтобы не было таких казусов) Вместо hold рекомендую события up/down. И в коде программы уже принимать решения как с ними быть. Хоть холд, хоть просто обработка нажатия.
@fpv_am
@fpv_am 7 лет назад
А когда аппаратура?? Подойдёт как за основу передатчик от квадрика Syma?? ДЛя потенциометров!
@DEDUS.ARASAKA
@DEDUS.ARASAKA 4 года назад
было бы неплохо начинать названия логических переменных со слова is. например isButtonPressed. повышает читаемость
@user-pb2gp7qp8x
@user-pb2gp7qp8x 5 лет назад
Сделай пожалуйста видео про графику.Что-бы ардуино по желанию могла рисовать на экране.
@alexandrwhite8302
@alexandrwhite8302 7 лет назад
Пытаюсь использовать код обработки кнопки, кажется в нем есть ошибка, пока еще не определил конкретно где, но button1D и button1DP флаги у меня работают не корректно. Что нажимаю второй раз и отпускаю, что нажимаю второй раз и не отпускаю поднимается только флаг button1D. Т.е. детектировать нажал-отпустил-нажал-отпустил не получается. Выдает одно нажал-отпустил-нажал (button1D).
@TheDryundel
@TheDryundel 7 лет назад
Да, ошибка есть и не одна. Разбирался с кодом неделю, т.к. знаком с программированием всего месяц и временные функции осваивал именно по этому коду. Именно ошибки в коде и помогли мне реально разобраться в данной теме, как бы не логично это не звучало. :) Теперь по делу: Основная ошибка заложена в самом начале кода. Дело в том, что в момент первого нажатии кнопки должна обновляться переменная button1_timer . В принципе оно так и происходит, согласно команде button1_timer = millis(). НО! Фикус в том, что данное значение должно записаться именно в момент нажатия и дальше не обновляться, а оно продолжает обновляться до момента отпускания кнопки, в результате чего hold не работает, а соответственно и зажатие отрабатывается не правильно. Автору все таки удалось добиться отработки зажатия но путем наложения одной ошибки на другую, но корректная работа всего кода от этого пострадала. Построив вот такую конструкцию: // нажатие кнопки if (in) { button1TS = 1; button1F = 1; } else { button1TS = 0; button1TE = 1; } if (button1TS && button1TE) { button1R = 0; button1_timer = millis(); button1TS = 0; button1TE = 0; } устранить эту первую и основную ошибку удалось. Здесь введены две дополнительные переменные: boolean button1TS; // флажки таймера нажатие (TS - Timer Start) boolean button1TE; // флажки таймера отпускание (TE - Timer End) На изящность кода не претендую, т.к. только учусь, но благодаря устранению описанной ошибки, построить корректно работающую кнопку все-таки удалось. :) Продолжу если кого то заинтересует.
@TaurnilTelemnar
@TaurnilTelemnar 5 лет назад
@@TheDryundel а я так и не асилил этот код (( Очень неудобно, когда отработчики вынесены отдельно, и код состоит как бэ из нескольких кусков. В моей голове весь цикл представляет из себя круг с точками-событиями на нем - круг целый и неразрывный. Короче, помучившись пару вечеров, написал свой отработчик нажатий, работающий на четырех переменных логического типа и одном хранилище времени. Причем, отрабатываются 4 типа нажатий - одиночное, двойное, удержание и двойное нажатие с удержанием.
@14768351
@14768351 7 лет назад
давненько не видать новых уроков. жду 7 урок.
@user-ou8yb3tf4d
@user-ou8yb3tf4d 7 лет назад
Код в конце видео не спасает от дребезга. Дребезг срабатывает, через указанную millis. Если задержку поставить в секунду, то дребезг и сработает через секунду. Флаг меняется в цикле if, тоесть, сработает после задержки millis. Хорошо только то, что срабатывает повторно, если совпадет условие после дребезга кнопки, а не 5-10 раз как дребезжит кнопка. =)) Надеюсь поняли))) Если попробовать двойной if сделать, в первом меняется логика кнопки, во втором, если задержка меньше - игнорировать, если больше - выполнить код в if. Что-то наподобие вот этого: if (butt == 1 && butt_flag == 0) { butt_flag = 1; if (millis() - last_press > 1000) { releOn = !releOn; digitalWrite(rele1, releOn); Serial.println("Button pressed"); last_press = millis(); } else { Serial.println("drebezggg"); } } Но это не точно. У меня этот код вроде работает. У меня всё на реле завязано, поэтому подписано реле )) В целом код мне нравится, попробовал сделать включение нескольких источников на 4 кнопки, задержку миллис поставил в секунду. Мне нравится, да и эта миллис просто открытие для меня, не то, что этот делей))
@dmitry5754
@dmitry5754 6 лет назад
Проверку (millis() - last_press>0) надо вставить на отпускание кнопки: if( !butt && butt_flag && millis() - last_press>0) в примере возможно неточность, т.к. там проверяется время повторного нажатия, что бессмысленно (нажатие уже зафиксировано в butt_flag ).
@user-ts3lh9rs3z
@user-ts3lh9rs3z 2 года назад
Здравствуйте. А где взять этот черновик по отработке нажатий, ссылка под видео не открывается. Спасибо.
@pavel_light2179
@pavel_light2179 7 лет назад
Сделай ещё один урок пожалуйста!!)
@Vadim_Dudin
@Vadim_Dudin 7 лет назад
Pavel_Light он уехал минимум до августа, поэтому роликов за это время точно не будет.
@radio-active7411
@radio-active7411 6 лет назад
А подскажите как сделать нажатие из 4-х раз?
@user-lm7iu6ni2y
@user-lm7iu6ni2y 3 года назад
подскажите пожалуйста if (millis() - last_mls2 > 2000) //периодичность публикации { val = digitalRead(pirPin); // считываем значение и приравниваем к "Val" last_mls2 = millis(); client.publish(pir_topic, String(val).c_str()); // публикуем СОСТОЯНИЕ ДАТЧИКА // } публикация состояние датчика раз в 2 секунды... как сделать чтоб публикация была только при изменении состояние датчика . датчик может срабатывать до 6 секунд по времени
@slavit100
@slavit100 6 лет назад
Здравствуйте. Помогите пожалуйста правильно написать часть скетча: Такое условие работает отлично if(temp < 25)digitalWrite(rele, HIGH); else digitalWrite(rele, LOW); но мне нужно включать реле по условию температуры, а выключать кнопкой S1. Но самое важное - условие будет повторяться с другой температурой и нужно включать это же реле, а вот отключить потом реле нужно уже кнопкой S2.
@elslugba
@elslugba 4 года назад
Подскажите. А можно изменять яркость светодиода одной кнопкой? Например, длительным нажатием.
@user-vu6hn4ul2i
@user-vu6hn4ul2i 3 года назад
Да, почему нет.
@user-br5po5dn6f
@user-br5po5dn6f 6 лет назад
у тебя можно многому научиться у тебя всё понятно но к ардуино можно подключать не только датчики но и LCD display 2004А и выводить на них разную информацию . Если будет время то вот одна идея для следующего урока.
@Pavel_Degen_R4HKG
@Pavel_Degen_R4HKG 7 лет назад
Давай больше видео уроков
@user-bb8nm9kj5v
@user-bb8nm9kj5v 7 лет назад
Добрый день. у меня проблема с работой с библиотеками. все видео в ютубе рассказывают как библиотеки добавлять в скетч, но никто не говорит что с ней делать дальше, как ей объяснить что делать, к какому пину подключено устройство. Я понял что там два файла, но кто из них зачем не ясно. Я только начинаю изучение. если возможно, не могли бы вы пояснить в видео инструкции хотя бы на примере OneButton. заранее спасибо.
Далее
КАК GOOGLE УКРАЛ ANDROID?
17:44
Просмотров 68 тыс.
Избранное печатает....
0:11
Просмотров 58 тыс.
Избранное печатает....
0:11
Просмотров 58 тыс.