USB-Wiichuck muis met behulp van een Arduino Leonardo (2 / 3 stap)

Stap 2: Software

Na ontvangst van mijn glimmende nieuwe Leonardo, begon ik op zoek naar hoe ik ging om het te krijgen alle werken. Aangezien de Wiichuck maakt gebruik van 5 V power en via I2C communiceert, was de bedrading relatief eenvoudig. Ik gewoon aangesloten op de 5 V en GND, SDA en SCL lijnen naar de corresponderende poorten op het Leonardo en ik was klaar om te gaan.

De software was een beetje moeilijker. Het kostte me al geruime tijd en een heleboel experimenteren om te vinden van de code die ging werken voor wat ik nodig had. Zoals eerder gezegd, zowel de Nunchuck functiebibliotheek (die ik heb opgenomen in dit instructable) en de oorspronkelijke broncode (die ik niet lijken te krijgen om te uploaden correct, dus ik zal gewoon kopiëren en plakken hieronder) werden geschreven door anderen en vervolgens gewijzigd voor mijn doeleinden.

In wezen, wat de code doet is de Nunchuck bibliotheek gebruiken om gegevens uit de ' Chuck elke 10 ms. een reeks voor de muis te verplaatsen, de code gebruikt dit bereik om te bepalen van de rust drempel voor joystick. Nadat de hoofdlus leest de C- en Z knoppen en uitgangen van hen als de linker en rechter muis knoppen, de code dan gaat op om te lezen van de x- en y-as. Na het aftrekken van de center-positiewaarde van de lezing ontvangen, wordt de resulterende absolute waarde vergeleken met de drempel-variabele. Als de waarde kleiner is dan de drempel voor beweging, de afstand verplaatsen is ingesteld op 0, anders is de afstand zet de Lees afstand. Als de x- of y-afstand is niet 0, de muis beweegt de overeenkomstige afstand.

Opgemerkt moet worden dat dit hele proces net zo goed met de versnellingsmeter werken kan. In plaats van met de functies nunchuck_joyx en y, kon men redelijkerwijs gebruik nunchuck_accelx en y. Ik zou niet aanraden, echter. De resultaten bij een poging om de muis te gebruiken kunnen... squirrely.

WiiChuck muis
Brian Krukoski
April 2012
rood-+ 5 wit-gnd, groen-sda, yllw-clck

#include < Wire.h >
#include "nunchuck_funcs.h"
int loop_cnt = 0;

parameters voor het lezen van de joystick:
int bereik = 40;               Output bereik van X of Y beweging
int drempel = bereik/10;      rust drempel
int centrum = bereik/2;         rust positiewaarde

Boole mouseIsActive = false;    wel of niet om de muis te besturen
int lastSwitchState = laag;        vorige schakelaar staat

VOID Setup {}
initilization voor de Wiichuck
nunchuck_init();
Neem controle van de muis:
Mouse.begin();
Serial.begin(9600);
}

void loop {}
Als (loop_cnt > 10) {/ / elke 10 msec krijgen nieuwe gegevens
loop_cnt = 0;
nunchuck_get_data();

rechts en links klik op besturingselement
int leftState = nunchuck_cbutton();
Als (leftState) Mouse.press(MOUSE_LEFT); anders Mouse.release(MOUSE_LEFT);
int rightState = nunchuck_zbutton();
Als (rightState) Mouse.press(MOUSE_RIGHT); anders Mouse.release(MOUSE_RIGHT);

Lees de x-as
int xReading = nunchuck_joyx(); dringt er bij de nunchuck_funcs bibliotheek voor x as lezing
xReading = kaart (xReading, 38, 232, 0, bereik); 38 en 232 willekeurig bepaald via experimenten, kaarten naar 0 en vooraf ingestelde bereik
int xDistance = xReading - centrum;
Als (abs(xDistance) < drempel) //if absolute waarde van xDistance lager is dan de vooraf gedefinieerde drempel...
{
xDistance = 0;
}

Lees de y-as
int yReading = nunchuck_joyy(); dringt er bij de nunchuck_funcs bibliotheek voor de y-as lezing
yReading = kaart (yReading, 38, 232, 0, bereik); 38 en 232 willekeurig bepaald via experimenten, kaarten naar 0 en vooraf ingestelde bereik
int yDistance = yReading - centrum;
Als (abs(yDistance) < drempel) //if absolute waarde van yDistance lager is dan de vooraf gedefinieerde drempel...
{
yDistance = 0;
}

Beweeg de muis als de lezingen groter dan 0 waren
Als ((xDistance! = 0) || (yDistance! = 0)) {
Mouse.move (xDistance, -yDistance, 0); -yDistance zorgt voor een omgekeerde stijlbedieningshendel
}
}
nunchuck_print_data(); nunchuck gegevens op seriële monitor worden afgedrukt voor de foutopsporing
loop_cnt ++;
delay(1);

}

Gerelateerde Artikelen

Zet een N64-Controller in een USB-Gamepad met behulp van een Arduino Leonardo

Zet een N64-Controller in een USB-Gamepad met behulp van een Arduino Leonardo

De gemakkelijkste manier om te zetten een N64-Controller in een USB-Gamepad is om te kopen een N64-Controller-Adapter voor ongeveer £15. Maar het kan ook worden gedaan hebt u een Arduino Leonardo of elke andere Arduino board met ingebouwde USB-commun
USB-Wii Gamepad met behulp van de Arduino Leonardo

USB-Wii Gamepad met behulp van de Arduino Leonardo

Afgelopen weekend heb ik geprobeerd de nieuwe RetroPie op mijn mooie nieuwe Raspberry Pi 3, maar de enige spel controller die ik heb is het oudje Wii Classic Controller; Dus hoe kan ik het converteren naar een normale USB-spelbesturing?Na wat onderzo
Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Hoe maak je een enkele LED knipperen met behulp van een Arduino Uno Board

Vandaag, we zullen worden ter illustratie van hoe maak je een enkele LED knipperen met behulp van een Arduino Uno-board. Door elke stap te volgen, zal je dit doel bereiken.U zal het volgende nodig:Een Arduino BoardBrood bordUSB-connectorkabelEEN LED3
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
Met behulp van een Arduino te laden van een DS lite

Met behulp van een Arduino te laden van een DS lite

Dit instructable is voor het opladen van een ds lite met behulp van een Arduino en twee draden. Dit is ook mijn eerste instructable, zodat het wellicht niet zo goed als mogelijk. :)BERICHT: Ik ben niet verantwoordelijk voor eventuele schade aan je ds
RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

RFIDuino - met behulp van een Arduino & RFID-lezer te maken van een puzzel GeoCache

ik geniet van zowel Geocaching en elektronica en heb een paar van elektronische puzzel caches met behulp van een Arduino.Mijn nieuwste creatie (met de hulp van een collega cacher voor de code) is met behulp van een Arduino en RFID lezer te maken van
Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of
Gitaar Tuner voor blinden (met behulp van een Arduino)

Gitaar Tuner voor blinden (met behulp van een Arduino)

het wijzigen van een gitaar tuner zodat het kan worden gebruikt door een blinde persoonDeze build maakt gebruik van een Arduino Pro mini microcontroller, (alle code wordt verstrekt).Dit project werd uitgevoerd voor het goede doel Remap, waarmee op ma
Grondbeginselen van het omzetten van uw externe controle voertuig in een autonoom systeem (Drone) met behulp van een Arduino

Grondbeginselen van het omzetten van uw externe controle voertuig in een autonoom systeem (Drone) met behulp van een Arduino

ik begon dit project met als doel goedkoop draaien mijn RC helikopter in iets van een UAV of althans te passen sommige sensoren aan het verminderen van aanvaringen en andere "mis haps."Nu helaas aan het begin van het project misrekend ik mijn kl
Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Tot onlangs PCB sonderen met behulp van een Arduino was gebaseerde CNC machine maar een loutere droom. Dankzij de mensen van Chilipeppr.com we nu hebben gebaseerde een bankje van de web-gebaseerde tool voor al onze Arduino CNC producten. Het beste de
Met behulp van een Arduino en Python plot/opslaan gegevens

Met behulp van een Arduino en Python plot/opslaan gegevens

een snelle en gemakkelijke manier om te zien (en sla) gegevens genomen met behulp van een Arduino op uw computer.(Opmerking: niet de meest robuuste methode, maar het werkt goed genoeg)Materialen:-Arduino (im ' using een Uno)-Computer (ik heb een Dell
Elektromagnetisch veld Detector met behulp van een Arduino

Elektromagnetisch veld Detector met behulp van een Arduino

Ooit elektronisch apparaat straalt een bepaalde hoeveelheid elektromagnetische velden en we kunnen deze straling gebruiken om te leren een paar dingen over het circuit.In hedendaagse instructable ga ik u tonen hoe te bouwen van je eigen elektromagnet
Puzzlebox baan: Een infrarood helikopter besturen met behulp van een Arduino

Puzzlebox baan: Een infrarood helikopter besturen met behulp van een Arduino

In dit Instructable zullen we uitleggen hoe de infrarood signalen worden gebruikt door een afstandsbediening om een speeltje of apparaat, dan laten zien hoe een eenvoudige schakeling kan worden toegevoegd aan een Arduino aan dezelfde bedienen via gra
Met behulp van een Arduino te beheersen of te testen een SPI elektronisch apparaat

Met behulp van een Arduino te beheersen of te testen een SPI elektronisch apparaat

er zijn veel elektronische apparaten die gebruikmaken van de SPI bus, of Serial Peripheral Interface bus, voor communicatie (bijvoorbeeld verschillende sensoren, LCD displays, digitale potentiometers, D/A en A/D converters, draadloze zenders en ontva