Будуємо лічильник, який при натисканні кнопки збільшує значення на 1 і при досягненні певного значення лічильник скидається на нуль. Для індикації значення використаємо світлодіоди.
Розташуємо плату і світлодіоди на макеті зручним способом:
Живлення схеми буде від плати Arduino, тому з'єднаємо загальні шини живлення з пінами 5V (на "+") i GND (на "-"):
Мінус-шину через резистори 220Ом з'єднуємо з катодами діодів:
Аноди діодів підключаємо до пінів D4, D7, D8 - це прості цифрові піни GPIO, що будуть працювати в режимі виводу:
Тепер з піна D2 відведемо дріт окремо для кнопки. Це також звичайний GPIO пін, який буде працювати в режимі вводу:
В режимі, коли кнопка не натиснута, на вході D2 має бути низький рівень. Для цього з'єднаємо D2 з мінус-шиною через резистор 10кОм. Такий резистор називається pull-down резистором:
Тепер через кнопку під'єднаємо шину "+" так, щоб при натисканні на неї на D2 подавався високий рівень:
Схема готова. Тепер створимо новий проєкт в PlatformIO або Arduino IDE і в файл main.cpp запишемо такий код:
#include <Arduino.h> //підключаємо бібліотеку Arduino
//визначаємо назви пінів світлодіодів
#define LED1_PIN 4
#define LED2_PIN 7
#define LED3_PIN 8
//пін кнопки
#define BUTTON_PIN 2
int counter; //змінна-лічильник
bool btnLock = false; //змінна блокування кнопки
void display(int num); //функція індикації по значенню лічильника
void setup() { //ця функція викликається 1 раз при запуску
counter = 0; //початкове значення лічильника
pinMode(BUTTON_PIN, INPUT); //переводимо пін кнопки в режим введення
//піни світлодіодів - в режим виведення
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
}
void loop() { //основний цикл програми
//зчитуємо значення з піну кнопки
//коли кнопка натиснута - 1 (високий рівень), інакше - 0 (низький рівень)bool btnPressed = digitalRead(BUTTON_PIN);
//якщо кнопка натиснута і ще не заблокованаif(btnPressed && !btnLock) {
//в першу чергу блокуємо її для запобігання
//повторного спрацьовування якщо кнопка утримується натиснутоюbtnLock = true;
//збільшуємо значення лічильника на одиницюcounter++;
//якщо значення більше 3 скидаємо лічильник до нуляif(counter > 3)
counter = 0;
display(counter); //відображаємо значення лічильника
}
//якщо кнопка вже не натиснута і все ще заблокована, розблоковуємо її
if(btnLock && !btnPressed)
btnLock = false;
delay(1); //мінімальна затримка 1мс
}
void display(int num) { //функція відображення значення
//вимикаємо всі діодиdigitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
//якщо переданий аргумент 1 або більше, вмикаємо перший світлодіод
if(num >= 1)
digitalWrite(LED1_PIN, HIGH);
//якщо 2 або більше - вмикаємо другий
if(num >= 2)
digitalWrite(LED2_PIN, HIGH);
//більше 2 - третійif(num > 2)
digitalWrite(LED3_PIN, HIGH);
}
Компілюємо код, підключаємо плату Arduino через USB і завантажуємо програму на плату:


Ось такий результат вийшов. Можете погратися з кодом і зробити, наприклад, лічильник від 0 до 7 з виводом у бінарному вигляді. А я побіг - пора годувати котика ;-)