Paso 4: El código
En este paso compilar y cargar el código y probar nuestro cableado.
1. conectar el arduino al ordenador
2. Abra el programa de Arduino 18. Si no ya lo tiene, puede descargarlo de la Página Web de Arduino:
http://Arduino.CC/en/Main/software
3. Asegúrese de que usted tiene el tipo correcto de Junta seleccionado y el puerto usb correcto seleccionado antes de continuar
4. copiar y pegar el código que se encuentra a continuación. Este código fue escrito usando código de usuario bradlight en este foro y el código de mi instructor pero no estoy seguro de que lo escribió: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1259091426
5. compilar el código
6. Si no hay ningún error (no debería haber), cargar el código para el arduino
7. cuando se carga el código ahora debe ser capaz de controlar el servo inclinando el nunchuck, izquierdo, derecha, arriba o abajo. Si el servo no responde, mantenga presionado el botón de reset, sincronizar el nunchuk, luego suelte el botón de reset. He encontrado que el nunchuk debe ser sincronizado antes de que el código empieza a correr o se atasca el servo. Por esta razón mi diseño incluye un interruptor momentáneo para un botón de reset.
#include < Wire.h >
#include < string.h >
#include < stdio.h >
telefonía de uint8_t [6];
int cnt = 0;
int ledPin = 13;
int servoPin = 5;
int servoPin2 = 6;
anchura de impulso de int = 0;
int pulseWidth2 = 0;
lastPulse largo = 0;
lastPulse2 largo = 0;
int z_button = 0;
int c_button = 0;
int refreshTime = 20;
int minPulse = 1000;
int minPulse2 = 500;
tiempo de int = 10;
#define pwbuffsize 10
largo pwbuff [pwbuffsize];
pwbuffpos largo = 0;
pwbuff2 largo [pwbuffsize];
pwbuffpos2 largo = 0;
void setup()
{
Serial.Begin (19200);
Wire.Begin ();
nunchuck_init ();
pinMode (servoPin, salida);
pinMode (servoPin2, salida);
anchura de impulso = minPulse;
pulseWidth2 = minPulse2;
Serial.Print ("setup\n final");
}
void nunchuck_init()
{
Wire.beginTransmission (0x52);
Wire.Send (0xF0);
Wire.Send (0x55);
Wire.endTransmission ();
Delay(30);
Wire.beginTransmission(0x52);
Wire.Send (0xFA);
Wire.endTransmission();
Delay(30);
Wire.requestFrom(0x52, 6);
Delay(30);
}
void send_zero()
{
Wire.beginTransmission (0x52);
Wire.Send (0 x 00);
Wire.endTransmission ();
}
int t = 0;
void loop()
{
t ++;
fin = millis();
Si (t == 1) {}
t = 0;
Wire.requestFrom (0x52, 6);
mientras que (Wire.available ()) {}
telefonía [cnt] = nunchuk_decode_byte (Wire.receive ());
digitalWrite (ledPin, HIGH);
CNT ++;
}
Si (cnt > = 5) {}
printNunchuckData();
int z_button = 0;
int c_button = 0;
Si ((telefonía [5] >> 0) & 1)
z_button = 1;
Si ((telefonía [5] >> 1) & 1)
c_button = 1;
interruptor (c_button) {}
caso 1:
interruptor (z_button) {}
caso 0:
rotura;
caso 1:
MUOVI();
rotura;
}
rotura;
caso 0:
interruptor (z_button) {}
caso 0:
Delay(10000);
rotura;
caso 1:
Delay(3000);
rotura;
}
rotura;
}
}