Add libraries dir
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
// пример с прерываниями pinChangeInterrupt (прерывания на любом пине)
|
||||
// только для ATmega328 (UNO, Nano, Pro Mini)
|
||||
|
||||
#define BTN_PIN 3
|
||||
|
||||
#include "GyverButton.h"
|
||||
GButton butt1(BTN_PIN);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
|
||||
// настроить PCINT
|
||||
attachPCINT(BTN_PIN);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
butt1.tick(); // обязательно нужен отработчик ещё и в loop, чтобы работали таймауты
|
||||
|
||||
if (butt1.isClick()) Serial.println("Click"); // проверка на один клик
|
||||
if (butt1.isSingle()) Serial.println("Single"); // проверка на один клик
|
||||
if (butt1.isDouble()) Serial.println("Double"); // проверка на двойной клик
|
||||
if (butt1.isTriple()) Serial.println("Triple"); // проверка на тройной клик
|
||||
}
|
||||
|
||||
// функция для настройки PCINT для ATmega328 (UNO, Nano, Pro Mini)
|
||||
uint8_t attachPCINT(uint8_t pin) {
|
||||
if (pin < 8) { // D0-D7 // PCINT2
|
||||
PCICR |= (1 << PCIE2);
|
||||
PCMSK2 |= (1 << pin);
|
||||
return 2;
|
||||
}
|
||||
else if (pin > 13) { //A0-A5 // PCINT1
|
||||
PCICR |= (1 << PCIE1);
|
||||
PCMSK1 |= (1 << pin - 14);
|
||||
return 1;
|
||||
}
|
||||
else { // D8-D13 // PCINT0
|
||||
PCICR |= (1 << PCIE0);
|
||||
PCMSK0 |= (1 << pin - 8);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Векторы PCINT, нужно кинуть сюда тики
|
||||
// не обязательно в каждый вектор, достаточно в тот, который задействован
|
||||
// пины 0-7: PCINT2
|
||||
// пины 8-13: PCINT0
|
||||
// пины A0-A5: PCINT1
|
||||
ISR(PCINT0_vect) {
|
||||
//butt1.tick();
|
||||
}
|
||||
ISR(PCINT1_vect) {
|
||||
//butt1.tick();
|
||||
}
|
||||
ISR(PCINT2_vect) {
|
||||
butt1.tick();
|
||||
}
|
||||
Reference in New Issue
Block a user