Сделать стартовойДобавить в закладки  
Главная страничка Главная страничка
В номере:

    Выходит с 17 июля 2008 г. цена договорная

    Опрос

    конечно, он настанет в 2012 г.
    да, но не в 2012 г.
    нет, это фантастика
    а что такое конец света
    а мне пофиг - я буду уже мертв



    Календарь
    «    Апрель 2013    »
    ПнВтСрЧтПтСбВс
    1234567
    891011121314
    15161718192021
    22232425262728
    2930 

    Архив новостей
    Март 2022 (1)
    Декабрь 2021 (1)
    Август 2021 (1)
    Июль 2021 (3)
    Февраль 2021 (3)
    Январь 2021 (1)

    Информация
    Баловство с кнопками на Arduino
    Arduino
    автор: dimon, опубликовано: 24 апреля 2013

    Этот пример не несет никакого особого смысла кроме способа понять, как избавиться от дребезга при нажатии кнопок. Для этого мы подключим к Arduino UNO дисплей 1602 и пару кнопок. Нажатие на одну кнопку будет увеличивать цифру выводимую на экран, нажатие на вторую – уменьшать.

    От дребезга кнопок будем избавляться запоминая предыдущее состояние кнопок и вводя задержку 50 мс - за это время состояние кнопки должно установиться.
    Так же кнопки подключим к земле через подтягивающие резисторы 10 кОм для того чтобы избавиться от случайных значений на входах микроконтроллера когда кнопка не нажата.

    Скетч:
    /*
    
    Баловство с кнопками.
    Две кнопки - одна инкремент, вторая декремент.
    Дребезг кнопок убран с помощью задержки.
    
    дисплей 1602, два подтягивающих резистора на 1 кОм, две кнопки, 
    потенциометр для подсветки дисплея
    
    Подключение дисплея 1602:
    Контакт дисплея  	Контакт Arduino	             Значение
      1	                       GND                   Vss
      2                            5V                    Vdd
      3                            GND	             Vo (контрастность)
      4	                       digital 12	     RS
      5	                       digital 11            R/W
      6	                       digital 10            ENABLE
      11	                       digital 5	     DB4
      12	                       digital 4	     DB5
      13	                       digital 3	     DB6
      14                           digital 2	     DB7
      15	                       5V	             LED+
      16                           GND	             LED-
    
     */
     
     // подключаем библиотеку для работы с LCD
     #include <LiquidCrystal.h>
     // инициализируем LCD, указывая контакты данных
     LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
    
    
    // задаем переменные
     int upPin = 8;                  // пин up counter
     int downPin = 7;                // пин down counter
     int Count = 0;                  // счетчик нажатий
    
     int upPinCurentState = LOW;       // текущее состояние кнопки up
     int upPinLastState = LOW;         // предыдущее состояние кнопки up
     int downPinCurentState = LOW;     // текущее состояние кнопки down
     int downPinLastState = LOW;       // предыдущее состояние кнопки down
     
     void setup() {
       
       
       // красивая "загрузка" программы при старте :)
        lcd.begin(16, 2);
        lcd.print("Loading");
        delay(500);                // ждем 0.5 секунды
        lcd.print(".");
        delay(500);                // ждем 0.5 секунды
        lcd.print(".");
        delay(1000);               // ждем 1 секунду
        lcd.clear();               //очистка экрана
      
      
        // Задаем режим работы портов  
         pinMode(upPin, INPUT);      // Инициализация входа кнопки up
         pinMode(downPin, INPUT);    // Инициализация входа кнопки down
     }
     
     void loop() {
       
       // считываем состояние кнопок
       upPinCurentState = digitalRead(upPin);
       downPinCurentState = digitalRead(downPin);
       
       // избавляемся от дребезга если нажата кнопка up
       if (upPinCurentState == HIGH && (upPinLastState == LOW))    {
         if (upPinCurentState =! upPinLastState) delay (50);
         upPinCurentState = HIGH;
         upPinLastState = HIGH;
         Count++;
       }else {
          if (upPinCurentState == LOW) upPinLastState = LOW;
       }
       
       // избавляемся от дребезга если нажата кнопка down   
       if (downPinCurentState == HIGH && (downPinLastState == LOW))    {
         if (downPinCurentState =! downPinLastState) delay (50);
         downPinCurentState = HIGH;
         downPinLastState = HIGH;
         Count--;
       }else {
          if (downPinCurentState == LOW) downPinLastState = LOW;
       }
       
         
    
    
         lcd.setCursor(0, 0);    // устанавливаем курсор в 0-ом столбце, 1 строке
         lcd.print("Count="); 
         lcd.print(Count); 
         lcd.print("    ");      // затрем цифры в конце от прошлого значения, если 
                                 //предыдущее значение имело больше символов
    
     }
    


    Схема подключенияСхема подключения


    Собранная схема на макеткеСобранная схема на макетке

     
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Чтобы Вам были доступны все функции Вам необходимо либо зарегистрироваться, либо зайти на сайт под своим именем.

    Другие новости по теме:

  • Ethernet погодная станция
  • Получение Root доступа на ViewSonic ViewPad 7
  • Скрипт для мониторинга свободного места на локальных дисках с уведомлением ...
  • Восстановление RDP после Trojan-Spy.Win32.Zbot
  • CHM-файл с описанием настроек ОС семейства Windows Mobile


  • Комментарии:

    Оставить комментарий



     
    Информация
     
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


    Поиск по сайту:


    Облако тегов
    Android, Arduino, backup, CentOS, cmd, css, DLE, DLE хаки, domoticz, dzvents, Home Assistant, HomeAssistant, Linux, log, LUA, Monster, ogf3, Template, VBS, w2k8, windows, WSH, xiaomi, бумага, бумажный самолетик, верстка, иструкция, Карты, кино, Навигация, оригами, программа, рецензия, рецепт, скрипт, уведомления, фигуры, шаблон, Яндекс, яндекс-карты

    Показать все теги
    Реклама
    раскрутка сайта бесплатно
    Главная страница | Регистрация | Добавить новость | Новое на сайте | Статистика | Поддержка | Правила ресурса Copyright © 2005-2021 by dimon - all right reserved!
    Тираж:           экземпляров.   Дизайн, верстка by dimon