This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
// пример с прерываниями pinChangeInterrupt (прерывания на любом пине)
// только для ATmega328 (UNO, Nano, Pro Mini)
#define BTN_PIN 3
#include"GyverButton.h"
GButtonbutt1(BTN_PIN);
voidsetup(){
Serial.begin(9600);
// настроить PCINT
attachPCINT(BTN_PIN);
}
voidloop(){
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_tattachPCINT(uint8_tpin){
if(pin<8){// D0-D7 // PCINT2
PCICR|=(1<<PCIE2);
PCMSK2|=(1<<pin);
return2;
}
elseif(pin>13){//A0-A5 // PCINT1
PCICR|=(1<<PCIE1);
PCMSK1|=(1<<pin-14);
return1;
}
else{// D8-D13 // PCINT0
PCICR|=(1<<PCIE0);
PCMSK0|=(1<<pin-8);
return0;
}
}
// Векторы PCINT, нужно кинуть сюда тики
// не обязательно в каждый вектор, достаточно в тот, который задействован