Ovládání serva pomocí joystick modulu

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.

Další podobné články

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy. 

Electronic TiltMaze

Cílem tohoto projektu je vytvoření jednoduchého ovládacího systému, který umožňuje naklápění dvou servomotorů pomocí analogového joysticku. Platforma řízená servomotory může simulovat pohyb například v ose X a Y — tedy naklánění doleva/doprava a dopředu/dozadu. Tento systém může sloužit jako základ pro různé aplikace:

- Manuální ovládání kamery nebo senzoru (např. na pohyblivé konstrukci nebo robotovi)
- Interaktivní ovládací panel pro školní projekty nebo herní ovladač