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
- Vad lyssnar du på just nu?16k
- HBO Max tar i med hårdhandskarna mot lösenordsdelare41
- Aktuella grafikkortsrykten?0
- Bilder på ditt senaste inköp (2025) [inga produktbilder]1,1k
- Ny dator, Stora problem med lagspikar från ingenstans med eller utan belastning.0
- Sur, Ledsen, Galen?! Skriv av er här!22k
- Battlefield 6758
- Plats för lite gubbgnäll13k
- Oväntat budgetkort (RX580).3
- 9070 / XT - Owners club922
- Bytes Zotac AMP 5070 Ti bytes mot 9070 XT eller 5070
- Säljes Creative Sound BlasterX AE-5 Plus
- Säljes GeForce RTX 3080 10GB (MSI VENTUS 3X OC)
- Säljes Pixel 7a 128gb Charcoal - Inte en repa
- Säljes Ryzen 9800x3D
- Säljes Lenovo P15v G3/i7-12800h/14c/20t/Xe-Graphics/2x16GB/QuadroA2000-4GB/PCIeGen4SKHynix512GB/
- Säljes 2st Grafikkort - RTX 2070 - RTX 2080 Super
- Köpes Söker uppgraderingspaket till 11 åring
- Säljes moderkort cpu samt minne
- Säljes [Säljes] Extern radiator, fläktar och Pump/res
- HBO Max tar i med hårdhandskarna mot lösenordsdelare41
- Kommentar: Framtidsvisionerna var bättre förr34
- Här är världens mest opraktiska skärm24
- Wifi kan känna igen och spåra individer33
- Apple 1-replik kör Chat GPT33
- Testpilot: LG QNED93 – en trygg allround-TV14
- Asus lanserar Noctua-modell av RTX 508032
- Intels vd anser inte att Intels vd bör avgå27
- Heretic + Hexen överraskar med djävulskt kärleksfullt paket29
- USA:s president kräver att Intels vd avgår37
Externa nyheter
Spelnyheter från FZ
- Battlefield 6-betan är den största öppna Battlefield-beta någonsin enligt EA igår
- Det ryktas att Far Cry ska bli tv-serie på FX igår
- The Sims släpps som brädspel under hösten igår
- Diablo-bossen Rod Fergusson lämnar Blizzard 09/08
- Sony erkänner att deras live service-satsning inte har gått som beräknat 09/08