ESP32 оқулығы 26/55 - Джойстикті Arduino-мен қолдану әрекет жасау | SunFounder ESP32 IoT жинағы
Бұл оқулықта біз SunFounder компаниясының XY джойстигін ESP32 микроконтроллеріне қосу арқылы оның орнын анықтауды және оның кірісіне негізделген әрекеттерді орындауды үйренеміз. Сондай-ақ, джойстик белгілі бір позицияға жылжытылғанда іске қосылатын дыбыстық сигнал құрылғысын (buzzer) біріктіреміз. Бұл комбинация нақты уақыт режимінде пайдаланушы кірісіне жауап беретін интерактивті жобаларды жасауға мүмкіндік береді.
XY джойстигі X және Y позицияларына сәйкес келетін екі аналогтық шығысты және әрекетті іске қосу үшін басуға болатын қосқышты қамтамасыз етеді. Джойстиктен мәндерді оқу арқылы біз жобамыздағы әртүрлі элементтерді, мысалы, дыбыстық сигнал құрылғысын іске қосу немесе экранда мәндерді көрсету сияқты басқара аламыз. Процесті толық түсіну үшін қосымша ақпарат алу үшін бейнені міндетті түрде қараңыз (бейнеде 00:00).
Аппараттық құралдар түсіндірмесі
Бұл жобаның негізгі компоненттеріне ESP32 микроконтроллері, XY джойстигі және дыбыстық сигнал құрылғысы кіреді. ESP32 - Wi-Fi және Bluetooth қолдайтын әмбебап плата, бұл оны IoT жобалары үшін өте қолайлы етеді. XY джойстигі X және Y осьтері үшін екі айнымалы резистордан және қосымша кіріс үшін түймелі қосқыштан тұрады.
Джойстик оның орнына сәйкес келетін аналогтық сигналдарды шығарады, олар ESP32 аналогтық түйреуіштері арқылы оқылады. Түйме басылғанда цифрлық сигнал береді. Дыбыстық сигнал құрылғысы ESP32 цифрлық шығыс түйреуішіне қосылған, бұл оны джойстиктің орнына байланысты іске қосуға немесе өшіруге мүмкіндік береді.
Деректер парағының мәліметтері
| Өндіруші | SunFounder |
|---|---|
| Бөлшек нөмірі | XY Joystick Module |
| Жұмыс кернеуі | 3.3 В – 5 В |
| Резистор мәні | 10 кОм (әр ось) |
| Максималды ток | 20 мА |
| Қосқыш түрі | Моменттік түйме |
| Өлшемдері | Шамамен 50 мм x 50 мм |
- ESP32-мен үйлесімділік үшін джойстикті 3.3 В кернеуімен қуаттандырыңыз.
- Қалқымалы кірістерді болдырмау үшін қосқыш үшін жоғары тарту резисторларын қолданыңыз.
- Аналогтық шығыстарды ESP32 ADC түйреуіштеріне қосыңыз (X үшін 34, Y үшін 35).
- Қосқыштың жалған іске қосылуын болдырмау үшін дебаунс механизмін қолданыңыз.
- Кернеу деңгейлерін қауіпсіз жұмыс шектерінде қалуын қамтамасыз ету үшін бақылаңыз.
Сым қосу нұсқаулары

Джойстикті ESP32-ге қосу үшін алдымен джойстиктің жер түйреуішін ESP32 жер түйреуішіне қосыңыз. Әрі қарай, джойстиктің VCC түйреуішін ESP32 3.3 В түйреуішіне қосыңыз. Джойстикте екі аналогтық шығыс түйреуіші бар: X осінің шығысын (VRX деп белгіленген) ESP32 34 түйреуішіне және Y осінің шығысын (VRY деп белгіленген) 35 түйреуішіне қосыңыз.
Қосқыш шығысы үшін қосқыш түйреуішін ESP32 33 түйреуішіне қосыңыз. Бұл түйреуіш түймені басуды цифрлық кіріс ретінде оқиды. Қосылымдардың сенімді болуын қамтамасыз етіңіз, себебі аралық ақаулар болуы мүмкін. Егер сым қосу схемаңыз бейнеден (бейнеде 02:30) өзгеше болса, аналогтық және цифрлық қосылымдар үшін бірдей принциптерді сақтай отырып, сәйкесінше бейімдеңіз.
Код мысалдары және түсіндірме
Кодта біз джойстик түйреуіштері үшін тұрақтыларды анықтаудан бастаймыз. xAxis, yAxis және btn идентификаторлары сәйкесінше 34, 35 және 33 мәндеріне орнатылған. Бұл бағдарлама бойына осы түйреуіштерге сілтеме жасауды жеңілдетеді.
#define xAxis 34
#define yAxis 35
#define btn 33
setup() функциясында біз сериялық байланысты инициализациялаймыз және түйме түйреуішінің режимін кіріс ретінде орнатамыз. Бұл ESP32-ні джойстиктен деректерді оқуға және оларды сериялық мониторға жіберуге дайындайды.
void setup() {
Serial.begin(115200);
pinMode(btn, INPUT);
}
loop() ішінде біз analogRead() көмегімен джойстиктің X және Y осьтерінің аналогтық мәндерін оқып, оларды xValue және yValue айнымалыларында сақтаймыз. Түйме күйі digitalRead() көмегімен оқылып, btnValue айнымалысында сақталады. Соңында, біз бұл мәндерді сериялық мониторға шығарамыз.
void loop() {
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
int btnValue = digitalRead(btn);
Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Оқулар арасындағы кідіріс
}
Бұл цикл мәндерді үздіксіз жаңартып, джойстик қозғалысы мен түйме басулары туралы нақты уақыттағы кері байланысты қамтамасыз етеді. Толық код үшін мақаланың төменінде жүктелген толық кодты қараңыз.
Демонстрация / Не күтуге болады
Орнату аяқталғанда және код жүктелгенде, сериялық монитор X және Y мәндерін түйме күйімен бірге көрсетуі керек. Джойстикті жылжытқанда, мәндер оның орнын көрсетіп, сәйкесінше өзгереді. Түймені басу оның күйін жоғары және төмен арасында ауыстырады.
Жалпы қателіктерге дұрыс емес сым жалғау жатады, бұл қалқымалы кірістерге немесе джойстиктен жауаптың болмауына әкелуі мүмкін. Дұрыс пиндердің қолданылғанына және қосқыш үшін жоғары тарту резисторларының орнатылғанына көз жеткізіңіз. Осы әрекеттердің практикалық демонстрациялары үшін бейнені қараңыз (бейнеде 13:00-де).
Бейне уақыт белгілері
- 00:00 Бастау
- 1:47 XY джойстигіне кіріспе
- 7:32 Джойстик мәндерін өлшеу
- 8:40 Сым жалғау түсіндірілді
- 11:06 ESP32 бар джойстикке арналған Arduino коды түсіндірілді
- 14:43 Arduino IDE-де ESP32 платасын және COM портын таңдау
- 16:24 Джойстикті қарапайым қолдану демонстрациясы
- 19:20 Дыбыстық сигналмен джойстик кодының орнын анықтау
- 21:16 Орнын анықтау демонстрациясы
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33
void setup() {
// Initialize serial communication at 115200 bits per second:
Serial.begin(115200);
// Set the mode of the button pin to input
pinMode(btn, INPUT);
}
void loop() {
// Read the analog value for x,y axis
int xValue = analogRead(xAxis);
int yValue = analogRead(yAxis);
// Read the digital value from the button pin
int btnValue = digitalRead(btn);
// print out the values
Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
delay(300); // Delay between reads
}
Common Course Links
Common Course Files
Ресурстар мен сілтемелер
-
ҚұжаттамаESP32 Tutorial 26/55- SunFounder doc page for joystickdocs.sunfounder.com
Файлдар📁
Файлдар жоқ.