Взаимодействието между Arduino и контролер за PlayStation 2 е невероятно интересно за проекти за роботика и автоматизация. Безжичният контролер PS2 е универсален и много достъпен контролер, способен да предлага разнообразие от аналогови и цифрови входове. Въпреки че по принцип може да изглежда като сложна задача, интегрирането на тези две системи е доста достъпно благодарение на различни библиотеки и инструменти, които вече са разработени за улесняване на процеса.
Безжичният PS2 контролер е ергономична и икономична опция за управление на роботи, 4×4 превозни средства или всякакъв тип проекти, където се изисква плавно и практично дистанционно управление. Използването на този контролер с Arduino е решение, което избират много любители, тъй като е не само евтино, но осигурява високопрецизно управление благодарение на своите два аналогови стика и набор от 14 бутона.
Предимства от използването на PS2 контролер с Arduino
Едно от основните предимства на ps2 контролер е, че е така безжична, което ви позволява да осигурите на вашите проекти мобилност без ограничението на кабелите. Освен това, той е много удобен за използване благодарение на ергономичния си дизайн, оптимизиран за дълги игрални сесии, което го прави идеален за контролиране на роботи или други устройства за продължителни периоди, без да се засяга прецизността или отзивчивостта.
Друг важен аспект е цената. Клониран PS2 контролер може да бъде намерен за по-малко от €10. За тази цена получавате контролер с голям брой бутони и аналогови входове, което го прави изключително привлекателна опция за проекти за дистанционно управление.
За да интегрирате този контролер с Arduino, в допълнение към самия контролер и приемника, обикновено се използва преобразувател на логическо ниво което позволява 3,3V сигналите на PS2 контролера да бъдат регулирани до 5V, с които Arduino работи в повечето си версии.
Необходими материали
- Безжичен PS2 контролер. Клонинг на този контролер струва между 9 и 10 евро.
- безжичен приемник за контролера, обикновено включен в пакета.
- Преобразувател на логически нива. Това е необходимо, тъй като Arduino работи на 5V, а PS2 контролерът работи с 3,3V сигнали.
- Arduino. Можете да използвате всеки модел, като напр Arduino Uno, Мега или Мини.
- Макет и кабели за свързване между приемника и Arduino.
Връзки и монтаж
Безжичният приемник, който придружава PS2 контролера, е ключовата част за комуникация между двете. Този компонент се свързва към Arduino чрез серия от щифтове, които варират в зависимост от приемника, но обикновено включват захранване (5V и GND), данни, часовник и други спомагателни устройства като щифт за внимание или вибрация.
Важна препоръка е да не се доверявате на цветовия код на кабелите, тъй като той може да варира в зависимост от производителя. Най-добре е да използвате мултицет, за да проверите функционирането на всеки от тях, което ще избегне евентуални грешки при свързването.
След като идентифицирате правилно щифтовете, можете да използвате a макет за запояване или свързване на различните сигнали към Arduino, или ако предпочитате да монтирате всичко компактно, можете също да запоите кабелите директно към приемника, като винаги се уверявате, че връзките са правилни.
Много е важно да използвате a преобразувател на логическо ниво тъй като, както споменахме, PS2 контролерът работи на 3,3V, докато повечето платки Arduino работят на 5V. Този преобразувател ще позволи на двете системи да „говорят“ помежду си, без да причиняват щети.
Конфигурация и библиотека за PS2 контролера
За да контролирате PS2 контролера с Arduino, има a фундаментална библиотека, наречена PS2X_lib, създаден от Bill Porter, което значително улеснява използването на този тип контроли. Този софтуер ще ви позволи да управлявате всички сигнали, които контролерът изпраща през своя безжичен приемник.
Инсталирането на тази библиотека е много лесно и можете да я намерите на GitHub. След като го изтеглите и инсталирате във вашата среда за разработка Arduino, можете да започнете да работите с него.
Следващата стъпка ще бъде да конфигурирате щифтовете в кода на Arduino. Ще трябва да се уверите, че дефинирате правилно щифтовете. часовник, команда, данни y внимание които съответстват на входовете и изходите на вашите Arduino. Това е жизненоважно, тъй като неправилното назначаване на щифтове може да доведе до неправилна реакция на контролера.
Следният кодов фрагмент показва как да конфигурирате тези пинове:
#include
PS2X ps2x; // crear la clase para el mando PS2
int error; // variable para errores
#define PS2_CLK 34
#define PS2_CMD 24
#define PS2_ATT 32
#define PS2_DAT 22
// Configuramos los pines para el mando
error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_ATT, PS2_DAT, true, true);
След като щифтовете са конфигурирани, можете да започнете да четете сигналите, които контролерът изпраща чрез кода. Библиотеката предоставя специфични методи за проверка дали a бутон е натиснат, както и за получаване на стойностите аналогов на джойстиците на контролера.
Четене на бутони
El ps2 контролер има до 14 бутона, разпределени между предната и задната част на управлението. За да прочетете предните и задните бутони, можете да използвате следния код:
if (ps2x.Button(PSB_PAD_UP)) {
Serial.println("Arriba");
} else if (ps2x.Button(PSB_PAD_DOWN)) {
Serial.println("Abajo");
} else if (ps2x.Button(PSB_PAD_LEFT)) {
Serial.println("Izquierda");
} else if (ps2x.Button(PSB_PAD_RIGHT)) {
Serial.println("Derecha");
}
В допълнение към бутоните за посока, можете да прочетете активирането на бутони за действие като Кръг, X, квадрат и триъгълник, по подобен начин.
Четене с джойстик
Лос аналогови джойстици Контролерът PS2 предоставя непрекъснати стойности, които можете да използвате, за да движите двигатели или да контролирате посоката и скоростта на робот, например. Стойностите варират от 0 до 255, като 127 е централната стойност, когато джойстиците са в покой.
int LX = ps2x.Analog(PSS_LX);
int LY = ps2x.Analog(PSS_LY);
int RX = ps2x.Analog(PSS_RX);
int RY = ps2x.Analog(PSS_RY);
Serial.print("Stick Values: ");
Serial.print(LX);Serial.print(",");
Serial.print(LY);Serial.print(",");
Serial.print(RX);Serial.print(",");
Serial.println(RY);
С тези стойности можете да контролирате скоростта на двигателите в зависимост от това колко натиск се упражнява върху лостовете за управление.
Практически примери
Контрол а 4x4 роувър робот с PS2 контролер е класически пример за приложенията на този тип контролери. Това сглобяване става особено лесно с a Мега Ардуино, тъй като предлага повече пинове и повече памет, което ви позволява да управлявате няколко двигателя и сензори едновременно.
Следният код показва основен пример за това как да управлявате марсоход с помощта на бутоните за посока на контролера:
void loop() {
ps2x.read_gamepad();
if (ps2x.Button(PSB_PAD_UP)) {
avance();
} else if (ps2x.Button(PSB_PAD_DOWN)) {
retroceso();
} else if (ps2x.Button(PSB_PAD_LEFT)) {
giroIzquierda();
} else if (ps2x.Button(PSB_PAD_RIGHT)) {
giroDerecha();
} else {
paro();
}
}
Това е прост пример за това как различните бутони на контролера могат да контролират движението на превозното средство, но използването на джойстици би позволило по-плавни и по-прецизни движения, контролирайки както посоката, така и скоростта на робота.
С правилна интеграция и конфигурация, този контролер се превръща в много мощен инструмент за управление на почти всеки електронен проект, базиран на Arduino.
комбинирам a контролер за playstation 2 С Arduino той отваря широка гама от възможности за управление на проекти на роботи, автоматизирани системи или дори по-прости системи като роботизирани ръце. Големият брой бутони и прецизността на джойстиците правят този контролер отличен избор за тези, които искат да добавят дистанционно управление към своите компилации с познат, ергономичен интерфейс.