Arduino урок 3 — Кнопка

В этом примере мы рассмотрим подключение кнопки к контроллеру Arduino. И рассмотрим несколько примеров обработки нажатия.

Для урока понадобятся:

  • Arduino
  • Макетная плата
  • Пара резисторов
  • Кнопка
  • Светодиод
  • Соединительные провода

Нужно обратить внимание на, что кнопка подключается с подтягивающим резистором. Это нужно для того чтобы не было ложных срабатываний кнопки и придать ей стабильный сигнал.

Кнопка и Ардуино

Пример подключения

Arduino урок 3 — Кнопка

Простейший пример, при нажатии светодиод горит.

int LED = 13; // подключаем светодиод
int knopka = 2; // подключаем кнопку

void setup(){
pinMode(LED,OUTPUT); // пин 13 на выход
pinMode(knopka, INPUT); // пин 2 на вход

}
void loop(){
if (digitalRead(knopka)==HIGH){ // если кнопка зажата
digitalWrite(LED, HIGH);// включаем светодион
}
else{
digitalWrite(LED,LOW);// иначе, выключаем светодиод
}}

 

Поменяв несколько значений, светодиод будет всегда гореть пока не зажать кнопку

void loop(){
if (digitalRead(knopka)==LOW){
digitalWrite(LED, HIGH);
}
else{
digitalWrite(LED,LOW);
}}

Следующий код позволит отслеживать действия кнопки в мониторе порта

int knop=2;
void setup(){
  pinMode(knop, INPUT);
  Serial.begin(9600); // задаем скорость для связи
}
void loop(){
  if (digitalRead(knop)==HIGH){ // если кнопка зажата...
  Serial.println("ON");} // отправляем на монитор "ON"
  if (digitalRead(knop)==LOW){
  Serial.println("OFF");}
}

 

Следующим примером будет выступать такая логика: нажатие кнопки (не удерживание) — светодиод загорелся, еще раз нажали- светодиод потух. Хочу отметить, что во время этих уроков я и сам учусь, и с этим примером пришлось напрячь мозги и рассуждать только логикой.

int flag=0;
void setup()
{
    pinMode(13, OUTPUT);
}
void loop()
{
     if(digitalRead(14)==HIGH&&flag==0)//если кнопка нажата
     // и перемення flag равна 0 , то ...
     {
       digitalWrite(13,!digitalRead(13));
       flag=1;
        //это нужно для того что бы с каждым нажатием кнопки
        //происходило только одно действие
        // плюс защита от "дребезга"  100%
     }
      if(digitalRead(14)==LOW&&flag==1)//если кнопка НЕ нажата
     //и переменная flag равна - 1 ,то ...
     {
        flag=0;//обнуляем переменную flag
     }
}

Еще немного изменим код и получим несколько действий, в данном случае 4.

int regim=1;
 int flag=0;

 void setup()
 {
    pinMode(10,OUTPUT);
 pinMode(9,OUTPUT);

 }

 void loop()

 {

     if(digitalRead(14)==HIGH&&flag==0)//если кнопка нажата
     // и перемення flag равна 0 , то ...
     {
       regim++;
       flag=1;

        //это нужно для того что бы с каждым нажатием кнопки
        //происходило только одно действие
        // плюс защита от "дребезга"  100%

        if(regim>4)//ограничим количество режимов
        {
          regim=1;//так как мы используем только одну кнопку,
                    // то переключать режимы будем циклично
        }

     }

      if(digitalRead(14)==LOW&&flag==1)//если кнопка НЕ нажата
     //и переменная flag равна - 1 ,то ...
     {

        flag=0;//обнуляем переменную "knopka"
     }



    if(regim==1)//первый режим
    {
      digitalWrite(9,LOW);//выключаем все светодиоды
      digitalWrite(10,LOW);


      //здесь может быть любое ваше действие
    }
    if(regim==2)//второй режим
    {
      digitalWrite(10,HIGH);//включае красный светодиод
      digitalWrite(9,LOW);

      //здесь может быть любое ваше действие
    }

    if(regim==3)//третий режим
    {

      digitalWrite(9,HIGH);//включае зеленый светодиод
      digitalWrite(10,LOW);


      //здесь может быть любое ваше действие
    }

    if(regim==4)//четвертый режим
    {

      digitalWrite(9,HIGH);//включаем светодиоды одновременно
      digitalWrite(10,HIGH);
      //здесь может быть любое ваше действие
    }

 }

 

Поделись с друьями:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • MySpace
  • В закладки Google
  • Яндекс.Закладки
  • LinkedIn
  • Reddit

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *