Сьогодні оптичні енкодери (датчики положення вала) широко використовуються в багатьох областях електроніки і робототехніки. Вони застосовуються в пристроях для визначення положення вала двигуна, системах управління швидкістю, принтерах, верстатах з ЧПУ і т.д.
Плату Arduino також можна навчити працювати з оптичним енкодером, що дозволить реалізувати більше цікавих і практичних пристроїв.
Основним елементом простого оптичного енкодера є оптопрериватель (фотопрериватель), що складається з інфрачервоного світлодіода і фототранзистор, які розміщені один навпроти одного в пластмасовому корпусі. При блокуванні непрозорою частиною диска світла, випромінюваного світлодіодом, провідність фототранзистор змінюється. Ця зміна може бути визначено дискретними компонентами або мікро контролером.

Оскільки нам потрібно створювати імпульси на вході фототранзистор, то необхідний диск з прозорими частинами або вирізами. Такий диск можна зробити з прозорого акрилу, наклеївши на нього роздрукований на принтері малюнок, який представлений нижче. Також можна вирізати відповідну фігуру з непрозорого акрилу.

Для початку потрібно зібрати представлену нижче схему, яка складається з Arduino і оптопреривателя з обв'язкою. Резистор R2 є підтягуючим. Значення резистора R1 залежить від того, який переривник ви використовуєте. До висновку D13 підключається світлодіод, який спрацьовує при перериванні променя. D12 є допоміжним вихід, який може бути використаний для моніторингу сигналу енкодера на екрані осцилографа.

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

Можливості поліпшення коду
Є два основних способи зчитувати сигнал з цифрового входу мікроконтролера: за опитуванням і по перериванню. У першому випадку система зчитує сигнал кожного разу всередині основного циклу програми (як в даному прикладі). Основним недоліком цього методу є те, що важко вести обробку інших сигналів під час опитування. Але з використанням переривань основний цикл звільняється від частини коду з опитуванням, і система може спокійно займатися іншими справами, поки на вхід не прийде сигнал. З надходженням сигналу, основні роботи будуть припинені, система увійде в переривання для зчитування імпульсу, потім вийде, відновивши попередню роботу. Так що, якщо вам не вистачає швидкодії, то скористайтеся переривань.