Arduino для начинающих. Часть 2

в 21:31, , рубрики: arduino, button, c++, кнопка, Разработка робототехники, робототехника

Предисловие автора

Доброго времени суток. Как и планировала, продолжаю цикл статей, которые помогут Вам в знакомстве с Arduino. Также, в каждой последующей статье (включая эту) вы сможете найти ответы на самые важные вопросы, которые появляются в комментариях. Для тех кто не читал первую часть, сюда.

Как определить полярность светодиода

На данный момент большинство светодиодов делают так, чтоб упростить процесс определения полярности. У светодиода есть две ножки, одна из которых будет длиннее другой. Длинная ножка – это плюс (анод). Короткая ножка — это минус (катод). Но что же делать если выводы светодиода одинакового размера? Иногда вывод катода отмечают точкой или небольшим срезом на корпусе. Также узнать полярность можно путём внимательного рассмотрения кристалла. Плюс имеет гораздо меньший размер внутри линзы по сравнению с минусом. Контакт минуса, в свою очередь, напоминает флажок, на котором размещается кристалл. Также можно определить полярность источником питания. Для этого необходимо источник тока (с напряжением от 3 до 6 вольт), резистор (с сопротивлением 220 – 470 Ом) и сам светодиод. Сначала соедините одну ножку светодиода с резистором. Затем коснитесь светодиодом контактов источника питания. Дотрагиваясь анодом к плюсу, а катодом к минусу, светодиод будет светиться (если он исправен).

Продвигаемся далее в изучении Arduino

В прошлой статье мы научились подключать и зажигать светодиод а также мерцать им. А что если нам надо управлять этим светодиодом. Или мы хотим сделать подобие светильника. Тут нам поможет кнопка или переключатель. Но сегодня мы рассмотрим именно кнопку. Они на самом деле могут быть полезными в разных проектах. Приступим.

Необходимые компоненты и подключение

Для подключения кнопки необходимо:

  • контроллер Arduino
  • кнопка
  • резистор (10 кОм)
  • макетная плата
  • перемычки/провода
    Сама схема подключения выглядит так:
    image

    Пишем код

    После подключения схемы, давайте разберёмся с самой программой. После подключения схемы, давайте разберёмся с самой программой. В этом примере мы будем управлять светодиодом на 13 пине. То есть можно не подключать дополнительный светодиод так ка есть встроенный. Но об подключении светодиода можно почитать в 1 части Arduino для начинающих.

    int Led = 13; 
    int Button = 2; // номер пина, подключенного к кнопке
    void setup(){
    pinMode(Led, OUTPUT); 
        pinMode(Button, INPUT);
    }
    void loop(){
        if(digitalRead(Button) == HIGH){ // если кнопка нажата
                digitalWrite(Led, HIGH); // светодиод горит
        }
        else{ // если не нажата (иначе)
                digitalWrite(Led, LOW); // светодиод не горит
        }   
    }

    Этот пример достаточно хороший. Но, а если нам надо выполнять действие не по удержанию, а по нажатию. Тогда мы немного изменим наш код. Мы добавим ещё две переменных, некие флаги, которые будут следить за некоторыми процессами. И код выглядит уже так:

    bool But = true; // проверка на кнопку
    bool Light = false; // проверка на свет
    int Led = 13; 
    int Button = 2; // номер пина, подключенного к кнопке
    void setup(){
    pinMode(Led, OUTPUT); 
        pinMode(Button, INPUT);
    }
    void loop(){
        bool Now = digitalRead(Button); // состояние кнопки прямо сейчас
        if(But && !Now)
        {
                delay(10); // небольшая задержка
                Now = digitalRead(Button);
                if(!Now)
                {
                        Light = !Light;
                        digitalWrite(Led, Light);
                }
        }
        But = Now;
    }

    В этом коде Вы могли заметить Light = !Light. Сейчас объясню. Мы считываем была ли кнопка опущена. Далее небольшой задержкой определяем не было ли это ошибкой и если кнопка действительно была нажата инвертируем сигнал светодиода. То есть если светодиод горел – он перестанет гореть. И наоборот.

    Дребезг контактов

    Очень хорошо, когда всё идеально. Но к сожалению всё на так и идеально. И с кнопками та же проблема. Механические контакты кнопки не могут замыкаться/размыкаться мгновенно. Это называется «дребезг контактов». Как это понять. На вход микроконтроллера поступают импульсы. Но вместо того чтоб просто получить 1 или 0 из-за данного явления на вход поступает целая кучка импульсов. Это может создать ложные сигналы. И именно поэтому мы делаем небольшую задержку в нашей программе. На скорость это особо не повлияет, но обеспечит нас от ошибки.
    image

    На этом у нас конец второй части. Спасибо за внимание.

Автор: Yuliasha

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js