Boolean buttonwasup это что
Всем привет! В предыдущей статье мы разбирали циклические операторы, пора применить их на практике! 🙂 У нас сегодня новый урок и новая задачка, над которой зачастую ломают голову новички в программировании Arduino, а к нам она попала благодаря любопытному ученику, который хотел сделать что-то необычное.
Условия задачи таковы:
У нас есть микроконтроллер Arduino, тактовая кнопка (рассмотри два варианта: когда количество кнопок совпадает с количеством режимов, и когда кнопка у нас всего одна, а переключаться нужно между несколькими режимами), несколько светодиодов разного цвета (пусть пока их будет 3).
Приступим к решению этой задачи:
И для начала разберемся как «объяснить» микроконтроллеру, какие элементы мы будем использовать.
Для того чтобы управлять светодиодом, достаточно использовать команду:
digitalWrite (номер пина, к которому подключён светодиод).
Пример:
Но вот, чтобы горел он как-нибудь необычно, нужно воспользоваться своей фантазией и операциями алгебры логики, но пугайтесь, сейчас обо всем по-порядку:
Этап 1: Подключение тактовой кнопки и считывание с нее сигнала:
Этап 2: Включение светодиода по нажатию кнопки:
Для считывания сигнала с кнопки необходимо проверять нажатие дважды с небольшой задержкой (от 5-10 мс) для предотвращения реагирования на дребезг. В примере программы выше описано именно такое считывание: введены две переменных buttonWasUp и buttonIsUp, в которые записываются значения считывания сигнала с кнопки с интервалом в 10 мс. В переменной ledEnabled записано значение, которое передается на светодиод. Изначально переменная имеет значение false, т.е. 0, когда считывается нажатие кнопки, значение переменной ledEnabled меняется на противоположное, т.е true — (1), при следующем считывании нажатия значение снова станет false.
Итак, со считывание сигнала с кнопки мы разобралась.
Этап 3: Количество кнопок равно количеству режимов.
Для увеличения количества элементов, которыми мы будем управлять, мы добавим количество кнопок:
Таким способом можно увеличивать количество кнопок и светодиодов до тех пор пока у нас есть свободные пины.
Этап 4: «Новогодняя гирлянда»
Все видели новогодние гирлянды, в которых по нажатию кнопки переключаются режимы: «Бегущий огонек» или, например, гирлянда начинает постепенно зажигаться и гаснуть.
Давайте попробуем повторить.
Теперь у нас есть всего одна кнопка и несколько режимов «гирлянды», между которыми мы будем переключаться.
Основная идея состоит в том, чтобы считать количество нажатий кнопки. Допустим, у нас три светодиода, между которыми мы хотим переключаться. Тогда нам нужно считать количество нажатий кнопки и находить остаток от деления на три (три режима — остаток от деления на три).
Программа объединяет в себе две предыдущих, с небольшим отличием: использование оператора swich-case, который ставит в соответствие каждому остатку от деления определенное действие.
Подробнее о структуре оператора swich-case расскажу в следующей статье.
Готовые программы Вы можете скачать по ссылке здесь:
В следующих статьях ждите еще больше интересных проектов. Будем рады, если Вы напишете свои пожелания, о том, что бы Вы хотели видеть на нашем сайте 🙂
Boolean buttonwasup это что
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Boolean buttonwasup это что
Arduino это просто запись закреплена
#define BUTTON_PIN 3
#define LED_PIN 13
void setup()
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
>
boolean buttonIsUp = digitalRead(BUTTON_PIN);
if (buttonWasUp && !buttonIsUp)
ledEnabled = !ledEnabled;
digitalWrite(LED_PIN, ledEnabled);
>
>
Включение светодиода кнопкой Ардуино
Включение светодиода кнопкой Ардуино можно осуществить различными способами — можно управлять светодиодом одной или двумя кнопками, а можно плавно менять яркость светодиода. Рассмотрим, все варианты подключения кнопки и светодиода к плате Arduino Uno с примерами программ. Рассмотрев представленные скетчи, вы сможете использовать в своих проектах тактовые кнопки для управления Ардуино.
Ардуино кнопка со светодиодом
Включение и выключение светодиода кнопкой Ардуино производится с помощью подключения одной тактовой кнопки к цифровому пину без подтягивающего резистора. Дело в том, что платы Arduino имеют встроенные резисторы, которыми можно управлять. Для этого следует использовать в pinMode() параметр INPUT_PULLUP, которая сконфигурирует пин на вход с подтягивающим резистором.
Обратите внимание, что при использовании INPUT_PULLUP происходит подтяжка цифрового входа к 5 вольтам, поэтому значение входящего сигнала будет инвертирован. То есть, при отпущенной кнопке, которая подключена к заземлению — GND, на цифровом входе будет высокий сигнал. При нажатии на кнопку — на входе, который сконфигурирован с помощью INPUT_PULLUP, будет низкий сигнал.
Как подключить кнопку и светодиод к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод;
- 2 резистора 220 Ом;
- 2 тактовых кнопки;
- провода «папа-папа».
Схема для включения/выключения светодиода кнопкой от Ардуино
Для переключения светодиода кнопкой Ардуино соберите схему, как на изображении выше. Обратите внимание, что тактовая кнопка на макетной плате подключена к микроконтроллеру без подтягивающего резистора. Пин 2 подключен к 5V через встроенный резистор, поэтому при отпущенной кнопке на входе пине 2 будет высокий уровень сигнала, а при нажатии кнопки будет низкий уровень.
Скетч. Управление светодиодом Ардуино через кнопку
Пояснения к коду:
- boolean — это глобальная переменная Ардуино, которая может принимать всего два значения – true (истина) и false (ложь);
- задержка delay(10); в программе позволяет избежать «дребезг контактов» кнопки и исключить ложное срабатывание.
Схема управления светодиодом двумя кнопками от Ардуино
Скетч. Управление двумя кнопками одним светодиодом
Пояснения к коду:
- данный пример программы позволяет включать светодиод нажатием одной кнопки и выключать светодиод нажатием второй кнопки; delay(10); позволяет избежать «дребезг контактов» кнопки и исключить возможность ложного срабатывания.
Следующий пример тоже потребует для подключения к Ардуино две кнопки, два светодиода, как на предыдущей схеме. Но вместо простого включения/выключения диода, мы будем увеличивать и уменьшать яркость светодиода с помощью ШИМ сигнала микроконтроллера. Загрузите пример программы для «Светодиод и кнопка Ардуино ШИМ», чтобы получить понятие о принципе работы кнопки с Arduino Uno.
Скетч. Управление яркостью светодиода кнопкой Ардуино
Пояснения к коду:
- для подключения светодиода следует использовать пин с ШИМ модуляцией;
- начальное значение яркости int brightness равен ста, в программе прирост и уменьшение яркости (20) можно поменять по своему усмотрению.
Заключение. Мы рассмотрели сразу несколько примеров для управления светодиодом Ардуино с помощью кнопки. Вы узнали, что светодиодом можно управлять с помощью одной кнопки, или производить включение/выключение двумя кнопками. Кроме того, можно менять яркость с помощью кнопки и ШИМ сигнала. Все рассмотренные примеры можно использовать в различных проектах на Arduino для начинающих.
Ардуино для начинающих. Урок 5. Кнопки, ШИМ, функции
В этом уроке мы узнаем: как подключить кнопку к ардуино, как подавить дребезг контактов, как в прошивке обработать нажатие на кнопку, как послать ШИМ сигнал, как создать свою функцию и как управлять светодиодом.
В этом уроке используются следующие детали:
Большая макетная плата на 1600 точек с 4 шинами питания: | Купить |
Набор резисторов из 100 штук на все случаи: | Купить |
Набор светодиодов из 100 штук: | Купить |
5 штук кнопок в удобной форме: | Купить |
Соединительные провода 120 штук: | Купить |
Подключение кнопки к Arduino
Подключение кнопки к Arduino
Как видите, ничего сложно в подключении кнопки к ардуино нет. Обратите внимание, что кнопка установлена так, что каждый ее контакт подключен к разным линиям макетной платы. Так же вы можете заметить резистор на 10 кОм который притягивает контакт к земле. Это нужно для того, что бы мы на 8 контакте не ловили наводок. Попробуйте убрать этот резистор из схемы. Светодиод будет загораться при шевелении проводов или кнопки. Теперь давайте рассмотрим скетч:
В этом уроке, как и прошлом, в самом начале мы объявляем переменные со значениями пинов к которым у нас подключены кнопка и светодиод. Далее в функции setup() мы обозначаем какой пин используется как вход, а какой как выход. В функции loop() мы используем условный оператор if с оператором сравнения и проверяем приходит ли на пин 8 высокий сигнал. Если да то включаем светодиод, если нет то выключаем. Описание функций и операторов вы найдете в справочнике по языку программирования Arduino
Теперь немного усложним наш код. Давайте сделаем так, что бы при нажатии на кнопку светодиод загорался и гас только при следующем нажатии на кнопку. Для этого в схеме мы менять ничего не будем, а скетч теперь будет выглядеть так:
В этом скетче мы добавили переменные для хранения состояния светодиода и кнопки. Так же мы создали новую функцию для подавления дребезга контактов debounse(). Код в цикле loop() тоже немного изменился. Теперь в условном операторе мы проверяем нажата ли кнопка и если нажата, то меняем состояние светодиода на противоположное. Потом меняем переменную с последним состоянием на текущее состояние кнопки и включаем или выключаем светодиод.
Понравилось? Давайте еще больше усложним наш проект. Теперь мы будем управлять яркостью светодиода. Для этого нам надо немного изменить схему нашего устройства. Для управления яркостью мы будем использовать ШИМ. Значит нам надо подключить светодиод к выходу, который может выдавать ШИМ. Теперь наша схема будет выглядеть вот так:
Подключение светодиода к Arduino
Теперь светодиод подключен к 11 пину ардуино, которой умеет делать ШИМ. И нам пришлось добавить токоограничивающий резистор на 220 Ом перед светодиодом, что бы его не спалить. Это необходимо потому, что светодиоды работают при напряжении 3.3 В, а пин ардуино отдает 5 В. Теперь посмотрим что нужно изменить в скетче:
В этом примере мы изменили значение переменной ledPin на 11. Так же добавили переменную для хранения уровня ШИМ ledLevel. При нажатии на кнопку будем увеличивать эту переменную. Функция debounce() осталась без изменений. В цикле мы теперь используем функцию analogWrite().
Вот и все! Сегодняшний урок на этом мы закончим. Надеюсь вам все было понятно. Если нет, то можете задавать свои вопросы в комментариях ниже.