Потенциометрите и ротационните енкодери изглеждат почти идентични на пръв поглед, но работят по различни начини. Открийте как да използвате и двете с Arduino.

Сред електронните потребителски контролни компоненти, въртящите се копчета се открояват като едни от най-удовлетворяващите за използване. Те могат да допълват сензорни екрани и други устройства за въвеждане, както и да работят добре с бутони и превключватели. Но как можете да добавите копче към собствените си DIY Arduino проекти?

Имате две основни опции: потенциометър или ротационен енкодер. Тези компоненти може да изглеждат подобни, но методите за използването им с устройство като платка за микроконтролер Arduino са много различни. Нека да видим как се сравняват един с друг.

Потенциометри срещу. Ротационни енкодери

Повечето от потенциометрите и ротационните енкодери, които ще срещнат ентусиастите на Направи си сам, идват в подобен форм фактор. Те имат кубовидна или цилиндрична основа с прикрепени съединителни крака и кръгъл вал, който се усуква и има изрези за поставяне на капачка.

instagram viewer

Някои потенциометри наистина изглеждат различно, като тези, които идват под формата на дълги плъзгачи, като тези, които се намират на музикалните смесителни декове. Що се отнася до ротационния вид обаче, на пръв поглед те изглеждат почти идентични с ротационните енкодери, така че ще ви бъде простено да си помислите, че са еднакви.

Какво е потенциометър?

Потенциометърът е по същество променлив резистор. Когато валът се завърти, съпротивлението вътре в потенциометъра се променя, което позволява на потребителя да променя свойствата на веригата, без да се налага да я създава отново. Потенциометрите могат да бъдат както аналогови, така и цифрови, но цифровите потенциометри имитират аналоговите и това ги прави много сходни за използване.

Потенциометрите винаги имат дефинирана начална и крайна точка, където валът вече не може да се завърти. Някои потенциометри имат неравно усещане при завъртане, но много от тях също са гладки, като тези на старите стереоуредби.

Въпреки че са аналогови, потенциометрите работят добре с микроконтролери. Можете лесно настройте потенциометър с Raspberry Pi Pico или Arduino.

Какво е ротационен енкодер?

Ротационните енкодери определят позицията на своя вал с помощта на сензор, за да осигурят аналогов или цифров сигнал към устройството, към което са свързани. Това казва на устройството в коя позиция е енкодерът. Наред с въртящия се вал, ротационните енкодери обикновено имат и вграден бутон, който се задейства чрез натискане на вала надолу.

За разлика от потенциометрите, ротационните енкодери могат да се въртят без спиране и почти винаги имат тактилни неравности за всяка позиция на вала. Много съвременни автомобили използват въртящи се енкодери, за да управляват своите развлекателни системи.

Как да използвате потенциометър с Arduino

Благодарение на простия им дизайн, използването на потенциометър с Arduino е лесно. Вашият потенциометър има три конектора: маса, изход и vref. Щифтовете за заземяване и vref се свързват съответно към GND и 5V конекторите на вашия Arduino, докато изходният щифт на потенциометъра се свързва към един от аналоговите входове на вашата платка.

Код на потенциометъра Arduino

Вашият код на потенциометър Arduino започва с основния настройвам() и цикъл () шаблон, който ще видите, когато създавате нов файл в Arduino IDE. Първо добавете a const int променлива в началото на кода за регистриране на аналоговата пин връзка на пота - в този случай A0.

конствътр потенциометър = A0;

След това, настройвам() функцията е проста: просто трябва да декларирате щифта на вашия потенциометър като вход. Можете също така да стартирате серийна връзка, ако искате да изпратите данни към вашия компютър за диагностика.

невалиденнастройвам(){
pinMode (потенциометър, INPUT);
Сериен.започнете(9600);
}

След това е време да настроите цикъл () функция. Започнете със създаване на вътр променлива с помощта на analogRead() функция за запаметяване на позицията на вашия потенциометър. След това можете да използвате карта() функция, за да намалите размера на стойността, с която работите - в този пример, за да съответства на спецификациите на PWM, например за контролиране на яркостта на светодиод. Добавете кратко забавяне, за да осигурите стабилност.

невалиденцикъл(){
вътр potentiometerValue = analogRead (потенциометър);
карта (potenciometerValue, 0, 1023, 0, 255);
Сериен.println(стойност на потенциометъра);
забавяне (10);
}

Сега, когато имате позицията на вашия потенциометър, можете да го използвате с други части на кода. Например ан ако ще работи добре за задействане на код, когато потенциометърът е в определена позиция.

конствътр потенциометър = A0;

невалиденнастройвам(){
pinMode (потенциометър, INPUT);
Сериен.започнете(9600);
}

невалиденцикъл(){
вътр potentiometerValue = analogRead (потенциометър);
карта (potenciometerValue, 0, 1023, 0, 255);
Сериен.println(стойност на потенциометъра);
забавяне (10);
}

Как да използвате ротационен енкодер с Arduino

Ротационните енкодери изискват по-сложен код от потенциометрите, но все още са доста лесни за работа. Вашият ротационен енкодер има пет щифта: заземяване, VCC, щифт за бутон (SW), изход A (CLK) и изход B (DT). Щифтовете за заземяване и VCC се свързват съответно със заземяващите и 5V конектори на вашия Arduino, докато щифтовете SW, CLK и BT се свързват към отделни цифрови конектори на Arduino.

Код на ротационен енкодер Arduino

За да направим нашия код по-прост и лесен за работа, ще използваме библиотеката SimpleRotary Arduino, създадена от MPrograms на GitHub. Уверете се, че сте инсталирали тази библиотека, преди да започнете да работите върху вашия код.

Подобно на кода на вашия потенциометър, можете да стартирате скрипта на вашия ротационен енкодер с основния Arduino настройвам() и цикъл () функционален шаблон. Започнете с деклариране на библиотеката SimpleRotary и задаване на вашите щифтове на енкодера в този ред; CLK, DT и SW.

#включи 
SimpleRotary ротационен(1,2,3);

Не е необходимо да добавяте нищо към вашите настройвам() функция, освен ако не искате да използвате серийния монитор за диагностика на вашия ротационен енкодер.

невалиденнастройвам(){
Сериен.започнете(9600);
}

The цикъл () функция е различна история. Определянето на въртенето на вала на енкодера започва с a rotary.rotate() извикване на функция, която е присвоена на вътр променлива. Ако резултатът е 1, енкодерът се върти по посока на часовниковата стрелка. Ако резултатът е 2, енкодерът се върти обратно на часовниковата стрелка. Резултатът винаги ще бъде 0, ако енкодерът не се е завъртял от последната проверка.

Можеш да използваш ако инструкции за задействане на друг код в зависимост от посоката на въртене на енкодера.

невалиденцикъл(){
вътр енкодерВъртене;
encoderRotation = rotary.rotate();

if (encoderRotation == 1) {
Serial.println("по часовниковата стрелка");
}

if (encoderRotation == 2) {
Serial.println("обратно на часовниковата стрелка");
}
}

Трябва също да добавите някакъв код за бутона на вашия енкодер към цикъл () функция. Този процес е много подобен, с изключение на това, че ще използвате rotary.push() функция, а не rotary.rotate().

невалиденцикъл(){
вътр encoderButton;
encoderButton = rotary.push();

if (encoderButton == 1) {
Serial.println("натиснат бутон");
}
}

Този скрипт е доста прост и можете да направите много, за да го направите свой собствен. Струва си да проверите документацията на проекта SimpleRotary, за да сте сигурни, че използвате всичките му ключови функции. Веднъж сглобен, кодът на вашия енкодер трябва да изглежда така.

#включи 
SimpleRotary ротационен(1,2,3);

невалиденнастройвам(){
Сериен.започнете(9600);
}

невалиденцикъл(){
вътр енкодерВъртене;
encoderRotation = rotary.rotate();

if (encoderRotation == 1) {
Serial.println("по часовниковата стрелка");
}

if (encoderRotation == 2) {
Serial.println("обратно на часовниковата стрелка");
}

вътр encoderButton;
encoderButton = rotary.push();

if (encoderButton == 1) {
Serial.println("натиснат бутон");
}
}

Как да избирате между потенциометри и ротационни енкодери за проекти

Както можете да видите, ротационните енкодери и потенциометри работят по съвсем различен начин. И двата компонента ви дават нови начини за управление на вашите електронни проекти, но кой да изберете?

Потенциометрите са достъпни и лесни за използване, но позволяват само ограничен входен диапазон. Това ги прави страхотни, когато искате да контролирате яркостта на светодиод или да повишавате и намалявате захранването към определени компоненти и други подобни задачи.

Ротационните енкодери осигуряват много повече обхват от потенциометрите. Включването на бутон означава, че те са чудесни за системи за управление с менюта, както се вижда в много съвременни автомобили. Този тип компоненти станаха много популярни в пространството за изграждане на механични клавиатури. Можете дори изградете малък макропад с вграден енкодер.

Подобен външен вид, различни компоненти

С цялата тази информация под колана си, трябва да сте готови да започнете с електронен проект с потенциометър или ротационен енкодер. Тези компоненти могат да ви осигурят голям контрол върху веригите, които изграждате, но трябва да сте сигурни, че сте избрали правилната опция за вашия проект.