Zum Hauptinhalt springen

Schnellstart: VerseGrip Eingabestift

VerseGrips erweitern den Inverse3 um eine Orientierungsfunktion. In diesem Artikel werden die Einrichtung des VerseGrip Stylus und seine Funktionen beschrieben.

Der VerseGrip-Stift

Der VerseGrip Stylus Inverse3 nutzt eine proprietäre drahtlose Hochgeschwindigkeits-Kommunikationstechnologie, um eine Orientierungsverfolgung und eine handinterne Eingabe/Ausgabe (E/A) zu ermöglichen. Er wurde für eine Vielzahl von Anwendungen entwickelt.

Die wichtigsten Merkmale sind:

  • 2 Tasten zur Benutzereingabe,
  • 1 Kalibrierungstaste,
  • 1 Netz-/Standby-Taste und
  • 2 RGB-LED-Anzeigeleuchten
  • 10-12 Stunden Akkulaufzeit
  • USB-c-Anschluss zum Aufladen
  • Drahtlose Kommunikationsgeschwindigkeit bis zu 1 KHz
  • Bis zu 8 VerseGrip Stylus können mit einem Dongle an einem einzigen Band gekoppelt werden

Der VerseGrip Stylus hat sieben Hauptmerkmale an der Außenseite: (1) Der Kugelanschluss, der in den Inverse3 Gimbal passt, (2) und (3) Eingabetasten, (4) USB-C-Ladeanschluss, (5) Kalibrierungstaste, (6) Status-LEDs und (7) eine Einschalttaste.

Kundenbetreuung

Wenn Sie Fragen oder Bedenken bezüglich Ihres Geräts oder seiner Bedienung haben, wenden Sie sich bitte an unser Support-Team, um Hilfe zu erhalten. Der VerseGrip Stylus enthält eine komplexe, proprietäre Funktechnologie. Das Öffnen des Geräts führt zum Erlöschen der Garantie und kann das Gerät funktionsunfähig machen. Um lange Versandzeiten und teure Reparaturen zu vermeiden, öffnen Sie das Gerät NICHT.

VerseGrip-Stift - Einrichtung und Kalibrierung

In diesem Abschnitt werden die Schritte des Anschließens des Dongles, des Einschaltens des VerseGrip Stylus und der Kalibrierung beschrieben.

Einrichten

  • Stecken Sie den Dongle in eine USB-Buchse an Ihrem Computer.
  • Legen Sie den Griff auf eine ebene Fläche, auf der er sich nicht bewegen kann, wobei die Tasten nach oben und der Kugelstecker auf den Bildschirm gerichtet sein müssen.

Einschalten und Kalibrierung

  • Drücken Sie einmal die Einschalttaste. Die Statusleuchte wird rot und wechselt dann zu blau. Blau zeigt an, dass die IMU im Gerät eine Selbstkalibrierung durchläuft.
  • Nach der Selbstkalibrierung blinkt die Statusleuchte alle 0,5 Sekunden einmal rot. Dies ist der Standby-Modus.
  • Drücken Sie eine beliebige Taste, um das Gerät aus dem Standby-Modus aufzuwecken. Die Statusanzeige blinkt grün, während das Gerät hochfährt, und leuchtet dann dauerhaft grün. Das Gerät überträgt nun Daten an das WLAN.
  • Bei niedrigem Batteriestand schaltet sich der VerseGrip Stylus alle 2 Minuten aus; bitte laden Sie ihn dann sofort wieder auf.

Rekalibrierung

  • Zur Neukalibrierung halten Sie die Kalibrierungstaste drei Sekunden lang gedrückt, oder bis Sie sehen, dass sich die Ausrichtung in Ihrer Simulation verschoben hat.

Standby und Ausschalten

  • Drücken Sie die Netztaste erneut, um in den Standby-Modus zurückzukehren. Die Statusleuchte leuchtet rot und blinkt alle 2 Sekunden, und die Datenübertragung wird beendet.
  • Um den VerseGrip Stylus auszuschalten, halten Sie die Einschalttaste 5 Sekunden lang gedrückt und lassen Sie sie dann los. Wenn Sie loslassen, sollte die Statusleuchte erlöschen und es werden keine Anzeigen mehr angezeigt. Es werden keine Daten mehr übertragen.

Aufladen

  • Schließen Sie den VerseGrip Stylus über die USB-C-Ladebuchse an den Strom an.
  • Die Ladelampe leuchtet blau, wenn das Gerät an das Stromnetz angeschlossen ist, und blinkt schnell blau, wenn es vollständig geladen ist. Wenn Sie das Gerät an das Stromnetz anschließen, startet es und geht in den Standby-Modus.

WARNUNG: Lassen Sie den Akku nicht vollständig entladen. Wenn er einmal entladen ist, kann er seine Ladung nicht mehr halten. In diesem Fall funktioniert der VerseGrip Stylus weiter, solange er eingesteckt bleibt. Dieses Problem tritt nur bei VerseGrip Stylus-Geräten auf, die zwischen August und Dezember 2024 ausgeliefert wurden. Wenden Sie sich an den Haply , um das Firmware-Update zu erhalten, das dieses Problem behebt.

Zustände und Lichtindikatoren

Status Lichtfarbe und VerhaltenStaat
Rot, einfarbigAnstehende Initialisierung von Komponenten
Blau, einfarbigDie IMU im Griff wird selbst kalibriert
Rot, blinkt alle 2 SekundenStandby-Modus. Keine Datenübertragung.
Grün, blinkt alle 2 SekundenNormaler Modus, automatische Übertragung von Daten an den Funk.
Kein Licht, keine AnzeigeDer Strom ist ausgeschaltet.
Farbe der LadekontrollleuchteStaat
Blau, einfarbigAufladen
Blau, schnell blinkendDies zeigt an, dass das Gerät vollständig aufgeladen ist.
Kein Licht, keine AnzeigeDas Gerät wird nicht geladen

Beispiel-Code

Hier ist ein einfaches Beispiel für die Verwendung des Versegrip Stylus mit C++.

#include <external/libhv.h>

#include <nlohmann/json.hpp>

#include <chrono>
#include <cstdio>
#include <string>

using namespace hv;
using json = nlohmann::json;

// Procedure to get the first detected and available Wired VerseGrip Stylus device id
std::string get_first_verse_grip_device_id(const json &data) {
const auto& vgs = data["wireless_verse_grip"];

if (vgs.empty()) {
return "";
}

return vgs.items().begin().key();
}

int main() {
const auto print_delay = std::chrono::milliseconds(100);
auto current = std::chrono::high_resolution_clock::now();
bool first_message = true;
std::string device_id;

WebSocketClient ws;

ws.onmessage = [&](const std::string &msg) {
json data = json::parse(msg);

if (first_message) {
first_message = false;
const std::string first_id = get_first_verse_grip_device_id(data);

if (first_id.empty()) {
printf("no Wireless VerseGrip found.\n");
ws.close();
return;
}

device_id = first_id;
}

if (device_id.empty() || !data["wireless_verse_grip"].contains(device_id)) {
return;
}

const auto now = std::chrono::high_resolution_clock::now();

if (std::chrono::high_resolution_clock::now() > current + print_delay) {
current = now;
const json state = data["wireless_verse_grip"][device_id];

printf("Rotation : { x:%f, y:%f, z:%f, w:%f }, Hall:%i, Button : [%d, %d, %d], Battery: {%f}\n",
state["orientation"]["x"].get<float>(),
state["orientation"]["y"].get<float>(),
state["orientation"]["z"].get<float>(),
state["orientation"]["w"].get<float>(),
state["hall"].get<int8_t>(),
state["buttons"]["a"].get<bool>(),
state["buttons"]["b"].get<bool>(),
state["buttons"]["c"].get<bool>(),
state["battery_level"].get<float>());
}
};

ws.open("ws://localhost:10000");

printf("Press ENTER to stop...\n\n");
while (std::cin.get() != '\n') {
}

if (ws.isConnected()) {
ws.close();
}

return 0;
}