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

  Рет қаралды 495,484

Заметки Ардуинщика

Заметки Ардуинщика

Күн бұрын

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

Пікірлер: 484
@SlavikSelin
@SlavikSelin 6 жыл бұрын
Незнание о существовании некоторых библиотек благоприятно влияет на умственное развитие)
@Lobzik01
@Lobzik01 5 жыл бұрын
Золотые слова!
@anon3696
@anon3696 5 жыл бұрын
Со смыслом
@Dmitriitube
@Dmitriitube 5 жыл бұрын
Жиза
@TexnikMain
@TexnikMain 5 жыл бұрын
@@anon3696 САС МЫСЛОМ ПРАВИЛЬНО
@anon3696
@anon3696 5 жыл бұрын
Life Good 🤣🤣🤣 извиняюсь
@ДенисГорлач-н5э
@ДенисГорлач-н5э 3 жыл бұрын
Тоже начал осваивать язык ардуино. Спасибо автору за интересные ролики и доступное объяснение! Заметил один нюанс (возможно тут уже кто то об этом писал). Код с millis(); отрабатывает антидребезг только при нажатии на кнопку но не при отпускании (что при отпускамии у меня приводило к ложным срабатываниям). Антидребезг при отпускании устранился дописыванием той же конструкции (- last_press > 50 и last_press = millis();) во второй оператор if.
@mikurrey416
@mikurrey416 4 ай бұрын
Воот, а я думал, это кнопка у меня такая задолбанная, что ей надо 200мс прописывать. Оказалось, тоже отпускание шумит. Спасибо за комментарий!
@ВиталийКовригин-е3ь
@ВиталийКовригин-е3ь 5 жыл бұрын
Спасибо! На основе этого урока сделал себе простой сигнализатор наполнения ванны =) Взял 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ками можно зацепить к "умному" проекту как "датчик дождя", сырости или наполнения резервуара.
@georgijwlassow7430
@georgijwlassow7430 5 жыл бұрын
Интересные знания, четкое изложение, лаконичность, понятность и точнось и качество монтажа. Супер. Спасибо.
@_91th
@_91th 7 жыл бұрын
Огромное спасибо автору за работу, очень круто. Лучшие уроки на русском ютубе!
@DenaGur
@DenaGur 4 жыл бұрын
С каждым уроком становится только интереснее и сам материал разобран практически до мелочи, всё очень доходчиво)) Спасибо автору!!!
@ВалерийСергеев-н2у
@ВалерийСергеев-н2у 7 жыл бұрын
Лучшие уроки по ардуинке:)
@edelectron1080
@edelectron1080 2 жыл бұрын
Человек, ты просто молодец!!!! Я пока ничерта в этом не соображаю, но мне ОЧЕНЬ ИНТЕРЕСНО!!!!
@МихаилТруб-г7ф
@МихаилТруб-г7ф 7 жыл бұрын
Автор! Твои уроки просто замечательны! все легко и понятно, формат помогает полностью усвоить все что ты говоришь и показываешь! Продолжай в том же духе! Ты красавчик)
@droncheg
@droncheg 4 жыл бұрын
Спасибо за труд. Подача материала на высоте, благодаря этим урокам, рискнул взяться за освоение Ардуино
@Спец.агентПетрович
@Спец.агентПетрович 5 ай бұрын
Уважаемый автор! Большое вам спасибо за ваши уроки!
@wolchara25
@wolchara25 4 жыл бұрын
Спасибо большое за твои уроки, очень хорошо помогли быстро разобраться во всем и решить поставленную задачу)
@Lomosat
@Lomosat 7 жыл бұрын
Прекрасные уроки. Всё по делу, куча полезного материала в единицу времени, приятный голос и музыкальное сопровождение. Вы талантливый преподаватель.
@LigSei
@LigSei 4 жыл бұрын
Капец! Как же это интересно!
@skeppi8412
@skeppi8412 7 жыл бұрын
я вот ожидал шутки "батт-флаг - баттплаг". но я с годами, видимо, стал слишком пошлым :-) а вообще хорошее дело делаешь. я ради интереса смотрю, как второй канал любимого автора, хотя мне, к примеру, учиться тут особо нечему, ибо пишу давно и приходилось на дельфи, сишарпе, разных скриптах пилить код. даже клятые ладдеры копать приходилось :-) а со временем привыкаешь, что синтаксис - дело десятое, главное алгоритм :-) но очень многим без опыта поможет. респект!
@ArduNotes
@ArduNotes 7 жыл бұрын
спасибо =) А шутка и правда лучше моей
@vsmakeev
@vsmakeev 7 жыл бұрын
Как всегда коротко, но при этом детально разобран вопрос. Спасибо!
@amantaeveldar1300
@amantaeveldar1300 7 жыл бұрын
if aa_old a^= digitalRead(); Функция XOR; С помощью нее можно взвести и сбросить флаг. Сократив цикл if.
@geek4277
@geek4277 6 жыл бұрын
if это не цикл)
@ИгорьМягков-г2в
@ИгорьМягков-г2в 6 жыл бұрын
сколько книг с темами по запоминанию состояния кнопки прочитал, это видео - самое понятное и эффективное объяснение! Молодчина, Алекс!
@ИмяФамилия-э4ф7в
@ИмяФамилия-э4ф7в 3 жыл бұрын
Эмммм, мне кажется, что вы слегка преувеличиваете. КНИГ (!) по запоминанию состояния кнопки.
@igorpopov5584
@igorpopov5584 10 ай бұрын
пошел вон
@ВикторСарока-н7ф
@ВикторСарока-н7ф 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; } }
@__520
@__520 7 жыл бұрын
Спасибо, что в описании всё оставил!
@ПавелВасильев-д4ф
@ПавелВасильев-д4ф 6 жыл бұрын
Как и в остальных Уроках: четко, последовательно и обстоятельно. Великолепно!
@nyanband2291
@nyanband2291 7 жыл бұрын
Было бы классно твои видосы внедрить в школы на уроки информатики, потому что там сейчас полный агхтунг! Пейнт, Карл, пейнт ещё самый первый((((( Ты не думал об этом?
@ЕрмаковГерман
@ЕрмаковГерман 7 жыл бұрын
а кто там препода1ёт информатику? Зп начинающего учителя 12 000 р. Теперь к зарплате начиначиющего учителя добавь зп начинающего программиста хотя бы. В школе не должны учить программированию. Это прирагатива специализированных кафедр в вузах
@Werbard
@Werbard 7 жыл бұрын
nyan band Герман совершенно прав. Ардуино вообще было придумано именно для студентов. А если внедрять это на уроках информатики - это уже уклон в одну сторону... или нужно все уроки усложнить до такого уровня... ммм... литература на уровне первых курсов филфака...
@alexeibelousov3279
@alexeibelousov3279 7 жыл бұрын
в конце 90х в школе было то же самое, примитивные рисовалки в винде, примитивная печать текста в текстовых редакторах, немного электронных таблиц + бейсик. К сожалению многие даже этого не тянули. Ардуино в школе можно рассматривать как дополнительный кружок по интересам робототехники\моделирования
@hisbelhul
@hisbelhul 7 жыл бұрын
программирование в среде паскаль с 7-9 класс
@nooooordy
@nooooordy 7 жыл бұрын
программированию надо учить начиная с детского сада. Никто ж не заставляет учить С++
@МОЙХОСТИНГ-л9р
@МОЙХОСТИНГ-л9р 7 жыл бұрын
Молодец. Видео приятно посмотреть, несмотря на то, что ты это всё давно уже знаешь. )
@SMTHelse01
@SMTHelse01 3 жыл бұрын
боже, Гайвер спасибо огромное! Только тут нашёл то, что искал 10 часов! СПАСИБО!
@iriska2255
@iriska2255 6 жыл бұрын
Вот умеет же человек обьяснить, просто и по делу.
@iserdead458
@iserdead458 7 жыл бұрын
Шикарные уроки, ждём продолжения!
@vidi3266
@vidi3266 4 жыл бұрын
Очень классно всё объясняешь!! Спасибо!
@jdy.
@jdy. 4 жыл бұрын
самое нормальное объяснение, которое я только смог найти, не то что хрень типа debounce прописаная в setup
@Klagerh
@Klagerh 3 ай бұрын
Спасибо за урок ! - КРУТО !!!
@Daniel-lg9rg
@Daniel-lg9rg 7 жыл бұрын
Нужно больше видео!!!
@sergeikolesnikov6596
@sergeikolesnikov6596 4 жыл бұрын
Ochen bistro kommentiruesh i pechataesh, dlya novichkov ochen tiazhelo za toboi uspevat. ne vse zhe programmers like you.
@BDV41
@BDV41 Жыл бұрын
Pause
@sergeyselishchev4010
@sergeyselishchev4010 7 жыл бұрын
Алекс предлагаю идейку для проекта на ардуинке. Предлагаю сделать сигналку для дома, дачи квартиры. Канала так на четыре для возможности подключить разные датчики дым ,газ ,вода ,движение. Ну и конечно с оповещением на телефон что за лини сработала.
@Yaroslav.22
@Yaroslav.22 Жыл бұрын
Спасибо за классные видео
@vicitacal11
@vicitacal11 7 жыл бұрын
ахахахах Библиотека)))) Я об этом не знал, но инженерное мышление подсказало как регистрировать и нажатие, и удержание, и двойное нажатие без всяких библиотек. Теперь такая гордость из за этого.
@TheVitall
@TheVitall 7 жыл бұрын
Расскажи пожалуйста про это.
@vicitacal11
@vicitacal11 7 жыл бұрын
Когда кнопка нажата, запускается цикл, который каждые 100 мс добавляет 1 к переменной, потом когда кнопка отпущена, цикл заканчивается. Затем можно задавать параметры для интервала этой переменной. То есть в ней записано сколько времени кнопка была нажата.
@korbinos
@korbinos 5 жыл бұрын
very well, please keep going in this way :)
@sf_fs_kida
@sf_fs_kida 2 жыл бұрын
Качественно, доходчиво, понятно!!!! КЛАС
@Павел-б9ъ2ь
@Павел-б9ъ2ь 7 жыл бұрын
Хорошо было бы если ты разобрал в видео функции и команды отдельно ,а уже потом показывал их применение .
@МойГараж-х9л
@МойГараж-х9л 7 жыл бұрын
Как всегда просто и полезно! С кнопками уже разобрался, но всё равно полезно иметь такую напоминалку =D
@АлексейГулин-з7л
@АлексейГулин-з7л 7 жыл бұрын
Спасибо за видео. Вы лучший
@АндрейКирюхин-ж2д
@АндрейКирюхин-ж2д 7 жыл бұрын
как всегда все понятно.
@Chitinec75rus
@Chitinec75rus 7 жыл бұрын
Все оч. круто!!!!Жду с нетерпение обещанный урок по спящему режиму ардуино.
@romaibragimov9872
@romaibragimov9872 5 жыл бұрын
Спасибо!!! Очень интересное видео!
@FaxMaxx
@FaxMaxx 5 жыл бұрын
Цитата с сайта alexgyver.ru/lessons/arduino-libraries/ "oneButton - библиотека для расширенной работы с кнопкой. На мой взгляд неудобная". А в видео говорится, что ЗАМЕЧАТЕЛЬНАЯ. За уроки СПАСИБО!!!
@Taras195
@Taras195 6 жыл бұрын
Первые два правила интернетов не забывай. Отсылка, конечно, хороша, но названия переменных и флагов в уроке хорошо было-бы использовать разными по звучанию, очень легко запутаться.
@Владимир-г2ж4у
@Владимир-г2ж4у 2 ай бұрын
Имхо, дебаунс лучше писать в блоке отпускания кнопки, а не в блоке нажатия, чтобы МК не видел именно отпускание. А если писать в блоке нажатия, то в случае дребезга и удерживания кнопки дольше продолжительности антидребезга состояние светодиода изменится
@paulogorodetsky3656
@paulogorodetsky3656 7 жыл бұрын
Так вот чем ардуинщики в воскресенье утром занимаются:)
@morkoffka
@morkoffka 7 жыл бұрын
Это вчера вечером под пивко, а выложено утром :-)
@paulogorodetsky3656
@paulogorodetsky3656 7 жыл бұрын
Владимир Белов возможно 😉
@АлександрЛюбарчук
@АлександрЛюбарчук 7 жыл бұрын
Чувак самый что есть крутяк. УВАЖУХА
@ЕвгенийЗамащиков-д1э
@ЕвгенийЗамащиков-д1э 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 ).
@neatcut5194
@neatcut5194 6 жыл бұрын
Просто ОФИГЕННЫЙ УРОК !!!!!!!!
@kelrimor2720
@kelrimor2720 4 жыл бұрын
Пасиба, решил свою задачу. Но дописал удобную функцию, чтоб меньше руками писать. Мою функцию вставить после конца главного цикла ... bool btn1=false; bool btn1_flag=false; void loop{ //Здесь ваш код if(btn1 && !btn1_flag && cooldown() ) { btn1_flag=true; } // } // // //Отсюда начинается //моя функция // unsigned long last_press=millis(); unsigned long Time=0; bool cooldown(){ Time=millis()-last_press; bool x=Time>50; //50 можно заменить на //любую свою задержку //в миллисекундах last_press=millis(); return x; } Суть в том, что функция отработает задержку сама если ее вызвать в виде if(A&& cooldown()) ,где А - ваши проверки кнопок или чего-нибудь ещё cooldown () - проверка как в играх откат способности. Тот же смысл и здесь. Проверка на возможность использования части кода в данный момент времени
@kelrimor2720
@kelrimor2720 4 жыл бұрын
Есть возможность добавить аргумент по умолчанию в функцию для указания времени задержки. Но после этого функция сразу потребовала указывать себя до основного кода. Поэтому сюда не привёл.
@volodya185
@volodya185 7 жыл бұрын
Я взял этот скетч.... Флажки - хорошо, но почему-то путает иногда двойное нажатие с одиночным, подумал, подумал, решил сам написать свою программку обработки и ура, всё работает. ( я решил, что выполнение кода всё время пока зажата кнопка не нужно и не добавлял это, а главное, если понадобится можно всегда дописать )
@ArduNotes
@ArduNotes 7 жыл бұрын
+MrKpoT а скинь на почту :3 адрес на странице о канале, для коммерческих вопросов
@jcdfce2707
@jcdfce2707 6 жыл бұрын
Спасибо за видео. Переработаю свой код кнопки в проекте бортового компьютера для игры ETS2. На языке С не писал до ардуино, так что в новинку некоторые вещи. А Com-порт использую не только для дебага, но и для двухстороннего обмена ардуино с программой на Perl в проекте, в частности надо отслеживать нажатие кнопки.
@joni1234ize
@joni1234ize 4 жыл бұрын
Спасибо за уроки, очень все классно. Единственная проблема у меня - качество моих кнопок такое, что время на устранение дребезга близко к времени, когда уже HOLD надо принимать))))
@nikolaiuser3190
@nikolaiuser3190 Жыл бұрын
дребезг можно легко убирать программно. if(digitalRead(0) == 0){ //делаем что-то while (digitalRead(0) == 0); // не даем программе выйти пока кнопка держится) }
@ИванКрасноярский-е3я
@ИванКрасноярский-е3я 10 ай бұрын
спасибо, работает
@Mexahoid
@Mexahoid 7 жыл бұрын
Лайк за отсылку к флагштоку =)
@МОЙХОСТИНГ-л9р
@МОЙХОСТИНГ-л9р 7 жыл бұрын
Delay - бичёвская команда! )
@ИмяФамилия-э4ф7в
@ИмяФамилия-э4ф7в 3 жыл бұрын
Delay team...
@DEDUS.ARASAKA
@DEDUS.ARASAKA 4 жыл бұрын
было бы неплохо начинать названия логических переменных со слова is. например isButtonPressed. повышает читаемость
@elenapoplos9537
@elenapoplos9537 3 жыл бұрын
Спасибо за видео и советы
@ravgim3954
@ravgim3954 2 жыл бұрын
А сколько пинов подтянуты внутренним резистором? Т.е. могу ли я подключить например 5-7 кнопок и все их подтянуть внутренним резистором?
@Disorrder
@Disorrder 3 жыл бұрын
Oh, yeees! Touch mu butt harder! А вообще, крайне рекомендую или полностью писать button, или хотя бы btn - это более широко известное сокращение, чтобы не было таких казусов) Вместо hold рекомендую события up/down. И в коде программы уже принимать решения как с ними быть. Хоть холд, хоть просто обработка нажатия.
@Andrew-hh7ht
@Andrew-hh7ht 3 жыл бұрын
СПАСИБО ЗА УРОК
@АндрейЖуравко-ж3с
@АндрейЖуравко-ж3с 3 жыл бұрын
спасибо все понятно.РАБОТАЕТ!!!
@АндрійГубін-д5с
@АндрійГубін-д5с 5 жыл бұрын
Понял все. Спасибо!
@MrBestKenny
@MrBestKenny 4 жыл бұрын
Смотрю Ваши уроки. Возник вопрос с переключанием светодиода. Зачем писать состояние светодиода? Его разве нельзя считать через digitalRead? К примеру, когда кнопка нажата выполнять digitalRead пина, к которому подключен светодиод, и если там LOW, то ставить HIGH и наоборот. Или я что-то не так понимаю?
@sparksoul5814
@sparksoul5814 3 жыл бұрын
Класс,наслаждение от видоса)
@paranormalific
@paranormalific 5 жыл бұрын
Я не понял, а зачем замарачиваться с millis() если можно тупо прописать в оба условия инвертировать значение флага светодиода ( led_flag = !led_flag; digitalWrite(3, led_flag); ) ? Так все нормально работает)
@МиронСмоляков-ч3ш
@МиронСмоляков-ч3ш Жыл бұрын
большое спасибо тебе даже мне школьнику всё ясно
@kirznervadim7072
@kirznervadim7072 5 жыл бұрын
Кстати, скорее всего , что надо устанавливать задержку на антидребезг и для отжатия состояния. Т.к. если нажать кнопку и удерживать ее дольше времени на антидребезг, то может проскочить дребезжание при отжатии кнопки. как-то так.
@channeltovar
@channeltovar 2 жыл бұрын
спасибо теперь надо сообразить как работает гирлянда и попытаться повторить в качестве урока
@Jackson_Sam
@Jackson_Sam 7 жыл бұрын
Спасибо! Всё супер!
@xxx166
@xxx166 7 жыл бұрын
Крутой канал все понятно и доступно, уважение !!!!!!!!!!!!!!!!!!!!!!! так держать, тебя ждет большое успех!!!! Когда следующие видосы ?
@ArduNotes
@ArduNotes 7 жыл бұрын
+David Poshelyk осенью
@valery4653
@valery4653 7 жыл бұрын
Расскажи, пожалуйста, как самому написать библиотеку для ардуино.Думаю, многим будет интересно.
@junyjell8614
@junyjell8614 6 жыл бұрын
СПАСИБО! НАКОНЕЦТО КНОПКА ЗАРАБОТАЛА
@НатльяАлмосова
@НатльяАлмосова 2 жыл бұрын
спасибо за урок
@Vetalfoto
@Vetalfoto 5 жыл бұрын
Спасибо за классное видео. А как обрабатывать несколько разных кнопок?
@bitbanan4ik766
@bitbanan4ik766 3 жыл бұрын
На разные порты подключать кнопки от земли, либо можно помучаться и сделать все кнопки на аналоговый порт(разное напряжение - разный сигнал)
@kanjosidr
@kanjosidr 6 жыл бұрын
Отсылку оценил, спасибо :D
@gflviv3917
@gflviv3917 7 жыл бұрын
Алекс, привет! Хочу предложить тебе крутую идею для нового видео. В чем суть: прибор на ардуино который будет считать витки, сделанные намоточным станком и выводить их на экран, но при кручении намоточной болванки в одну сторону ардуино будет прибавлять витки, а при кручении в обратную отнимать их. Я думал об этом и вот, к чему дошёл: Появилась идея использовать 2 датчика холла таким образом, чтобы при считывании последовательного сигнала сначала с первого датчика, а потом з второго ардуина понимала , что нужно прибавить виток, а если наоборот (сначала с второго а потом с первого), то убавить. Или как-нибудь механически передавать информацию о стороне кручения болванки на ардуину. Думаю эта идея тебе понравиться. Отпиши мне что думаешь об этом. (или помоги советом)))) Надеюсь на твою помощь.
@madday6968
@madday6968 7 жыл бұрын
Алекс покажи пожалуйста как соединить 3 ардуинки нано для увеличения числа каналов (P.S. можно сделать гексакоптер с зажиганием ракет )
@ИмяФамилия-э4ф7в
@ИмяФамилия-э4ф7в 3 жыл бұрын
Звучит по экстремистски.
@olegonyxov8733
@olegonyxov8733 7 күн бұрын
ничесе 4 строчки кода раскатал ... но в остальном молодец👍
@fensrg
@fensrg Жыл бұрын
2:53 первое условие выполняется кнопка нажата, флаг не поднят -> поднимаем флаг ( в этот момент пользователь отпускает кнопку и мы попадаем на второе условие конопка отпущена флаг поднят мы попадаем во второе условие и снимаем флаг... тут вместо if + if должно быть else if или elseif в зависимости от языка...
@НикитаДоронин-р6к
@НикитаДоронин-р6к 6 жыл бұрын
Сделай пожалуйста видео про графику.Что-бы ардуино по желанию могла рисовать на экране.
@igorpr.8188
@igorpr.8188 2 жыл бұрын
Класс! Спасибо большое!
@Vektor560
@Vektor560 8 ай бұрын
Алгоритм программы интересный но у меня не сработал . И я немного исправил : boolean butt_flag=0; boolean butt; void setup() { pinMode(3,INPUT_PULLUP); pinMode(13, OUTPUT); Serial.begin(19200); } void loop() { butt= !digitalRead(3); if(butt==1&&butt_flag==0){butt_flag=1; Serial.print(" НАЖАТА"); digitalWrite(13,HIGH);} if(butt==0&&butt_flag==1){butt_flag=0; Serial.print(" НЕ НАЖАТА"); digitalWrite(13,LOW);} } Очень интересный урок большёе спасибо🥰😀
@Paramore1999
@Paramore1999 3 жыл бұрын
Гдето здесь должна быть шутка про батт-плаг))
@SergeyKardakov
@SergeyKardakov 7 жыл бұрын
Привет. Ты так классно все разжевываешь! Можешь запилить видео по созданию суточного таймера для включения-выключения света на несколько каналов? Таких видео много, но они какие-то неполные.. Авторы показывают конечный результат, и только...
@PoMaHbl4_557
@PoMaHbl4_557 3 жыл бұрын
Помогите!)) На Ардуино уно данный скетч не работает как надо... То есть при работе с консолью всё как положено: выводит надписи в соответствии с нажатием/отпусканием кнопки, а при попытке влепить туда управление светодиодом - кнопка срабатывает один раз, при чём сразу на нажатие и отпускание (даже если кнопку нажал и не отпускал) и на этом всё зависает. При этом если из кода исключить управление светодиодом, то в консоли кнопка работает согласно коду (уроку). В чём может быть проблема? пробовал как свой код, так и Alex_Gyver (который скачал и не менял) - результат одинаковый
@Radio-hobby
@Radio-hobby 7 жыл бұрын
Автор, хотелось бы еще увидеть переключение команд (режимов работы) одной кнопкой , ну к примеру, нажал кнопку, бегущий огонь, еще раз нажал кнопку бегущая тень и так далее, почему-то многие, кто делает подобные обучающие ролики эту функцию игнорируют.
@dmitrij34
@dmitrij34 7 жыл бұрын
Потому, что это задача для вас. Ну тривиально же. Создаём ещё одну переменную с числовым значением, которая будет в себе хранить статус ващей программы 0 - Огоньки выключены, 1 - Моргают, 2 - бегают. Далее в функции loop по нажатию кнопки меняем значение переменной, а ещё ниже в loop чекаем if'ом в каком состоянии сейчас переменная и ведём себя соответственно (ну а как сами режимы сделать я надеюсь вы знаете. Можно например по времени отсчитывать и т.д). Да, я не рассказал про прерывания, захотите, сами найдёте. Но начинайте с этого.
@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 типа нажатий - одиночное, двойное, удержание и двойное нажатие с удержанием.
@dogger1687
@dogger1687 3 жыл бұрын
я просто немного изменил старую конструкцию, добавив провод и резистор на 220, и все заработало(программа старая)
@ComUaWOT
@ComUaWOT 5 жыл бұрын
Да бля, вот тупо переписал как у тебя код, но после первого нажатия и отпуска кнопки все идет по пи***е , постоянно пишет Button Released, и при нажатии кнопки программа просто останавливается... я хз что делать Помогите пожалуйста
@АлексейГодовиков-я7ю
@АлексейГодовиков-я7ю 4 жыл бұрын
У меня была такая же фигня из-за того что в первой проверке (if) переменной butt присвоил значение 0 а не 1. Чтобы сие понять вывел в монитор порта не только фразу "Button pressed" но и значения обеих переменных так и понял что затупил.
@pavel_light2179
@pavel_light2179 7 жыл бұрын
Сделай ещё один урок пожалуйста!!)
@Vadim_Dudin
@Vadim_Dudin 7 жыл бұрын
Pavel_Light он уехал минимум до августа, поэтому роликов за это время точно не будет.
@огурчикдоктораПопова-ъ2ъ
@огурчикдоктораПопова-ъ2ъ 7 жыл бұрын
Алекс!!! АУ, когда gyvermod!??
@nowva4374
@nowva4374 5 жыл бұрын
Прошу прощения, но ведь можно сделать так:пусть переменная баттон считывает значения на пине где есть кнопка. Если баттон равен 1, то переменная лед ивертируется и светодиод либо горит, либо нет, если переменная баттон равна 0, то происходит ничего и все. Смысл видео я понял, но ведь можно сократить
@ИмяФамилия-э4ф7в
@ИмяФамилия-э4ф7в 3 жыл бұрын
Пока кнопка нажата лампа светится. А нужно кнопку нажал - лампа включилась, отпустил - продолжает гореть. Снова нажал - погасла, отпустил - не горит.
@_jocker_games_
@_jocker_games_ 7 жыл бұрын
Кстати. Возможно создать рацию на ардуино на тех датчиках ? Ты говорил, что там до 2 мбит/сек, что для звука достаточно неплохо... Заодно можно попробовать сделать шифрование сигнала, чтоб даже на открытой частоте никто не мог поймать такую штуку. И да, если будешь делать, сделай её не тупо кирпичиком в руке, а микрофон и динамик вынеси в дешёвую блютуз гарнитуру. Нет, не по блютузу передавать, а просто использовать гарнитуру как корпус, крепящийся к уху, а от неё уже отвести провода к самой рации.
@alexeibelousov3279
@alexeibelousov3279 7 жыл бұрын
можно такое сделать, даже проекты были готовые
@ЕрмаковГерман
@ЕрмаковГерман 7 жыл бұрын
давай уж тогда делать всемирную сеть на ардуино
@TheoDu
@TheoDu 7 жыл бұрын
Нет, не получится ардуино не может самостоятельно обрабатывать качественный аудиосигнал
@_jocker_games_
@_jocker_games_ 7 жыл бұрын
А просто записывать сигнал а потом его передевать ? Не в режиме онлайн, а именно "записал - отправил" ?
@alexeibelousov3279
@alexeibelousov3279 7 жыл бұрын
зачем мудрить? все работает прекрасно, вот пример youtube. com /watch?v=Su49rQzo914 Только для рации нужно использовать модули передачи на 433кГц, что бы дальнобойные были, ну а музыку передавать бессмысленно, слишком слабенький ЦАП \ АЦП в ардуине
@kirillb.9322
@kirillb.9322 3 жыл бұрын
Именование переменных просто огонь. В след раз юзай butt_plug сразу
@titan-fu7iz
@titan-fu7iz 7 жыл бұрын
замутил токую вещь с пьезо пищялкой и о боги работает
@MakeFirePro
@MakeFirePro 7 жыл бұрын
Привет из Люберец :)
@murwi9675
@murwi9675 7 жыл бұрын
Алекс, привет! Покажи пожалуйста туториал по ИК приемнику.
@Pilya59
@Pilya59 7 жыл бұрын
Классно, более понятно, а возможно написать код, что бы был реверс двигателя, ну к примеру нажал кнопку без фиксации мотор закрутился в одну строну, отжал он остановился, снова нажимаем эту же кнопку, но он уже крутиться в другую сторону?! двигатель на 12 вольт, ну или кулер от компа
Уроки Arduino. Расширенное управление кнопкой
12:42
Заметки Ардуинщика
Рет қаралды 223 М.
У ГОРДЕЯ ПОЖАР в ОФИСЕ!
01:01
Дима Гордей
Рет қаралды 8 МЛН
Остановили аттракцион из-за дочки!
00:42
Victoria Portfolio
Рет қаралды 3,3 МЛН
SHAPALAQ 6 серия / 3 часть #aminkavitaminka #aminak #aminokka #расулшоу
00:59
Аминка Витаминка
Рет қаралды 820 М.
Цикл уроков по программированию на C++ для Arduino. Часть 1.
1:19:48
Arduino и прочие питомцы
Рет қаралды 354 М.
🛠️ТОП 15 САМОДЕЛОК 2019 [AlexGyver]
17:24
AlexGyver
Рет қаралды 1,8 МЛН
Уроки Arduino #7 - подключение светодиода
3:39
Заметки Ардуинщика
Рет қаралды 447 М.
🤖Я в шоке! ChatGPT пишет Arduino проекты
28:24
Arduino lessons - Servo control by arduino
11:17
Заметки Ардуинщика
Рет қаралды 853 М.
Простая беспроводная сеть датчиков на Arduino и 433 MHz
18:54
Заметки Ардуинщика
Рет қаралды 265 М.
У ГОРДЕЯ ПОЖАР в ОФИСЕ!
01:01
Дима Гордей
Рет қаралды 8 МЛН