30 lines
		
	
	
		
			975 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			975 B
		
	
	
	
		
			C++
		
	
	
	
| // Пример с обработчиками в прерывании
 | ||
| 
 | ||
| #include <EncButton.h>
 | ||
| EncButton<EB_CALLBACK, 2, 3, 4> enc;   // энкодер с кнопкой <A, B, KEY>
 | ||
| 
 | ||
| void setup() {
 | ||
|   Serial.begin(9600);
 | ||
|   enc.attach(TURN_HANDLER, myTurn);   // подключим поворот
 | ||
| 
 | ||
|   // прерывание обеих фаз энкодера на функцию isr
 | ||
|   attachInterrupt(0, isr, CHANGE);
 | ||
|   attachInterrupt(1, isr, CHANGE);
 | ||
| }
 | ||
| 
 | ||
| void myTurn() {
 | ||
|   Serial.print("TURN_HANDLER: ");
 | ||
|   Serial.println(enc.counter);
 | ||
| }
 | ||
| 
 | ||
| void isr() {
 | ||
|   enc.tickISR();  // тикер в прерывании
 | ||
|   // Не вызывает подключенные коллбэки внутри прерывания!!!
 | ||
| }
 | ||
| 
 | ||
| void loop() {
 | ||
|   enc.tick();   // дополнительный опрос таймаутов и коллбэков в loop
 | ||
|   // вызов подключенных функций будет здесь,
 | ||
|   // чтобы не грузить прерывание
 | ||
| }
 |