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

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

Опрос

gismeteo.ru
Погода на Яндексе
pogoda.ru
meteonova.ru
по телевизору
за окном
в газете
а че его смотреть?
в другом месте
по счетчику гейгера



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

Архив новостей
Февраль 2021 (3)
Январь 2021 (1)
Ноябрь 2020 (2)
Июль 2020 (2)
Июнь 2020 (3)
Май 2020 (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, div, DLE, DLE хаки, domoticz, dzvents, event, Home Assistant, Linux, log, LUA, Monster, ogf3, RDP, Template, VBS, windows, WSH, бумага, бумажный самолетик, верстка, иструкция, Карты, кино, Навигация, оригами, программа, рецензия, рецепт, скрипт, фигуры, шаблон, Яндекс, яндекс-карты

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