Что бы там ни говорили "серьёзные дядьки-программисты", осознание того, что светодиод загорелся потому, что это микроконтроллер выполнил, написанный тобой, программный код, доставляет огромную радость! Алекс, спасибо за твои уроки! Смотрю и учусь потихоньку, восторгаясь открытиями :)
вы пишите не код, а СИ-образный скрипт. а уже среда компилирует его в код данного МК. с ей (среде) только известной степенью эффективности. если хочется писать код, то это ассемблер. разный, с кучей разных заморочек под разные МК.
@@fokinDim но ведь программа, написанная на языке ассемблера, - это тоже скрипт для ассемблера. Вот если хочется писать "настоящий код", тогда уже машинными кодами в бинарном виде. Все остальное так - детские поделки всяких ассемблер скриптеров-недоучек. А если по существу, так все эти ваши ужимки на программируемом чипе - это неэффективно, программы надо паять прямо в железе nand-гейтами, тогда работать будет быстро. Это точно тру.
@@agilov @agilov нет, ассемблер это не скрипт! это и есть машинный код определенного процессора/контроллера, просто в виде лучше читаемой мнемоники. например, эти записи совершенно тождественны. это одно и то же: org $A000 ld a, FF call $1000 A000: 3E A001: FF A002: CD A003: 00 A004: 10 A005: но я кажется понял, о чём вы: если вы выставляете кусок на асме (да хоть в 0x0000h кодах) среди скрипта в си-компиляторе приложений под операционные системы (!) и такой радостный думаете, что на этом куске процессор, для которого вы пишите реально откроет вам свои регистры, какие вы назначили, флаги, адресное пространство .. то хаха, скорее всего - нет. но это не отменяет факта, что ассемблер - это и есть машинный код.
@@fokinDim все верно ассемблер это не скрипт, ассемблер это программа, которая читает скрипт написанный на языке ассемблера, интерпретирует его и на выходе выдает последовательность машинных комманд уже на чистом машинном языке. Если мне не верите - почитайте вот эту статью например: ru.wikipedia.org/wiki/Ассемблер. Прошу прощения, конечно, что срываю покровы и разрываю шаблоны, но файл с текстом на языке ассемблера это скрипт и с этим ничего не поделать, придется с этим жить.
Когда я первый раз запрограммировал моргание светодиода лет 20 назад, и он заморгал, я поумал, что это совпадение, и на этой ноге всегда все моргает и лишь изменив delay я понял что я повелитель моргания
Самое главное даже ребёнку в 12 лет все понятно. Я поражаюсь до них доходит быстрее, чем до некоторых взрослых. Классно приподносишь материал. Респект!
Так детский мозг более пластичен и готов ко всему новому. Я помню в младших классах запоминала английские слова чуть ли не с первого раза, а сейчас так не могу, надо напрягаться немного.
Где были эти уроки, когда я решился попробовать дуинки и писать скетчи... Без понимания простых вещей даже сайт с описанием команд не особо помогал. А теперь вот смотрю выпуски, имея маленькое понимание происходящего, да познаю новое) большое спасибо!
Спасибо за видео. Можно дополнить, что если включить между А5 и 5+ резистор (по примеру резистора между А5 и GND), то получим INPUT_PULLUP с внешним резистором (А5 "притянется" к 5+). То же самое произойдет со всеми остальными входами, они перестанут "дребезжать" и притянутся туда куда включат резистор.
Алекс, спасибо за материал. Только по синтаксису хотел бы тебе на заметку сказать, что есть практики написания "читаемого" кода, в котрых рекомендуется, например, в обязательном порядке, ставить фигурные скобки для конструкций иф-элс, и прочее-прочее (есть дажее штуки типа tslint и типа того, которые подсвечивают "кривой" синтаксис в средах разработки).... В том числе различные принципы типа DRY и тому подобное. Думаю тебе, как человеку увлеченному, полезно будет ознакомиться, хотя бы для общего развития + опять же плюс в карму от бородатых трукодеров :) Код станет более читаемый и понятный. Это не претензия и не нравоучение - просто заметка бывалого программиста :) В остальном - спасибо! Большое дело делаешь, и делаешь хорошо!
Это все правильно и хорошо, но Arduino IDE просто заставляет ненавидеть чистый код со всеми ее через задницу работающими отступами, глючащими подсказками и прочими "прелестями".
В самом последнем скетче: строку boolean button1 и далее - упразднить. Cледующую за ней строку тоже стоит упразднить (ибо 13 порт - выходной, и зачем мы с него что-то читаем - непонятно). Условие if - упразднить. добавить digitalWrite(13,!digitalRead(A5));
Одно понять не могу, на 4:37 у автора пропиcан pinMode(13, INPUT); И при запуске COM порта на button2 нулевое значение, а сведиот L не светиться, у меня также прописан код,только (МК UNO), но при запуске светиод L загорается и button2 выдает значение 1. C чем это связано?
Блин, ну ты даешь! Я поставил видео на паузу, написал код как ты показал - так все начало глючить при приближении руки к плате. Полез в нет, ничего толком не нашел, задолбал после посетителей форума амперки - и тогда нашел эти два варианта с резистором и через пуллап. После этого как все начало получатся продолжил смотреть ролик - и ты все через 30 сек сказал!)
😅 отлично но здесь надо было добавить в описании подтягивающий резистор входу Ардуино. Но и так понятно. Но выходным ненужны ли стягивающие? Потому что они тоже могут давать наводки или нет? Потому что если один выход равно 1 а другой выход 0. То будут ли неверные показатели??😊
отлично работает от USB, но когда питаю от кроны 9В через входы Vin и GND то не работает. Как правильно подключать кнопку при использовании внешнего питания?
Алекс, дай пожалуйста ссылку, чтобы почитать и понять, зачем и когда и насколько Ом подключать резисторы?! (что здесь, что при работе с масфет-транзисторами - не пойму) Буду очень признателен!
Для новичков. Итоговый код будет более оптимален в таком виде: boolean but; void setup() { Serial.begin(9600); pinMode(A5, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop() { if (but == digitalRead(A5)) { but = !digitalRead(A5); digitalWrite(13, but); Serial.print("Button: ");Serial.println(but); }
} Не будет постоянной отправки данных на 13 пин и в консоль, в которой не будет постоянного мерцания значений.
Алекс, ты МОЛОДЕЦ!!! У меня есть то набор, который ты показывал(или рекламировал))) и ещё дополнительно куча барахла к нему. Вот я в JavaScript - прошареный паца, а в c++ вообще 0. Половину того, что ты рассказываешь я знаю. Только немного отличается.
Спасибо. Но хотелось бы обьяснения почему с подключением резистора сигнал начал читаться нормально. И почему когда мы используем PULLUP нам не нужны +5V, а вместо этого мы подключаем к земле. Откуда у нас тогда высокий сигнал идет?
Я с тобой не соглашусь по портам. Один порт объединяет несколько пинов. На ардуино нано доступно три порта: PORTD(цифровые пины D0-D7), PORTB(цифровые пины D8-D13), PORTC(аналоговые пины А0-А5). Вместо того, чтобы возиться с каждым пином по отдельности, иногда легче задавать значение всего порта сразу, к примеру, при управлении семи-сегментным дисплеем в режиме развёртки напрямую от ардуино.
Вот информация на официальном сайте arduino: www.arduino.cc/en/Reference/PortManipulation Следует заметить, что управление портами напрямую работает быстрее, нежели digitalWrite или digitalRead, об этом написано тут, например: www.billporter.info/2010/08/18/ready-set-oscillate-the-fastest-way-to-change-arduino-pins/
Спасибо огромное!!!! Я новичек и мне дико понравилось особенно в вашем изложении. Не откажите в любезности у меня два вопроса 1 - как сделать что бы светодиод моргнул один раз при включении? 2- как написать скетч что бы светодиод загорался только в том случае когда на трех входах единица а если хотть на одном ноль то не загорался? Возможно это банально но мне пока сложно. Буду очень рад если поможете.
@@Bagasl Нет. КЗ это короткое замыкание, при котором по элементам цепи идёт недопустимо большой ток, в следствии чего как правило элемент выходит из строя. А резистор ограничивает этот ток до приемлемых величин
Здравствуйте, задали такое задание, нужно использовать три тумблера или кнопки (Т1, Т2, Т3) и три разноцветных светодиода (красный, жёлтый и зелёный). Включение светодиодов должно определяться состоянием тумблеров в соответствии с таблицей вариантов заданий. Условия включения красного светодиода -Одновременно включены 1 и 2 тумблеры или выключен 3 тумблер. Условия включения жёлтого светодиода - Одновременно включены 1 и 3 тумблеры. Условия включения зелёного светодиода - Включён 2 тумблер. Помогите разобраться с кодом пожалуйста. Тут основано на булевых переменных, код необходимо писать исходя из таблицы истинности(имеется).
Привет, Алекс! Никак не могу понять почему на моменте 4:52 у тебя на второй кнопке сигнал равен нулю. Ведь ты убрал старую прошивку, на которой подавал на D13 низкий сигнал. Разве светодиод на плате не должен снова гореть и сигнал быть единицей на Button2 ?
Недавно узнал: "тактовая кнопка" на самом деле ТАКТИЛЬНАЯ кнопка. )) Т.е. такая кнопка, которая отзывается кликом на нажатие (обеспечивает оператору тактильные ощущения = осязание события нажатия кожей пальца ). Даже не знаю, зачем я всё это написал. Всё равно всё останется как есть. +1 за труды, всех благ!
У проводов есть паразитная емкость. Убираем провод - заряд остаётся. С резистором по другому - у него огромное сопротивление, и когда подключены настоящие 5 вольт, то он не может спустить весь ток на землю (ардуино видит высокий сигнал), но когда мы выдернули провод - резистор спускает маленький остаточный заряд на землю (ардуино видит слабый сигнал 0v или LOW). С pullup резистором всё примерно так же, но притягиваем не к земле, а к 5 вольтам. Как то так.
+kkjey wheiss он не убирает ошибки. Он устанавливает на пине четко понятное для микроконтроллера напряжение. Без подтяжки пин висит в воздухе, и ловит всякие наводки
Всё очень интересно и понято. Спасибо большое за урок! Кстати, у меня одного проблема с контактами, когда подключаю к белой плате? Контакт то есть, то его нет. Если делаю всё напрямую, то норм, а на плате как-то странно...
Алекс, а какая мощность рассеивания у встроенного резистора (ВР) в Ардуинках? Я правильно понимаю, что ВР всегда будет работать штатно (ведь ток управления копеечный должен быть...), и можно все пины управления/чтения на всех навешанных модулях притягивать через него?
Алекс, а что по поводу встроенной поддтяжки входов, есть ограничения? Читал рассуждения на тему выжигания ног МК... Не будет ли надежнее использовать внешние резисторы? Что думаешь на этот счет?
Быстро все объясняешь, на скорости 0.75 только можно уловить суть. А так отличные видео, с книгой по ардуино сидел неделю, так и ничего не понял, а тут все понятно. Спасибо, ждем новые видео. С термодатчиками бы что нибудь и датчиками влажности.
Непередаваемое ощущение, когда впервые зажигаешь светодиод на плате) Спасибо) Кодревью: Можно без if/else писать: --------------------------------------------------------------------------------- boolean buttonIsPressed = false; void setup() { pinMode(A0, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop() { buttonIsPressed = !digitalRead(A0); digitalWrite(13, buttonIsPressed); } --------------------------------------------------------------------------------- В данном случае, можно и переменную не объявлять, тогда код будет выглядеть так: --------------------------------------------------------------------------------- void setup() { pinMode(A0, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop() { digitalWrite(13, !digitalRead(A0)); } ---------------------------------------------------------------------------------
Хотелось бы подробнее узнать о нюансах ардуинки и основах электроники, для понимания, а не для запоминания. Например, не понятно откуда берётся питание 5v в последней схеме на входе pinMode(A5, INPUT_PULLUP). Как я понял, вписывая "INPUT_PULLUP", мы не просто добавляем подтягивающий резистор, а ещё напряжение 5v на входной пин. То есть, ардуинка замыкает 5v и пин и постоянно выдаёт логическую единицу на любом пине, где прописано "INPUT_PULLUP".
Пулап и есть подключение (подтягивание) пина внутренним резистором к пяти вольтам. То есть на пине они есть и стабильно читаются как логическая единица. Однако при прямом замыкании пина на землю кнопкой на нем получается логический ноль.
Почему то у меня D12 и D13 по умолчанию в ком порте выдают 1, даже в сетапе вводил digitalWrite(13, 0) после компиляции и загрузке все равно выдает 1 и зажигает светодиод. Зато с А5 все нормально, работает как в видео...
Алекс, я так обрадовался когда ты начал делать эти уроки. Ждал каждый, но пока они выходили выучил всё сам. Перерывы чертовски долгие. Я понимаю тебе сложно, но выбери определённую тему. Страдают все! И люди с квадрокоптерами и всякие оружейники и Ардуинщики и чёрт возьми даже вейперы!!!
Здравствуйте! Не могли бы вы сделать что-то типа сигнализации, работающей через модуль NRF24L01 с вибродатчиком? При вибрации идет сигнал на ардуино и загорается светодиод на 3-4 секунды. Буду благодарен! Смотрю все ваши видео, так вот и сам хочу что-то смастерить.
Здоров Саня! Такой вопрос. Как к одной ардуино, (допустим нано) подключить и реле на 8 выходов, от 8 ми кнопок, и градусник, и сервопривод, от резистора, все одновременно. имею в виду как скетч выглядит...
Вот это совсем другой вид уроков! я заново все учу и выкидую стили других уроковедов! Я думал что кнопке нужно +5 вольт всегда на ее распознавание и подачи тока на цель. светодиод скажим!
(5:00) Может статься, что у меня NANO слишком уж китайская, но в моем случае определение цифрового сигнала происходит корректно без резистора и без INPUT_PULLUP
Алекс, давно за твоей работой наблюдаю, молодец. Спасибо тебе. У меня вопрос такой покажи как выводить тактовую частоту процессора разделив её на переменную равную от 2 до 128. Спасибо
If (button1 = 1) digitalWrite(13, 1); else digitalWrite(13, 0); От этих строк меня, програмиста с двадцатилетним стажем, ПОКОРОБИЛО! Оно, конечно, работает, но лучше написать просто: digitalWrite(13, button1);
привет, Алекс. У меня плата ардуино уно, код в IDE точно такой же как у тебя. Ардуинка прошита этим кодом, подключена, но не работает с кнопкой это можно как нибудь пофиксить или нет?
Алекс, у меня Arduino NANO. Я установил все программы, всё работает, но у меня не горит светодиод зелёным на ардуинке как у Вас на видео. Это проблема или нет?
@@serega3214 Индикаторная лампочка L у порта 13 имеет неопределенное напряжение без установки подтягивающего резистора (INPUT_PULLUP в коде), то есть значения могут прыгать от 0 до ~ 1В. Вы тем более у компа наверняка сидите, а это источник помех. Можно замерить вольтметром на "чистой" программе контакты порта и земли, там не всегда 0. Короче не заморачивайтесь, главное чтобы с подтягивающих резистором все работало.
@@ПавелОсокин-ш3г, у меня после кодключения подтягивающих резисторов всё равно значение прыгает 1-0. Юзаю плату Arduino DUO. Может знаете, с чем это связано? Может из-за того, что резисторы на самой плате слабые, ибо когда подсоединяю дополнительно, то проблема пропадает...
@@artemkhrb3071 Вы про 13 пин говорите? Просто достаточно давно сталкивался с такой проблемой у UNO с 13-й индикаторной лампочкой, искал в интернете почему у меня такое происходит, даже подумал, что плата сломана) У нее (мелкой лампочки) там прикол в строении, к тому же плата же не оригинальная (хотя проблем у меня не было, только с подключением - драйвер скачать). Да и на самом деле пофигу) На практике вы скорее всего будете выводить на отдельный пин обычный 2-вольтовый красненький светодиод (нагрузка - ключевое слово) и использовать INPUT_PULLUP в коде, когда захотите отследить нажатие кнопок например. Проблем не будет.
Алекс, вопрос. Ты говоришь, что в этом видео речь о цифровых пинах, но выдаёшь ток на аналоговом. Пул_ап резистор он один для все выходов, или у каждого выхода свой? И не совсем понятно, декларируя я могу сказать int a = A5 но для диджитал D5 писать не надо, откуда система знает что int b = 5 это константа b, а не выход 5-ого пина?
Цифровой пин это такое себе условное название, большинство пинов с индексом А также могут работать в режимe Input/Output. Подтягивающий резистов свой для каждого пина. А5 в системе это имя постоянной переменной, значение которой задано 19; вызовите контекстное меню на А5(правая кнопка мыши) и выберите "Go to Definition"
Алекс привет. Мне кажется последний пример не совсем правильный. Я вот сижу тестирую и получается, что ты проверяешь на 13 пине все, а он так и так подключен к светодиоду. Если убрать все из функции loop, то он все равно будет гаснуть и загораться. Не важно даже, что написано в pinMode. У меня не кнопка, а переключатель.
Жаль с универом у тебя нет времени на уроки ) пока ждал уже сам разобрался с шаговиком, лсд и некоторыми другими штуками ) Но все равно то-то полезное, но узнаю. Благодарю )
Что бы там ни говорили "серьёзные дядьки-программисты", осознание того, что светодиод загорелся потому, что это микроконтроллер выполнил, написанный тобой, программный код, доставляет огромную радость! Алекс, спасибо за твои уроки! Смотрю и учусь потихоньку, восторгаясь открытиями :)
вы пишите не код, а СИ-образный скрипт. а уже среда компилирует его в код данного МК. с ей (среде) только известной степенью эффективности.
если хочется писать код, то это ассемблер. разный, с кучей разных заморочек под разные МК.
@@fokinDim но ведь программа, написанная на языке ассемблера, - это тоже скрипт для ассемблера. Вот если хочется писать "настоящий код", тогда уже машинными кодами в бинарном виде. Все остальное так - детские поделки всяких ассемблер скриптеров-недоучек. А если по существу, так все эти ваши ужимки на программируемом чипе - это неэффективно, программы надо паять прямо в железе nand-гейтами, тогда работать будет быстро. Это точно тру.
@@agilov @agilov нет, ассемблер это не скрипт! это и есть машинный код определенного процессора/контроллера, просто в виде лучше читаемой мнемоники.
например, эти записи совершенно тождественны. это одно и то же:
org $A000
ld a, FF
call $1000
A000: 3E
A001: FF
A002: CD
A003: 00
A004: 10
A005:
но я кажется понял, о чём вы: если вы выставляете кусок на асме (да хоть в 0x0000h кодах) среди скрипта в си-компиляторе приложений под операционные системы (!) и такой радостный думаете, что на этом куске процессор, для которого вы пишите реально откроет вам свои регистры, какие вы назначили, флаги, адресное пространство .. то хаха, скорее всего - нет.
но это не отменяет факта, что ассемблер - это и есть машинный код.
@@fokinDim все верно ассемблер это не скрипт, ассемблер это программа, которая читает скрипт написанный на языке ассемблера, интерпретирует его и на выходе выдает последовательность машинных комманд уже на чистом машинном языке. Если мне не верите - почитайте вот эту статью например: ru.wikipedia.org/wiki/Ассемблер. Прошу прощения, конечно, что срываю покровы и разрываю шаблоны, но файл с текстом на языке ассемблера это скрипт и с этим ничего не поделать, придется с этим жить.
@@fokinDim А вы - душите без особой на то причины
не думал, что когда-то буду так радоваться загорающемуся диоду на микросхеме
ааааа я аж плакал когда прочитал +++++++++++++++++++++++
@@ИльяЕвгеньевич-б9ь ))))))))))))))))
Добрый день! Сделайте пожалуйста видео как сделать сервотестер штобы углы отклонения сервомашинки можно было видеть на экране монитора.
Когда я первый раз запрограммировал моргание светодиода лет 20 назад, и он заморгал, я поумал, что это совпадение, и на этой ноге всегда все моргает и лишь изменив delay я понял что я повелитель моргания
я который затрахался искать нужный резистор, выпаивал его с платы...... а потом мне сказали про встроенный
Самое главное даже ребёнку в 12 лет все понятно. Я поражаюсь до них доходит быстрее, чем до некоторых взрослых. Классно приподносишь материал. Респект!
какие умны дети мне 40 лет нихрена не понятно
Так детский мозг более пластичен и готов ко всему новому. Я помню в младших классах запоминала английские слова чуть ли не с первого раза, а сейчас так не могу, надо напрягаться немного.
Где были эти уроки, когда я решился попробовать дуинки и писать скетчи... Без понимания простых вещей даже сайт с описанием команд не особо помогал. А теперь вот смотрю выпуски, имея маленькое понимание происходящего, да познаю новое) большое спасибо!
Какой же ты молодец, фантастически качественный контент! Тысячу раз благодарю!
Автор, огромная благодарность тебе за твои уроки. Все понятно и приятно слушать. Обнял!
приподнял
Спасибо! Благодоря этим уроком время от времени делаю всякие полезные штучки!
Во вот таких уроков по больше, для меня новичка очень понятно стала работа кнопки
Спасибо за видео.
Можно дополнить, что если включить между А5 и 5+ резистор (по примеру резистора между А5 и GND), то получим INPUT_PULLUP с внешним резистором (А5 "притянется" к 5+). То же самое произойдет со всеми остальными входами, они перестанут "дребезжать" и притянутся туда куда включат резистор.
спустя 2 дня и кучи нервов этот чертов светодиод начал загораться с кнопки!!!!! паск*уда)))))
Огрооомнейшее спасибо, Алекс!
спасибо за input_pullup а то я уже замучился с этими резисторами (много кнопок), теперь буду знать
Я заказал с твоего сайта ардуинок пару тройку штук, уже 3 недели едут, думаю скоро доедут, ох как не терпится повтоять за тобой.
Спасибо Гайвер сделал урок счастья до конца дня.
Алекс, спасибо за материал. Только по синтаксису хотел бы тебе на заметку сказать, что есть практики написания "читаемого" кода, в котрых рекомендуется, например, в обязательном порядке, ставить фигурные скобки для конструкций иф-элс, и прочее-прочее (есть дажее штуки типа tslint и типа того, которые подсвечивают "кривой" синтаксис в средах разработки).... В том числе различные принципы типа DRY и тому подобное. Думаю тебе, как человеку увлеченному, полезно будет ознакомиться, хотя бы для общего развития + опять же плюс в карму от бородатых трукодеров :) Код станет более читаемый и понятный. Это не претензия и не нравоучение - просто заметка бывалого программиста :) В остальном - спасибо! Большое дело делаешь, и делаешь хорошо!
vsem pohui
@@llllNEOllllchannel я не все, мне нужны скобки и комментарии.
Это все правильно и хорошо, но Arduino IDE просто заставляет ненавидеть чистый код со всеми ее через задницу работающими отступами, глючащими подсказками и прочими "прелестями".
В самом последнем скетче: строку boolean button1 и далее - упразднить. Cледующую за ней строку тоже стоит упразднить (ибо 13 порт - выходной, и зачем мы с него что-то читаем - непонятно).
Условие if - упразднить.
добавить digitalWrite(13,!digitalRead(A5));
+Chuviw да знаю. Это не готовый код, это просто пример работы
Одно понять не могу, на 4:37 у автора пропиcан pinMode(13, INPUT);
И при запуске COM порта на button2 нулевое значение, а сведиот L не светиться, у меня также прописан код,только (МК UNO), но при запуске светиод L загорается
и button2 выдает значение 1. C чем это связано?
Блин, ну ты даешь! Я поставил видео на паузу, написал код как ты показал - так все начало глючить при приближении руки к плате. Полез в нет, ничего толком не нашел, задолбал после посетителей форума амперки - и тогда нашел эти два варианта с резистором и через пуллап. После этого как все начало получатся продолжил смотреть ролик - и ты все через 30 сек сказал!)
Ураа! Новая серия! Божеж, ты можешь, прям счастье!
Ты великий ардуинщик, желаю тебе удачи
Алекс) спасибо за труды!
Алекс, расскажи пожалуйста подробнее про интерфейс I2C. Как подключить к ардуино сразу несколько устройств по данному интерфейсу.
Жаль, редко уроки. Пока следующего ждёшь- предыдущий забудешь))
+Юрий Замятин очень время быстро летит. Вы сидите ждете, а я как будто вчера монтировал 4ый. Универ, мать его
в армию пойдешь долг отдавать? тогда вообще долго ждать придется. а потом и вовсе забить можешь на канал.
Алекс, я понимаю, учёба- основное.
+Donald Trump нет, я лейтенантом выйду
+Юрий Замятин учеба не основное. Просто никто не любит получать пиздюлей и тройки
Добротные уроки, спасибо!
4:38 странно, у меня изначально не по нулям, а с лева 1, а справа 0. Почему так?
у меня тоже, не могу найти проблему
у меня почему-то, пока к пину не подключить нагрузку( светодиод например) то в мониторе показывает 1 на цифровых пинах
та же проблема
😅 отлично но здесь надо было добавить в описании подтягивающий резистор входу Ардуино. Но и так понятно. Но выходным ненужны ли стягивающие? Потому что они тоже могут давать наводки или нет? Потому что если один выход равно 1 а другой выход 0. То будут ли неверные показатели??😊
отлично работает от USB, но когда питаю от кроны 9В через входы Vin и GND то не работает. Как правильно подключать кнопку при использовании внешнего питания?
Сделай ,пожалуйста, следующий урок по подключению дисплеев к ардуино и их программированию
чего
Да сделай
@@skyhobby611 а что такого
Алекс, дай пожалуйста ссылку, чтобы почитать и понять, зачем и когда и насколько Ом подключать резисторы?! (что здесь, что при работе с масфет-транзисторами - не пойму) Буду очень признателен!
Для новичков. Итоговый код будет более оптимален в таком виде:
boolean but;
void setup() {
Serial.begin(9600);
pinMode(A5, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
if (but == digitalRead(A5)) {
but = !digitalRead(A5);
digitalWrite(13, but);
Serial.print("Button: ");Serial.println(but);
}
}
Не будет постоянной отправки данных на 13 пин и в консоль, в которой не будет постоянного мерцания значений.
Объясните пожалуйста, для чего нужны циклы if, если можно на светодиод напрямую выводить состояние с кнопки?
Алекс, ты МОЛОДЕЦ!!! У меня есть то набор, который ты показывал(или рекламировал))) и ещё дополнительно куча барахла к нему. Вот я в JavaScript - прошареный паца, а в c++ вообще 0. Половину того, что ты рассказываешь я знаю. Только немного отличается.
Мужик, ты крутой, спасибо тебе!
БОГ ЕСТЬ ЛЮБИТЕ БОГА И СВОИХ БЛИЖНИХ!!!☦❤🙏
Спасибо, все очень понятно. Очень хорошо объяснил
Спасибо. Но хотелось бы обьяснения почему с подключением резистора сигнал начал читаться нормально. И почему когда мы используем PULLUP нам не нужны +5V, а вместо этого мы подключаем к земле. Откуда у нас тогда высокий сигнал идет?
Высокий сигнал идёт с pullup
Я с тобой не соглашусь по портам. Один порт объединяет несколько пинов. На ардуино нано доступно три порта: PORTD(цифровые пины D0-D7), PORTB(цифровые пины D8-D13), PORTC(аналоговые пины А0-А5). Вместо того, чтобы возиться с каждым пином по отдельности, иногда легче задавать значение всего порта сразу, к примеру, при управлении семи-сегментным дисплеем в режиме развёртки напрямую от ардуино.
+Engie вот такой инфы я еще нигде не видел....
Вот информация на официальном сайте arduino:
www.arduino.cc/en/Reference/PortManipulation
Следует заметить, что управление портами напрямую работает быстрее, нежели digitalWrite или digitalRead, об этом написано тут, например:
www.billporter.info/2010/08/18/ready-set-oscillate-the-fastest-way-to-change-arduino-pins/
где-то есть видео как ускорить программы написанные в "ардуино иде" в 20 раз.
Спасибо огромное!!!! Я новичек и мне дико понравилось особенно в вашем изложении. Не откажите в любезности у меня два вопроса 1 - как сделать что бы светодиод моргнул один раз при включении? 2- как написать скетч что бы светодиод загорался только в том случае когда на трех входах единица а если хотть на одном ноль то не загорался? Возможно это банально но мне пока сложно. Буду очень рад если поможете.
PULLUP можно использовать один раз? Или сколько угодно, и не перегрузится ли резистор?
10ком, даже если 20 портов не страшно, до 50ма не дойдет
@@МаксЛычагин-ъ5э ты, я смотрю, шаришь в электронике, резистор для чего там нужен?
@@Bagasl чтобы не спалить плату, если + 5 вольт соединить с - 5 вольт (землёй или gnd) без резистора получится короткое замыкание.
@@deceiveitself7275 с резистором же такое же КЗ просто ток меньше, не?
@@Bagasl Нет. КЗ это короткое замыкание, при котором по элементам цепи идёт недопустимо большой ток, в следствии чего как правило элемент выходит из строя. А резистор ограничивает этот ток до приемлемых величин
Здравствуйте, задали такое задание, нужно использовать три тумблера или кнопки (Т1, Т2, Т3) и три разноцветных светодиода (красный, жёлтый и зелёный). Включение светодиодов должно определяться состоянием тумблеров в соответствии с таблицей вариантов заданий.
Условия включения красного светодиода -Одновременно включены 1 и 2 тумблеры или выключен 3 тумблер.
Условия включения жёлтого светодиода - Одновременно включены 1 и 3 тумблеры.
Условия включения зелёного светодиода - Включён 2 тумблер.
Помогите разобраться с кодом пожалуйста. Тут основано на булевых переменных, код необходимо писать исходя из таблицы истинности(имеется).
Привет, Алекс! Никак не могу понять почему на моменте 4:52 у тебя на второй кнопке сигнал равен нулю. Ведь ты убрал старую прошивку, на которой подавал на D13 низкий сигнал. Разве светодиод на плате не должен снова гореть и сигнал быть единицей на Button2 ?
тоже самое, плюсую
Недавно узнал: "тактовая кнопка" на самом деле ТАКТИЛЬНАЯ кнопка. )) Т.е. такая кнопка, которая отзывается кликом на нажатие (обеспечивает оператору тактильные ощущения = осязание события нажатия кожей пальца ). Даже не знаю, зачем я всё это написал. Всё равно всё останется как есть. +1 за труды, всех благ!
Не совсем понял про подтягивающий резистор, точнее про принцип его работы. Почему он убирает "ошибки"?
У проводов есть паразитная емкость. Убираем провод - заряд остаётся. С резистором по другому - у него огромное сопротивление, и когда подключены настоящие 5 вольт, то он не может спустить весь ток на землю (ардуино видит высокий сигнал), но когда мы выдернули провод - резистор спускает маленький остаточный заряд на землю (ардуино видит слабый сигнал 0v или LOW). С pullup резистором всё примерно так же, но притягиваем не к земле, а к 5 вольтам. Как то так.
+kkjey wheiss он не убирает ошибки. Он устанавливает на пине четко понятное для микроконтроллера напряжение. Без подтяжки пин висит в воздухе, и ловит всякие наводки
когда на практике пришло осознание нахера подтягивать к земле резистором питание, прям кайфанул :-D
Всё очень интересно и понято. Спасибо большое за урок!
Кстати, у меня одного проблема с контактами, когда подключаю к белой плате? Контакт то есть, то его нет. Если делаю всё напрямую, то норм, а на плате как-то странно...
Да, контакты изнашиваются, можно их достать поджать
На 5:15 пин D13 работает корректно потому что по умолчанию на схеме к нему подключен светодиод через резистор?
Алекс, а какая мощность рассеивания у встроенного резистора (ВР) в Ардуинках? Я правильно понимаю, что ВР всегда будет работать штатно (ведь ток управления копеечный должен быть...), и можно все пины управления/чтения на всех навешанных модулях притягивать через него?
Спасибо за помощь) благодаря тебе все заработало)
А я вот написал digitalWrite(6, button); и результат такой же, как и у тебя. светодиод загорается при нажатии кнопки.
у меня короче.
Алекс, а что по поводу встроенной поддтяжки входов, есть ограничения? Читал рассуждения на тему выжигания ног МК... Не будет ли надежнее использовать внешние резисторы? Что думаешь на этот счет?
+Вячеслав Бард думаю что такой херни у меня никогда не случалось
Быстро все объясняешь, на скорости 0.75 только можно уловить суть. А так отличные видео, с книгой по ардуино сидел неделю, так и ничего не понял, а тут все понятно. Спасибо, ждем новые видео. С термодатчиками бы что нибудь и датчиками влажности.
Я смотрю на скорости 2
Сударь, вы изумительные видео снимаете. Я восхищён до охуения. Премного благодарю вас.
Непередаваемое ощущение, когда впервые зажигаешь светодиод на плате) Спасибо)
Кодревью:
Можно без if/else писать:
---------------------------------------------------------------------------------
boolean buttonIsPressed = false;
void setup()
{
pinMode(A0, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop()
{
buttonIsPressed = !digitalRead(A0);
digitalWrite(13, buttonIsPressed);
}
---------------------------------------------------------------------------------
В данном случае, можно и переменную не объявлять, тогда код будет выглядеть так:
---------------------------------------------------------------------------------
void setup()
{
pinMode(A0, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, !digitalRead(A0));
}
---------------------------------------------------------------------------------
спасибо за твои уроки трудновата но потихоньку вкуриваю
Лайк за зачётный видос!
Хотелось бы подробнее узнать о нюансах ардуинки и основах электроники, для понимания, а не для запоминания.
Например, не понятно откуда берётся питание 5v в последней схеме на входе pinMode(A5, INPUT_PULLUP). Как я понял, вписывая "INPUT_PULLUP", мы не просто добавляем подтягивающий резистор, а ещё напряжение 5v на входной пин. То есть, ардуинка замыкает 5v и пин и постоянно выдаёт логическую единицу на любом пине, где прописано "INPUT_PULLUP".
Пулап и есть подключение (подтягивание) пина внутренним резистором к пяти вольтам. То есть на пине они есть и стабильно читаются как логическая единица. Однако при прямом замыкании пина на землю кнопкой на нем получается логический ноль.
и я тоже в панике смотрю.. откуда ток если оба конца в минусе стоят... что за волшебство и откуда взялась инверсия...
Почему то у меня D12 и D13 по умолчанию в ком порте выдают 1, даже в сетапе вводил digitalWrite(13, 0) после компиляции и загрузке все равно выдает 1 и зажигает светодиод. Зато с А5 все нормально, работает как в видео...
А если подключить кнопку через резистор могу ли я узнать его сопротивление в режиме input_pullup при нажатии на кнопку?
Через аналоговый пин можно. Загугли омметр на ардуино
Алекс, я так обрадовался когда ты начал делать эти уроки. Ждал каждый, но пока они выходили выучил всё сам. Перерывы чертовски долгие. Я понимаю тебе сложно, но выбери определённую тему. Страдают все! И люди с квадрокоптерами и всякие оружейники и Ардуинщики и чёрт возьми даже вейперы!!!
+mine miner ну, увы...
Здравствуйте! Не могли бы вы сделать что-то типа сигнализации, работающей через модуль NRF24L01 с вибродатчиком? При вибрации идет сигнал на ардуино и загорается светодиод на 3-4 секунды. Буду благодарен! Смотрю все ваши видео, так вот и сам хочу что-то смастерить.
Спасибо за урок, не хватает обьяснения почему резистор тут помогает.
Напряжение высокого уровня не равно 5В из-за защитного диода на входе питания от USB, он находится прямо под разъёмом.
Важная мелочь - к аналоговым пинам можно подключать дискретные сигналы, и обрабатывать их.
Здоров Саня! Такой вопрос. Как к одной ардуино, (допустим нано) подключить и реле на 8 выходов, от 8 ми кнопок, и градусник, и сервопривод, от резистора, все одновременно. имею в виду как скетч выглядит...
Вот это совсем другой вид уроков! я заново все учу и выкидую стили других уроковедов!
Я думал что кнопке нужно +5 вольт всегда на ее распознавание и подачи тока на цель. светодиод скажим!
Александр, расскажи как создавать классы и использовать их в сложных программах.
Спасибо за видео и советы
(5:00) Может статься, что у меня NANO слишком уж китайская, но в моем случае определение цифрового сигнала происходит корректно без резистора и без INPUT_PULLUP
Спасибо за комментарий! У меня теперь тоже заработала кнопка!!!!!
ура! неужели видео!
Здравствуйте! можно ли к одному цифроаому порту подключить несколько кнопок сразу?
Алекс, давно за твоей работой наблюдаю, молодец. Спасибо тебе. У меня вопрос такой покажи как выводить тактовую частоту процессора разделив её на переменную равную от 2 до 128. Спасибо
У меня слишком короткий провод от ардуинки, поэтому приходится работать под столом)Можно ли его как-то удлинить?
Огромное спасибо!
If (button1 = 1) digitalWrite(13, 1);
else digitalWrite(13, 0);
От этих строк меня, програмиста с двадцатилетним стажем, ПОКОРОБИЛО!
Оно, конечно, работает, но лучше написать просто:
digitalWrite(13, button1);
4:39 написал код идентично, только порты другие, т.к. использую мегу 2560. в мониторе на button2 показывает 1. В чем причина может быть?
Аналогично
Под конец видео, собрал, из земли к кнопке, из кнопки в А5.. откуда плюсовой взялся ток, для работы цепи? Земля принимает же (-)?
+Александр Гришанов input_pullup - подтяжка к плюсу встроенным резистором
Заметки Ардуинщика от какого же порта + идет? Да, я немного чайник)
+Александр Гришанов изнутри микроконтроллера, он просто так "может"
а как подключить сенсорную кнопку к управляемой ленты на вкл и выкл WS2813
А можешь сделать видео так же, но про уно, я пытался повторить но не получилось.
привет, Алекс. У меня плата ардуино уно, код в IDE точно такой же как у тебя. Ардуинка прошита этим кодом, подключена, но не работает с кнопкой
это можно как нибудь пофиксить или нет?
Такая же проблема
А если gnd задействован на подключение nrf24l01, то внутренний резистор уже не подтянуть?
Когда уже будет проект ЧПУ......жду не могу прям
Подскажите название исполнителя джазовой музыки в ваших роликах.
Алекс, у меня Arduino NANO. Я установил все программы, всё работает, но у меня не горит светодиод зелёным на ардуинке как у Вас на видео. Это проблема или нет?
Почему у меня 13 пин показывает 1, режим INPUT, туда ничего не воткнуто
@@serega3214 Индикаторная лампочка L у порта 13 имеет неопределенное напряжение без установки подтягивающего резистора (INPUT_PULLUP в коде), то есть значения могут прыгать от 0 до ~ 1В. Вы тем более у компа наверняка сидите, а это источник помех. Можно замерить вольтметром на "чистой" программе контакты порта и земли, там не всегда 0.
Короче не заморачивайтесь, главное чтобы с подтягивающих резистором все работало.
@@ПавелОсокин-ш3г, у меня после кодключения подтягивающих резисторов всё равно значение прыгает 1-0. Юзаю плату Arduino DUO. Может знаете, с чем это связано? Может из-за того, что резисторы на самой плате слабые, ибо когда подсоединяю дополнительно, то проблема пропадает...
@@artemkhrb3071 Вы про 13 пин говорите? Просто достаточно давно сталкивался с такой проблемой у UNO с 13-й индикаторной лампочкой, искал в интернете почему у меня такое происходит, даже подумал, что плата сломана) У нее (мелкой лампочки) там прикол в строении, к тому же плата же не оригинальная (хотя проблем у меня не было, только с подключением - драйвер скачать). Да и на самом деле пофигу) На практике вы скорее всего будете выводить на отдельный пин обычный 2-вольтовый красненький светодиод (нагрузка - ключевое слово) и использовать INPUT_PULLUP в коде, когда захотите отследить нажатие кнопок например. Проблем не будет.
А цыфровые могут тоже входами быть
А можно было напрямую соединить D13 с кнопкой и не использовать иф в программе??? (Просто интересно)
Ты красавчик
А возможно из цифровоого или аналогового пина сделать землю?
Можно, но только из цифрового. Для этого нужно его сконфигурировать как выход и задать на нем постоянное значение низкого уровня, то есть 0.
Алекс, вопрос. Ты говоришь, что в этом видео речь о цифровых пинах, но выдаёшь ток на аналоговом. Пул_ап резистор он один для все выходов, или у каждого выхода свой?
И не совсем понятно, декларируя я могу сказать int a = A5 но для диджитал D5 писать не надо, откуда система знает что int b = 5 это константа b, а не выход 5-ого пина?
Цифровой пин это такое себе условное название, большинство пинов с индексом А также могут работать в режимe Input/Output. Подтягивающий резистов свой для каждого пина. А5 в системе это имя постоянной переменной, значение которой задано 19; вызовите контекстное меню на А5(правая кнопка мыши) и выберите "Go to Definition"
Круто я купил плату Wawgat - она дешевле ардуинки ( моя первая для тестов ) и она со всем справляется на 5 !
ставлю лайк даже еще не смотря
пхахах
как ты открыл COM3
В чем разница подключения кнопки к arduino по 2 проводам и по 3 проводам кроме числа проводов?
Алекс привет. Мне кажется последний пример не совсем правильный. Я вот сижу тестирую и получается, что ты проверяешь на 13 пине все, а он так и так подключен к светодиоду. Если убрать все из функции loop, то он все равно будет гаснуть и загораться. Не важно даже, что написано в pinMode. У меня не кнопка, а переключатель.
Можешь пожалуйста рассказать, как сделать включение и выключение на одну и ту же тактовую кнопку?
+Shawn Storm смотри новый выпуск
большое спасибо, долго мучился с этой темой.
Привет. Очень интересно все это. Ты обещал рассказать как сделать блютуз передатчик для контроллеров без танцев с бубном))). Поделись плиз.
Добрый вечер скажи а как тут прописать чтоб при одном нажатии горела лампочка при втором тухла
Спс, я ждал этого урока
Жаль с универом у тебя нет времени на уроки ) пока ждал уже сам разобрался с шаговиком, лсд и некоторыми другими штуками ) Но все равно то-то полезное, но узнаю. Благодарю )