Cílem tohoto projektu je se naučit jak ovládat servo pomocí joystick modulu a Arduina v našem případě pomocí Arduina Una R3. +Vysvětlení kódu.
- Joystick měří pohyb páčky v různých směrech a přenáší ho jako hodnoty.
- Servo nastavuje svou polohu na daný úhel podle vstupního signálu. Spolu joystick a servo umožňují přesné ovládání směru a polohy.
CO POTŘEBUJI?
- Arduino (v tomto případě Uno R3 může být i klon)
- Joystick module (QYF-860)
- Servo (180°)
- Dráty (6)
Viz foto:
ZAPOJENÍ
U joystick modulu používáme jenom osu X (VRX).
Viz schéma:
KÓD A OŽIVENÍ
V Arduino IDE zadáme kód a uploadujeme
#include <Servo.h> Servo myServo; // Vytvoření objektu Servo int joystickXPin = A0; // Pin, ke kterému je připojen joystick modul (VRx) int servoPin = 9; // Pin, ke kterému je připojeno servo int servoAngle = 90; // Výchozí úhel serva (střední pozice 90°) int tolerance = 10; // Tolerance pro středovou pozici joysticku (Jostick modul nebude ujíždět) void setup() { myServo.attach(servoPin); // Připojení serva na pin myServo.write(servoAngle); // Nastavení výchozí pozice serva na střed (90°) Protože máme 180° servo. Serial.begin(9600); // Inicializace sériové komunikace (pro ladění) } void loop() { int joystickX = analogRead(joystickXPin); // Čtení hodnoty joysticku (VRx) // Mapování hodnot joysticku (0 - 1023) na rozsah serva (0 - 180°) if (joystickX > 512 + tolerance || joystickX < 512 - tolerance) { servoAngle = map(joystickX, 0, 1023, 0, 180); myServo.write(servoAngle); // Nastavení serva podle joysticku } // Krátké zpoždění pro stabilitu delay(10); }
Jak funguje tento kód?
Tento kód ovládá servo motor pomocí joysticku. Joystick čte hodnotu z osy X a pomocí funkce map() převádí tuto hodnotu (0 až 1023) na úhel (0 až 180°), který určuje polohu serva. Servo se otáčí podle pohybu joysticku: čím více je joystick posunutý vpravo, tím více se servo otočí doprava, a naopak.