Étape 4: Le code
Dans cette étape nous compiler et charger le code et tester notre câblage.
1. connecter l’arduino à l’ordinateur
2. Ouvrez le programme Arduino 18. Si vous ne l’avez déjà, vous pouvez le télécharger depuis la page Web Arduino :
http://Arduino.cc/en/main/Software
3. Assurez-vous que vous avez le type correct sélectionné et le port usb correcte sélectionnée avant de continuer
4. Copiez et collez le code ci-dessous. Ce code a été écrit en utilisant le code de l’utilisateur bradlight sur ce forum et le code de mon instructeur, mais je ne sais pas qui a écrit : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1259091426
5. compiler le code
6. s’il n’y a pas d’erreurs (il ne devrait pas y avoir), téléchargez le code sur l’arduino
7. une fois le code charge vous devriez maintenant être capable de contrôler le servo en inclinant le nunchuck, gauche, droite, haut ou le bas. Si le servo ne répond pas, maintenez le bouton de réinitialisation, synchronisez le nunchuk, puis relâchez le bouton de réinitialisation. J’ai trouvé que le nunchuk doit être synchronisé avant que démarre le code ou le servo se coince. C’est pourquoi ma conception comprend un interrupteur momentané pour un bouton de réinitialisation.
#include < Wire.h >
#include < string.h >
#include < stdio.h >
uint8_t outbuf [6] ;
cnt int = 0 ;
int ledPin = 13 ;
int servoPin = 5 ;
int servoPin2 = 6 ;
int pulseWidth = 0 ;
int pulseWidth2 = 0 ;
long lastPulse = 0 ;
long lastPulse2 = 0 ;
int z_button = 0 ;
int c_button = 0 ;
int refreshTime = 20 ;
int minPulse = 1000 ;
int minPulse2 = 500 ;
dtime int = 10 ;
#define pwbuffsize 10
long pwbuff [pwbuffsize] ;
long pwbuffpos = 0 ;
long pwbuff2 [pwbuffsize] ;
long pwbuffpos2 = 0 ;
void setup()
{
Serial.Begin (19200) ;
Wire.Begin () ;
nunchuck_init () ;
pinMode (servoPin, sortie) ;
pinMode (servoPin2, sortie) ;
pulseWidth = minPulse ;
pulseWidth2 = minPulse2 ;
Serial.Print ("Finished setup\n") ;
}
Sub nunchuck_init()
{
Wire.beginTransmission (0 x 52) ;
Wire.Send (0xF0) ;
Wire.Send 0 x (55) ;
Wire.endTransmission () ;
Delay(30) ;
Wire.beginTransmission(0x52) ;
Wire.Send (0xFA) ;
Wire.endTransmission() ;
Delay(30) ;
Wire.requestFrom(0x52, 6) ;
Delay(30) ;
}
Sub send_zero()
{
Wire.beginTransmission (0 x 52) ;
Wire.Send (0 x 00) ;
Wire.endTransmission () ;
}
int t = 0 ;
void loop()
{
t ++ ;
Enfin = millis() ;
Si (t == 1) {}
t = 0 ;
Wire.requestFrom (0 x 52, 6) ;
tandis que (Wire.available ()) {}
outbuf [cnt] = nunchuk_decode_byte (Wire.receive ()) ;
digitalWrite (ledPin, HIGH) ;
CNT ++ ;
}
Si (cnt > = 5) {}
printNunchuckData() ;
int z_button = 0 ;
int c_button = 0 ;
Si ((outbuf [5] >> 0) & 1)
z_button = 1 ;
Si ((outbuf [5] >> 1) & 1)
c_button = 1 ;
Switch (c_button) {}
cas 1 :
Switch (z_button) {}
case 0 :
rupture ;
cas 1 :
muovi() ;
rupture ;
}
rupture ;
case 0 :
Switch (z_button) {}
case 0 :
Delay(10000) ;
rupture ;
cas 1 :
Delay(3000) ;
rupture ;
}
rupture ;
}
}