Працюємо з 09:00 до 20:00 без вихідних.
Самовивіз - Київ біля ТЦ Квадрат бул.Перова

Спочатку я збирався написати статтю про фільтрацію брязкоту кнопки, що підключена до контролера Arduino за допомогою конденсатора, в результаті в мене самого брязкоту так і не вийшло, а вийшло стопроцентне спрацьовування кнопки, якою вона повинна бути в ідеалі. При цьому не довелося застосовувати ні конденсаторів, ні програмних фільтрів - все і так чудово працює.

В інтернеті блукають безліч схем підключення кнопок до дискретних входів Arduino. На них частіше всього пропонують кнопку з'єднувати з нулем живлення та дискретним входом, до якого ще підвести резистор 10 кОм, що з'єднаний з плюсом живлення 5 В. Цей резистор дозволяє контролеру однозначно ідентифікувати відсутність натискання на кнопку. Інакше без резистора на вході може з'являтись неоднозначний логічний рівень, особливо при нестабільному джерелі живлення або довгих кабелях, що з'єднують кнопку з контролером. При виникненні таких негативних факторів, на вході взагалі може виникати навіть пульсуюча напруга.

Але навіщо використовувати зайві зовнішні резистори, якщо можна використати передбачені внутрішні. Виробники сучасних контролерів передбачають необхідність таких підтягуючих резисторів та впроваджують їх прямо в кристал. Активувати їх можна програмним шляхом. В мікроконтролерах STM, наприклад, доступні для активації два резистори по 10 кОм: підтягуючий на нуль живлення та підтягуючий на плюс живлення. А розробники Arduino вирішили, що користувачам вистачить і одного, підтягуючого до плюса резистора (20 ... 50 кОм у всіх контролерів по різному). При такому виборі з одного резистора нам доступна тільки обернена логіка дискретного входу для кнопки (якщо натиснули на кнопку то отримуємо логічний нуль).



Наводжу приклад моєї стабільно працюючої програми, котра підраховує кількість натискань на кнопку та передає значення цієї кількості в монітор порта. Програма додає одиницю до лічильника натискань за негативного перепаду логічного рівня на дискретному вході. В програмі також наведено приклад програмного підключення внутрішнього підтягуючого резистора для входу.


const int button = 5;     // вивід контролера для кнопки
int count = 0;         // змінна для підрахунку натискань на кнопку
int button_old = 1;    // попереднє значення входу для відлову моменту натискання
void setup() {
  //ініціалізація зв'язку з монітором порта
  Serial.begin(9600);
  //конфігурація входу контролера та підключення внутрішнього підтягуючого резистора
  pinMode(button, INPUT_PULLUP);
}
void loop() {
  if ((digitalRead(button)==LOW)&&(button_old==1))
  { 
    count = count + 1;
    Serial.println(count);
  }
  button_old = digitalRead(button); 
  
  delay(10);
}


При натисканні на кнопку, в монітор порта додається новий рядок зі збільшеною цифрою.

Зв'язка кнопки з контролером Arduino UNO при такій реалізації показала завидну стабільність та безвідмовність. Як я не намагався збити контролер з пантелику, натискаючи то занадто коротко, то занадто довго, брязкоту так і не добився. Та був просто здивований точністю відпрацьовування. Не було ні разу такого, щоб при натисканні одиниця не додалася або додалося декілька одиниць. Та враховуючи те, що переді мною зовсім недавно поставали задачі зробити ручні лічильники для спортивних підрахунків (кількість кутових, фолів... на міні-футбольному матчі), а я порекомендував замовнику купити механічні лічильники, не довіряючи стабільності відпрацьовування кнопок, зараз я вже більше довіряв би електронним кнопкам з Arduino.

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Твердотільне реле 10А

Твердотільне реле 10А

Реле без механічних контактів на 10 А. Силовим елементом даного реле є симистор.Гальванічна розв'язк..

131.42грн.

Гвинтовий конектор на три дроти

Гвинтовий конектор на три дроти

Монтується на друковану плату або макетну платуВідстань між виводами 5 мм..

4.14грн.

Найпростіший спосіб перевірки GSM-модуля

Найпростіший спосіб перевірки GSM-модуля

Бувають миті в житті розробника, коли нас виводить із себе така штуковина як GSM модуль до любительс..

Блок живлення 5 В 2 А з роз'ємом 5,5мм x 2,5мм

Блок живлення 5 В 2 А з роз'ємом 5,5мм x 2,5мм

Вхідна напруга змінного струму 100...240 В 50/60 ГцВихідна стабілізована напруга 5 ВМаксимальний стр..

97.61грн.

Світлодіод ультраяскравий 3мм

Світлодіод ультраяскравий 3мм

Над-яскравий світлодіод діаметром 3 ммКорпус прозорий в світлодіодів різного кольору світіння. Тобто..

0.67грн.