Arduino och nunchuck
Jag hittade kod som styr två servos med en arduino med en nunchuck.
Klistar in koden här om någon gör ett liknande projekt.
/ auteur officiel Alexis Couronne skitoo.net
// Modified by mrlndr for arduinoarts
#include <Servo.h>
Servo servo1;
Servo servo2;
#include <Wire.h>
// Doit être ajusté en fonction de chaque nunchuck
#define ZEROX 530
#define ZEROY 530
#define ZEROZ 530
// adresse I2C du nunchuck
#define WII_NUNCHUK_I2C_ADDRESS 0x52
// définition d'une variable counter
int counter;
// définition d'un tableau de données
uint8_t data[6];
void setup()
{
// on attache le servomoteur à la pin 11 (PWM)
servo1.attach(11);
servo2.attach(12);
// initialisation du nunchuck
Wire.begin();
Wire.beginTransmission(WII_NUNCHUK_I2C_ADDRESS);
Wire.write(0xF0);
Wire.write(0x55);
Wire.endTransmission();
Wire.beginTransmission(WII_NUNCHUK_I2C_ADDRESS);
Wire.write(0xFB);
Wire.write(0x00);
Wire.endTransmission();
}
void loop()
{
// on demande 6 octets au nunchuck
Wire.requestFrom(WII_NUNCHUK_I2C_ADDRESS, 6);
counter = 0;
// tant qu'il y a des données
while(Wire.available())
{
// on récupère les données
data[counter++] = Wire.read();
}
// on réinitialise le nunchuck pour la prochaine demande
Wire.beginTransmission(WII_NUNCHUK_I2C_ADDRESS);
Wire.write(0x00);
Wire.endTransmission();
if(counter >= 5)
{
// on extrait les données
double accelX = ((data[2] << 2) + ((data[5] >> 2) & 0x03) - ZEROX);
double accelY = ((data[3] << 2) + ((data[5] >> 4) & 0x03) - ZEROY);
double accelZ = ((data[4] << 2) + ((data[5] >> 6) & 0x03) - ZEROZ);
// données d'accélération de l'axe Y
// on limite la valeur entre -180 et 180
int value = constrain(accelY, -180, 180);
// on mappe cette valeur pour le servomoteur soit entre 0 et 180
value = map(value, -180, 180, 0, 180);
// on écrit sur le servomoteur la valeur
servo1.write(180-value);
// données d'accélération de l'axe X
value = constrain(accelX, -180, 180);
value = map(value, -180, 180, 0, 180);
servo2.write(180-value);
// un petit delai pour pas saturer le servomoteur
delay(80);
}
}
by mrlndr
- Rabbel.se - Ett dagligt ordspel2,4k
- RTX 5080 - Owners club1,1k
- Köpa en ny dator åt en vän20
- Baldurs Gate 3 tråden426
- Moddare gör genomskinlig Game Boy4
- [LEK] Gissa spelet18k
- Rullbara/Flexibla Tangentbord3
- AI leder till prestandaproblem i Firefox81
- Chromecast 4k (eller annan) pris ny och begagnad.3
- Fractal Design Scape – en stark hörlursdebut34
- Säljes Trådlöst Gamingheadset: Audeze Maxwell for PC/PS4/PS5 + WC FreeZe
- Säljes Gigabyte Aorus X870 Aorus Elite Wifi7 ICE
- Säljes EVGA GTX 1080 samt 16GB DDR4
- Säljes Geforce RTX 3080 Ventus 3X Plus 10g OC LHR
- Köpes Köpes : AMD Ryzen 7 9800X3D/R9 9950x3d
- Säljes Lite gott och blandat!
- Säljes XP5 Gaming/kontorsstol
- Säljes 3 x Fractal Design chassin (Array, Define R4, Pop Silent)
- Säljes gamingdator
- Säljes Quest 3 128GB, KiwiStrap och Link-kabel.
- Moddare gör genomskinlig Game Boy4
- Samsung lanserar Micro-RGB-TV för 310 000 kronor61
- Trump anser inte längre att Trump anser att Intels VD bör avgå55
- AOL lägger ned uppringt internet49
- Reddit blockerar Internet Archive18
- Fractal Design Scape – en stark hörlursdebut34
- AI leder till prestandaproblem i Firefox81
- Nvidia och AMD betalar 15 procent av kinesisk omsättning i avgift32
- ShowCase: Gaming på språng med Lenovo Legion Pro 7i7
- Snabbkoll: Använder du lösenordshanterare?62
Externa nyheter
Spelnyheter från FZ
- Horizon-likheter bortstädade från Light of Motiram igår
- GTA VI ska ge mer för pengarna än du betalar för, lovar Take-Two-bossen igår
- "Battlefield kommer köra över CoD i år", hävdar f.d. Blizzard-chef igår
- Dragon Age-remasters ska ha nekats av EA: "Verkar vara emot gratis pengar" 11/08
- Microsoft lovar fortsatt stöd till Forza Motorsport/Horizon, trots nedskärningarna 11/08