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
- Battlefield 6944
- Telia vägrar sluta ringa mig för att sälja saker15
- Asus Armoury Crate Gear - vad är det för skit?3
- Quiz: Känner du igen ljuden?64
- Bazzite - Tråden om operativsystemet för folk som spelar65
- Fractal Design Torrent vs Fractal Design Meshify 3 XL20
- Home Assistant-tråden1,3k
- Kommentar: Framtidsvisionerna var bättre förr62
- Värt att uppgradera eller ska jag bara bygga helt ny dator?3
- Dagens fynd — Diskussionstråden54k
- Säljes Razer Deathadder V2 Pro Trådlös Gaming Mus NYTT!
- Säljes CableMod kabelkit
- Säljes Datacolor Spyder X2 Elite Nypris 2890kr
- Säljes Amd ryzen 9800x3d (ny)
- Bytes Asus TUF 3060ti bytes
- Säljes Xbox Series S
- Säljes 3 mån gammal 4K 48" Philips OLED 809 Ambilight TV
- Säljes Zotac AMP RTX 5070 Ti
- Säljes 4770k itx dator, Bose hörlurar, Streamdeck XL och Mk.2
- Säljes Oculus Quest 2 64gb - Xbox Series s 512gb
- Battlefield 6, beta #2 - nya kartor, lägen och spellistor28
- Quiz: Känner du igen ljuden?64
- Asus lanserar ROG Crosshair X870E Hero BTF för AM525
- Studenters drönare kan simma och flyga17
- Britter uppmanas radera gamla mejl – för att spara vatten55
- Gör dig redo inför Gamescom 20259
- Teknikresa: Följ med på SweClockers Expedition Taiwan25
- Epic Games vinner ännu en rättstvist mot Google och Apple37
- Veckans fråga: Monterar du grafikkortet horisontellt eller vertikalt?42
- Prestera i Battlefield 6-betan – säkra en plats i Slaget22
Externa nyheter
Spelnyheter från FZ