Программирование микроконтроллеров. Полный курс для начинающих: diodov.net/programmirovanie-mikrokontrollerov-avr/ Электроника для начинающих. Мощный курс. diodov.net/elektronika-dlya-nachinayushhih/
выполнил бесценный труд и остался недооцененным, справедливая жизнь) какой то ***плёт набирает по 50 000 000 просмотров, который нихрена из себя не представляет, а только рожи корчит. Ну да, ну да расскажите мне после подобного, как в жизни всё на своих местах находится, расскажите как нужно трудится не покладая рук честным трудом, чтобы потом нихрена не иметь, сама жизнь нас толкает на поиски путей с наименьшим сопротивлением. Всем всего доброго, это был лишь поток моей мысли.
@@sucker7032 и тут я понимаю, что спустя 2 года в моей голове почти ничего не поменялось. Да микроконтроллеры не все обязаны изучать, но смотреть всякую чепуху обязаны все)) Не ладно, я не претендую ни на что, просто как факт смешно немного)
@@RetroJoin вот знаете, я сейчас живу в Норвегии в силу войны, так как я из Украины, вот про деньги, у них тут денег куры не клюют, на мусорках лежат рабочие приставки игровые последнего поколения, возможно с мизерной неисправностью, такой как просто расшатанный коннектор хдми или поврежденный жесткий диск, деньги есть, пошел купил новое, классно, но будучи честным, они тупые как валянки, по моему мнению. Я пришел к этому общаясь с их молодежью, более старшие, поумнее будут конечно же. Просто я к тому, что стоит ли оно того, коснись чего, они тупо вымрут, так как тут даже мастеров нет адекватных. Например, на войне мы выживали без света, воды, газа, скорых, полиции и тд и это произошло внезапно, если бы не скилл и понимание элементарного, то с голоду бы умерли, так как костер даже не развели бы. Я и так живу как нравится мне по факту, мне мир интересно изучать, всякие явления, любые.
@@RetroJoin да они тут жалуются, что у них всё дорого, электроника дорогая очень тут, вообще, если соизмерять зарплаты на всё с нашими до войны, то это примерно как получать 25 тысяч гривен в Киеве или Харькове, жить можно, но если есть свой дом, если арендуешь, то конец) Аниме не смотрел, в химию вообще не получалось никогда, не шла она мне.
Так уж случилось что давно на вас подписан, но из-за того что вы редко выпускаете видео как то про вас забыл. Понадобились мне массивы и операции с ними и портами, долго копал инет искал инфу и по кускам нашел, а тут пересматривал и нашел это видео. Лучшее обьяснение! Все что искал в одном видео и обьяснено все четко. Спасибо огромное!!!
Многократное увеличение связано не с дребезгом контактов, а с многократным выполнением цикла и соответственно проверки условия IF на нажатое состояние. Для того, что бы не считывать много раз одно нажатие Вы и добавили задержку, т.е. что бы успеть отпустить кнопку прежде, чем контроллер прочитает состояние кнопки снова. Разве не так? В программе же нет вызова функции по прерыванию что бы дребезг контактов мог ее вызывать.
Правильно. А вот если добавить что бы условие срабатывало не по нажатию а по перепаду. То есть сперва нажатие а потом отжатие (по сути выполнение двух условий последовательно) то тогда в протеусе все бы работало без проблем из без задержки, а вот в реальной схеме могли бы наблюдать эффект дребезга!
@@ДимаДимов-в6п На AVR я пока не программировал, только учусь. Но на ардуине по моему опыту дребезг проявляется если пин не подтянут к земле или потенциалу. Физически пин подтягиваю к потенциалу/земле и без проблем отслеживается состояние нажатия или отжатия кнопки.
Я тоже на AVR не ас. но в прошлом видео автор канала объяснял что кнопку он подключил на считывание на землю, а подтягивает сам микроконтроллер, поправьте если я не правильно понял
@@isakneuman9995 Вы как в анекдоте: Почему бабы говорят что я плох в сексе, откуда они могут это понять за 40 секунд? з.ы. Согласен, если вы ГУРУ, то можете оставлять такие "диванные" комменты. А про многократные проверки состояния и их обработку я тоже, представьте себе, знаю.
@@HemulMozyr Дребезг это НЕ наводка. Это физико-механический процесс. Любой механический контакт даёт дребезг в момент включения (как-бы включается и выключается десяток раз в милисекунду, пока подвижный контакт перестанет двигаться и не прижмется надёжно к не подвижному) и в момент выключения (особенно сильно проявляется, еще и благодаря индуктивности проводов и иногда нагрузки).
дребезг на реальной кнопке всё понятно, но в протэусе кнопка же идеальная, не имеющая дребезга. в протэусе значения прыгали не из за дребезга а и за долгова нажатия, программа за время нажатия успевала пройти несколько циклов что и давало большее количество инкремента/декремента нежели на еденицу
@@Yarikkasl программно нужно отслеживать не только когда кнопка нажата, но и когда отжата. В конце нужно ставить задержку до тех пор пока кнопку не отожмут. И только после отжатия продолжать цикл.
@@Yarikkasl Флажки нужно ставить. И добавить условие на инкремент только пока флажок опущен. При нажатии кнопки флажок поднимается и висит пока кнопку не отпустят.
Я немного вас поправлю, дабы не плодить неправильных утверждений. if - это условие, а оператор это то, что проводит действия ==, и тд. Операнд это, над чем проводятся какие либо действия. Соответственно в условии выражение (а == с) оператор сравнения == проверяет действительно операнды а и с равны между собой.
Не могу понять. Делаю все тоже самое. Правда Атмега168. Делаю ВХОД на пины PB0 и PB1. Кнопки не работают. Делаю все тоже с PB6,7 все работает. PB3,4,5 заняты программатором SCK,MISO,MOSI. Почему пины В 0 и 1 на вход не работают не понимаю.
Я вместо индикатора подключил 4 светодиода на порт B. PB0 PB1 PB2 PB3. Кнопку на PC0. Никак не хотела работать. Переделал программу для порта D и перенес туда светодиоды, только после этого начало переключать. Так и должно быть?
А зачем считывать данные всех 8 портов B? Если нужно остальные порты B сделать на выход, что тогда? Как можно считывать значения только на PB0 и PB1 ??
Доброго времени суток! Очень помогает ваши видео! Хотел спросить , будет ли видео по подключению индикаторов через регистр 74HC595 (статика и динамика). И в какой версии Atmel Studio вы работаете? Есть ли какие то различие между ними
А почему на порт С назначение кнопок не работает? Код один в один, только с портом С. Все заработало только когда кнопки перенёс на порт В. Или тут идет разделение на аналоговые и цифровые входы и выходы? МК Atmega328p.
16:09 А вы не подскажете, почему после прошивки меги, секунды идут не правильно? Т.е. (1секунда =1.5) каждой полтора секунды считает...1...2...3... Хотя в проге поставил #Define F_CPU 8000000L и даже поставил так: F _CPU 1000000L и даже UL не помогает.
1:00 Дмитрий, у порта "Д" нулевой бит отвечает за ресивер сериал-порта. Если его как у вас программировать в еденицу, т.е. на выход, разве это не нарушит его работу? Ресиверу принимать следует однако...
Ну ок, тут все понятно. Такой вопрос есть семисигментный индикатор с 2 сдвиговыми регистрами один включает индикаторы другой высвечивает число, создали массив один с цифрами 0-9 цифры, другой массив с битами на включение элементов 1,2,3,4. А теперь как из этого всего мне выводить числа которые выдает один из входов типа float, как разбить число на элементы 246,6 или 1,342 и вывести на дисплей. А?
Значит пауза после 9 относится уже ко второму циклу. Если так, то я стал что-то понимать. Было бы нагляднее, если во втором цикле сделать другую задержку, скажем 2 секунды. Попробовал бы, но неделю не могу студию установить, пишет чего-то в винде не так. Еще раз спасибо!
@@user-ol1nk9ox7n Да, когда на индикаторе 9 от первого цикла, ее отрабатывает задержка из второго цикла при первом прохождении. А когда на индикаторе 1 после работы второго цикла, ее держит пауза из первого цикла при первом прохождении. з.ы. Если проблема установки Amtel Studio из-за Visual Studio 2015 (isolated) , то попробуйте установить визуалстудию 2015 отсюда, а после устанавливать Amtel. visualstudio.microsoft.com/ru/vs/older-downloads/isolated-shell/?rr=https%3A%2F%2Fduckduckgo.com%2F Сам уже третий день пытаюсь разобраться почему на win7 такая беда. Обновляю винду и принудительно устанавливаю визуал студию, завтра узнаю результат. :)
есть лсд семисегментный индикатор (стекляшка), они строятся зачастую на HT1621. снимите пожалуйста для него , как пользоваться даташитом и написать программу.
люди помогите, как мне поставить _delay_ms() значение на входе ADC. Программа не компилируется, работает только если сам ввожу нужные значения длительности.
Рабочий код , плюс третья управляющая кнопка . #define F_CPU 1000000L #include #include int z=0;// переменная объявленная до int main () будет видна в любой области программы . int el[]= { //распиновка 1-a,2-b,3-c,4-d,5-e,6-f,7-g,8-.,9- "-" 0b00111111,//0 0b00000110,//1 0b01011011,//2 0b01001111,//3 0b01100110,//4 0b01101101,//5 0b01111101,//6 0b00000111,//7 0b01111111,//8 0b01101111//9 }; int main(void) { /* Replace with your application code */
DDRD=0b11111111; DDRB=0b00000000; PORTB=0b00000111; while(1) { if (PINB==0b00000110 && z0 ) { z--; PORTD=el[z]; _delay_ms(300); } // добавляем 3 ю кнопку в протеус для наглядности по анологии с первыми двумя if (PINB==0b00000011 ) // если две кнопки не зажаты ,то при зажиме 3й увидим работу цикла for {
for(z;z0&&PINB==0b00000011;) // первый параметр пропущен так как переменная глобальная .К ней можно обратиться из любого места программы в том числе и из цикла FOR { z--; PORTD=el[z]; _delay_ms(1000); } PORTB=0b00000111; //возврат исходного значения потенциала на входных выводах } } }
подскажите, как можно заставить мигать цифру на семисигментном дисплее. у меня в программе они вызываются при помощи переменной по нажатию кнопки, можно ли сделать что бы по нажатию второй кнопки цифра мигала?
Дмитрий Коренев я не разбираюсь, но по идеи напряжение какое-то время задержки не подается на индикатор или в самом этом индикаторе должен быть режим отключения дисплея. Просто наверное в цикле ddrD=0b00000000 на задержку а потом включить, но это не точно
Замість умови (PINB == 0b00000010) краще застосовувати (PINB & 0b00000010). Не знаю як Дмитро, а я стискався на практиці з таким явищем як наведення ("наводки") на сусідні "вільні" піни. Тобто, якщо на порту є піни з високоімпендансним режимом, то на них може бути логічна одиниця, яка без проблем зчитається PINx. І в такому випадку, якщо і натиснута кнопка, але через наведення буде логічна одиниця хоча б на одному з пінів даного порту, то умова (PINB == 0b00000010) просто не виконається. Більше того, умова (PINB & 0b00000010) є універсальною, що підходить під інші умови. Коли, наприклад, інші піни даного порту зайняти іншими задачами.
В коде пресутствует ошибка. Т.к. кнопка срабатывает при низком потенциале то код должен выглядеть PINB == 0b11111101для первой кнопки и PINB==0b11111110 для второй. Удивляет как у вас это работало) Или я где-то не доглядел?
Доброго времени суток.Споткнулся на том же самом :)... И еще вопрос - у меня работает только при PORTB = 0b11111111, а при PORTB = 0b00000011,кнопки не реагируют. Может кто объяснит? (разница в "прошивальщике", у меня Sina Prog). Спасибо.
Микроконтроллеры с нуля! 15:25, где два цикла и в начале while пока остаётся portD равно массив, было это перескакивание с двух сразу до нуля. Странно. Ведь пока выполняется цикл, программа не должна перескакивать и должна находиться внутри цикла. Вообще не понятно
Единица была, просто ее на индикаторе без задержки сменила на 0 команда "PORTD=go2[z]", так как второй цикл завершился и задержка в 1 секунду не произошла. Если "_delay_ms 1000" перенести в обоих циклах на строчку ниже (в конец цикла), то команда "PORTD=go2[z]" ни на что не повлияла бы, вы просто не заметили бы ее результат.
Ардуино язык проще!!! НО!!! этот вот C++ очень интересен, несколько светодиодов можно зажечь одной командой))) язык сложнее но куда интереснее)) спасибо что я тебя нашел) только вот атмел студио у меня при выборе МК не открывает новый проект(поле кодинга) хз чё делать
Программирование микроконтроллеров. Полный курс для начинающих: diodov.net/programmirovanie-mikrokontrollerov-avr/
Электроника для начинающих. Мощный курс. diodov.net/elektronika-dlya-nachinayushhih/
выполнил бесценный труд и остался недооцененным, справедливая жизнь) какой то ***плёт набирает по 50 000 000 просмотров, который нихрена из себя не представляет, а только рожи корчит. Ну да, ну да расскажите мне после подобного, как в жизни всё на своих местах находится, расскажите как нужно трудится не покладая рук честным трудом, чтобы потом нихрена не иметь, сама жизнь нас толкает на поиски путей с наименьшим сопротивлением. Всем всего доброго, это был лишь поток моей мысли.
Лучше иметь мало, но нормальных подписчиков. Чем стадо даунов отсталых, которую любую хуйню схавают
самый глупый комментарий. никто не обязан изучать микроконтроллеры, соответственно и просмотров так много не будет)
@@sucker7032 и тут я понимаю, что спустя 2 года в моей голове почти ничего не поменялось. Да микроконтроллеры не все обязаны изучать, но смотреть всякую чепуху обязаны все)) Не ладно, я не претендую ни на что, просто как факт смешно немного)
@@RetroJoin вот знаете, я сейчас живу в Норвегии в силу войны, так как я из Украины, вот про деньги, у них тут денег куры не клюют, на мусорках лежат рабочие приставки игровые последнего поколения, возможно с мизерной неисправностью, такой как просто расшатанный коннектор хдми или поврежденный жесткий диск, деньги есть, пошел купил новое, классно, но будучи честным, они тупые как валянки, по моему мнению. Я пришел к этому общаясь с их молодежью, более старшие, поумнее будут конечно же. Просто я к тому, что стоит ли оно того, коснись чего, они тупо вымрут, так как тут даже мастеров нет адекватных. Например, на войне мы выживали без света, воды, газа, скорых, полиции и тд и это произошло внезапно, если бы не скилл и понимание элементарного, то с голоду бы умерли, так как костер даже не развели бы.
Я и так живу как нравится мне по факту, мне мир интересно изучать, всякие явления, любые.
@@RetroJoin да они тут жалуются, что у них всё дорого, электроника дорогая очень тут, вообще, если соизмерять зарплаты на всё с нашими до войны, то это примерно как получать 25 тысяч гривен в Киеве или Харькове, жить можно, но если есть свой дом, если арендуешь, то конец)
Аниме не смотрел, в химию вообще не получалось никогда, не шла она мне.
Ты гордость технического Ютуба. Твоя работа бесценна.
Благодарю вас учитель за такое дозодчивое объяснение! Не мог и поверить , что начну программировать🎉❤🤝 Мирного неба над головой вам!!!
Так уж случилось что давно на вас подписан, но из-за того что вы редко выпускаете видео как то про вас забыл. Понадобились мне массивы и операции с ними и портами, долго копал инет искал инфу и по кускам нашел, а тут пересматривал и нашел это видео. Лучшее обьяснение! Все что искал в одном видео и обьяснено все четко. Спасибо огромное!!!
Дмитрий, какой вы молодец! Я учился по данной профессии, нам объясняли ужасающе поверхностно. Спасибо Вам за Ваш труд!
СПАСИБО ЗА ТРУД!!!
Лучше чем в учебных заведениях.
Многократное увеличение связано не с дребезгом контактов, а с многократным выполнением цикла и соответственно проверки условия IF на нажатое состояние. Для того, что бы не считывать много раз одно нажатие Вы и добавили задержку, т.е. что бы успеть отпустить кнопку прежде, чем контроллер прочитает состояние кнопки снова. Разве не так? В программе же нет вызова функции по прерыванию что бы дребезг контактов мог ее вызывать.
Правильно. А вот если добавить что бы условие срабатывало не по нажатию а по перепаду. То есть сперва нажатие а потом отжатие (по сути выполнение двух условий последовательно) то тогда в протеусе все бы работало без проблем из без задержки, а вот в реальной схеме могли бы наблюдать эффект дребезга!
@@ДимаДимов-в6п На AVR я пока не программировал, только учусь. Но на ардуине по моему опыту дребезг проявляется если пин не подтянут к земле или потенциалу. Физически пин подтягиваю к потенциалу/земле и без проблем отслеживается состояние нажатия или отжатия кнопки.
Я тоже на AVR не ас. но в прошлом видео автор канала объяснял что кнопку он подключил на считывание на землю, а подтягивает сам микроконтроллер, поправьте если я не правильно понял
@@isakneuman9995 Вы как в анекдоте: Почему бабы говорят что я плох в сексе, откуда они могут это понять за 40 секунд?
з.ы. Согласен, если вы ГУРУ, то можете оставлять такие "диванные" комменты. А про многократные проверки состояния и их обработку я тоже, представьте себе, знаю.
@@HemulMozyr Дребезг это НЕ наводка. Это физико-механический процесс. Любой механический контакт даёт дребезг в момент включения (как-бы включается и выключается десяток раз в милисекунду, пока подвижный контакт перестанет двигаться и не прижмется надёжно к не подвижному) и в момент выключения (особенно сильно проявляется, еще и благодаря индуктивности проводов и иногда нагрузки).
дребезг на реальной кнопке всё понятно, но в протэусе кнопка же идеальная, не имеющая дребезга. в протэусе значения прыгали не из за дребезга а и за долгова нажатия, программа за время нажатия успевала пройти несколько циклов что и давало большее количество инкремента/декремента нежели на еденицу
Как это реализовать программно?
@@Yarikkasl программно нужно отслеживать не только когда кнопка нажата, но и когда отжата. В конце нужно ставить задержку до тех пор пока кнопку не отожмут. И только после отжатия продолжать цикл.
@@HybridWarARgungame спасибо
@@Yarikkasl Флажки нужно ставить. И добавить условие на инкремент только пока флажок опущен. При нажатии кнопки флажок поднимается и висит пока кнопку не отпустят.
@@ogurezzzспасибо, с флагами я́ так и не разобрался, сделал задержку по времени.
.
11:11 А это не из-за того, что, пока кнопка нажата, контроллер производит много циклов?
.
Большое спасибо, очень интересное и понятное видео)
Я немного вас поправлю, дабы не плодить неправильных утверждений. if - это условие, а оператор это то, что проводит действия ==, и тд. Операнд это, над чем проводятся какие либо действия. Соответственно в условии выражение (а == с) оператор сравнения == проверяет действительно операнды а и с равны между собой.
Както винаги отлично изложение! Благодаря! Успех!
Вопрос, а если после установления параметра задержки дребезг контактов не ушел?
Не могу понять. Делаю все тоже самое. Правда Атмега168. Делаю ВХОД на пины PB0 и PB1. Кнопки не работают. Делаю все тоже с PB6,7 все работает. PB3,4,5 заняты программатором SCK,MISO,MOSI. Почему пины В 0 и 1 на вход не работают не понимаю.
Я вместо индикатора подключил 4 светодиода на порт B. PB0 PB1 PB2 PB3. Кнопку на PC0. Никак не хотела работать. Переделал программу для порта D и перенес туда светодиоды, только после этого начало переключать. Так и должно быть?
У тебя в коде где-то ошибка: обратный отсчёт заканчивается, а бонба не взрывается. Исправь как надо и перезалей, пожалуйста.
Понять не могу), уже всю голову сломал)
Нашел!!!! , а то на другом канале было смотрю там удалено, думал КАПУТ)))
Поддерживают ли контроллеры мультипоточность?
А зачем считывать данные всех 8 портов B? Если нужно остальные порты B сделать на выход, что тогда?
Как можно считывать значения только на PB0 и PB1 ??
Доброго времени суток! Очень помогает ваши видео! Хотел спросить , будет ли видео по подключению индикаторов через регистр 74HC595 (статика и динамика). И в какой версии Atmel Studio вы работаете? Есть ли какие то различие между ними
А почему на порт С назначение кнопок не работает? Код один в один, только с портом С. Все заработало только когда кнопки перенёс на порт В. Или тут идет разделение на аналоговые и цифровые входы и выходы? МК Atmega328p.
16:09
А вы не подскажете, почему после прошивки меги, секунды идут не правильно? Т.е. (1секунда =1.5) каждой полтора секунды считает...1...2...3...
Хотя в проге поставил #Define F_CPU 8000000L и даже поставил так: F _CPU 1000000L и даже UL не помогает.
возможно прошит неправильно фьюз SCKDIV8
1:00 Дмитрий, у порта "Д" нулевой бит отвечает за ресивер сериал-порта.
Если его как у вас программировать в еденицу, т.е. на выход, разве это не нарушит его работу?
Ресиверу принимать следует однако...
можно залочить микросхему?
Ну ок, тут все понятно. Такой вопрос есть семисигментный индикатор с 2 сдвиговыми регистрами один включает индикаторы другой высвечивает число, создали массив один с цифрами 0-9 цифры, другой массив с битами на включение элементов 1,2,3,4. А теперь как из этого всего мне выводить числа которые выдает один из входов типа float, как разбить число на элементы 246,6 или 1,342 и вывести на дисплей. А?
Присоединяюсь к Василию Пупкину. Я тоже в ступор попал в этом месте. До этого все было понятно. И вообще уроки превосходные.
смотрите ответ чуть выше.
Значит пауза после 9 относится уже ко второму циклу. Если так, то я стал что-то понимать. Было бы нагляднее, если во втором цикле сделать другую задержку, скажем 2 секунды. Попробовал бы, но неделю не могу студию установить, пишет чего-то в винде не так. Еще раз спасибо!
@@user-ol1nk9ox7n Да, когда на индикаторе 9 от первого цикла, ее отрабатывает задержка из второго цикла при первом прохождении. А когда на индикаторе 1 после работы второго цикла, ее держит пауза из первого цикла при первом прохождении.
з.ы. Если проблема установки Amtel Studio из-за Visual Studio 2015 (isolated) , то попробуйте установить визуалстудию 2015 отсюда, а после устанавливать Amtel. visualstudio.microsoft.com/ru/vs/older-downloads/isolated-shell/?rr=https%3A%2F%2Fduckduckgo.com%2F
Сам уже третий день пытаюсь разобраться почему на win7 такая беда. Обновляю винду и принудительно устанавливаю визуал студию, завтра узнаю результат. :)
@@user-ol1nk9ox7n логичнее ставить паузу в конце цикла. так меньше непоняток
Спасибо, будем пробовать
У меня в proteus эта программа работает а на реальном микроконтролере нет. При нажатие на кнопки не считает. Подскажите в чем может быть причина.
Как по мне самый идеальный способ устранения дребезга это написать автомат для его устранения.
Здравствуйте. Может ли сама программа AtmelStudio подвисать .Когда программа доходит до операторов for и if она дальше перестает как бы работать ?
Спасибо!очень понятно. А где протеус можно скачать!)
есть лсд семисегментный индикатор (стекляшка), они строятся зачастую на HT1621. снимите пожалуйста для него , как пользоваться даташитом и написать программу.
Вы можете помочь сделать таймер обратного отсчёта дней?
люди помогите, как мне поставить _delay_ms() значение на входе ADC. Программа не компилируется, работает только если сам ввожу нужные значения длительности.
Вялiкi дзякуй!
при долгом нажатии все равно счет идет в ту или иную сторону. Надо чтобы счет шел
независимо от времени нажатия , а от количества. Как сделать?
z должен меняться не после нажатия кнопки, а после (нажали + отпустили) кнопку
Рабочий код , плюс третья управляющая кнопка .
#define F_CPU 1000000L
#include
#include
int z=0;// переменная объявленная до int main () будет видна в любой области программы .
int el[]=
{
//распиновка 1-a,2-b,3-c,4-d,5-e,6-f,7-g,8-.,9- "-"
0b00111111,//0
0b00000110,//1
0b01011011,//2
0b01001111,//3
0b01100110,//4
0b01101101,//5
0b01111101,//6
0b00000111,//7
0b01111111,//8
0b01101111//9
};
int main(void)
{
/* Replace with your application code */
DDRD=0b11111111;
DDRB=0b00000000;
PORTB=0b00000111;
while(1)
{
if (PINB==0b00000110 && z0 )
{
z--;
PORTD=el[z];
_delay_ms(300);
}
// добавляем 3 ю кнопку в протеус для наглядности по анологии с первыми двумя
if (PINB==0b00000011 ) // если две кнопки не зажаты ,то при зажиме 3й увидим работу цикла for
{
for(z;z0&&PINB==0b00000011;) // первый параметр пропущен так как переменная глобальная .К ней можно обратиться из любого места программы в том числе и из цикла FOR
{
z--;
PORTD=el[z];
_delay_ms(1000);
}
PORTB=0b00000111; //возврат исходного значения потенциала на входных выводах
}
}
}
Хочется добавить, что цифра 9 появляется из второго цикла FOR так как в первом условии Z
подскажите, как можно заставить мигать цифру на семисигментном дисплее. у меня в программе они вызываются при помощи переменной по нажатию кнопки, можно ли сделать что бы по нажатию второй кнопки цифра мигала?
Дмитрий Коренев я не разбираюсь, но по идеи напряжение какое-то время задержки не подается на индикатор или в самом этом индикаторе должен быть режим отключения дисплея. Просто наверное в цикле ddrD=0b00000000 на задержку а потом включить, но это не точно
Замість умови (PINB == 0b00000010) краще застосовувати (PINB & 0b00000010). Не знаю як Дмитро, а я стискався на практиці з таким явищем як наведення ("наводки") на сусідні "вільні" піни. Тобто, якщо на порту є піни з високоімпендансним режимом, то на них може бути логічна одиниця, яка без проблем зчитається PINx. І в такому випадку, якщо і натиснута кнопка, але через наведення буде логічна одиниця хоча б на одному з пінів даного порту, то умова (PINB == 0b00000010) просто не виконається. Більше того, умова (PINB & 0b00000010) є універсальною, що підходить під інші умови. Коли, наприклад, інші піни даного порту зайняти іншими задачами.
В коде пресутствует ошибка. Т.к. кнопка срабатывает при низком потенциале то код должен выглядеть PINB == 0b11111101для первой кнопки и PINB==0b11111110 для второй. Удивляет как у вас это работало) Или я где-то не доглядел?
Если подтягивать входные ножки к +5В, то всё, как Вы говорите. Но здесь входные ножки подтянуты следующим образом: DDRB = 0b00000011; .
Доброго времени суток.Споткнулся на том же самом :)... И еще вопрос - у меня работает только при PORTB = 0b11111111, а при PORTB = 0b00000011,кнопки не реагируют. Может кто объяснит? (разница в "прошивальщике", у меня Sina Prog). Спасибо.
@@evgenikutuzov132 ...так и в примере, и в видео подтянуты к плюсу, или я что-то путаю?
@@ЮрийШмелёв-л2ч Разобрался? Тоже голову ломаю. В протеусе все работает. На реальной атмеге, только если PORTB = 0b11111111.
Микроконтроллеры с нуля! 15:25, где два цикла и в начале while пока остаётся portD равно массив, было это перескакивание с двух сразу до нуля. Странно. Ведь пока выполняется цикл, программа не должна перескакивать и должна находиться внутри цикла. Вообще не понятно
Единица была, просто ее на индикаторе без задержки сменила на 0 команда "PORTD=go2[z]", так как второй цикл завершился и задержка в 1 секунду не произошла. Если "_delay_ms 1000" перенести в обоих циклах на строчку ниже (в конец цикла), то команда "PORTD=go2[z]" ни на что не повлияла бы, вы просто не заметили бы ее результат.
В описании на сайте для оператора for переменная из двух символов
for (z=0; z
Это опечатка, но смысл не меняется ,так как здесь переменная z просто заменена другой переменной zz.
@@Ванек-р4о Ясно, спасибо.
super!!!
ждем 16 урок!!
ээээм, а как же кнопки с циклом for?
Magadan при завершении цикла for, микроконтроллер ни куда не денется и прочитает значение с кнопки.
Ардуино язык проще!!! НО!!! этот вот C++ очень интересен, несколько светодиодов можно зажечь одной командой))) язык сложнее но куда интереснее)) спасибо что я тебя нашел) только вот атмел студио у меня при выборе МК не открывает новый проект(поле кодинга) хз чё делать
Не будет массива, компилятор все оптимизирует и запишет все в команду...
)