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.