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
- Skatteverket och gridbots?1
- Kommentar: Framtidsvisionerna var bättre förr11
- Vilken film såg du senast?15k
- Vad tycker ni om denna?0
- Filmquiz: Kända datorscener166
- Inet är 1000kr dyrare på samma grafikkort ?12
- Battlefield 6723
- Jag letar fynd - samlingstråd385
- Operativsystem för svensson128
- Ny M2 ssd Försvinner då och då i nybyggd dator6
- Säljes Fractal R4 | QNAP TS-251+
- Säljes Moderkort, minnen
- Säljes Ncase M1 V6.1
- Säljes rtx 3070 ti (prebuilt variant)
- Säljes 2st Grafikkort - RTX 2070 - RTX 2080 Super
- Säljes Steam Deck OLED 512gb + Docka + 512gb SD-kort
- Säljes Steam Deck OLED 512gb + 512gb SD Borås
- Säljes HP Z210 SFF Xeon E3-1240 4Core 3.3GH 16GB ECC
- Säljes PC tidigt 00-tal: Intel Pentium 4, 768MB RAM, ATI Graphics
- Köpes AM5 x3d cpu
- Kommentar: Framtidsvisionerna var bättre förr11
- Här är världens mest opraktiska skärm19
- 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 508030
- Intels vd anser inte att Intels vd bör avgå26
- Heretic + Hexen överraskar med djävulskt kärleksfullt paket29
- USA:s president kräver att Intels vd avgår35
- Digital Foundry blir fristående49
Externa nyheter
Spelnyheter från FZ
- Diablo-bossen Rod Fergusson lämnar Blizzard igår
- Sony erkänner att deras live service-satsning inte har gått som beräknat igår
- Metal Gear Solid Delta: Snake Eater försenar det nya multiplayerläget Fox hunt igår
- Spelhelg med Betafield 6 08/08
- Avalanche pausar Contraband – följd av Xbox-neddragningarna? 08/08