Stap 4: De code
In deze stap zullen we compileren en laden van de code en testen van onze bedrading.
1. Sluit de arduino aan de computer
2. open het Arduino 18-programma. Als u nog niet hebt, kunt u het downloaden vanaf de webpagina van de Arduino:
http://Arduino.CC/en/Main/software
3. Zorg ervoor u hebt de juiste bord-type dat is geselecteerd en de juiste USB-poort geselecteerd voordat u doorgaat
4. Kopieer en plak de code hieronder gevonden. Deze code is geschreven met behulp van de code van de gebruiker bradlight op dit forum en de code van mijn instructeur maar ik ben niet zeker wie het schreef: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1259091426
5. het compileren van de code
6. als er staan geen fouten (er moet niet), de code te uploaden naar de arduino
7. Wanneer de code laadt moet u nu kunnen controleren van de servo door het kantelen van de nunchuck links, rechts, omhoog of omlaag. Als de servo niet reageert, houd de resetknop, sync de nunchuk, en laat vervolgens de resetknop. Ik heb geconstateerd dat de nunchuk moet worden gesynchroniseerd voordat de code wordt gestart of de servo vast komt te zitten. Dit is de reden waarom mijn ontwerp een pulsdrukschakelaar voor een reset-knop omvat.
#include < Wire.h >
#include < string.h >
#include < stdio.h >
uint8_t outbuf [6];
int cnt = 0;
int ledPin = 13;
int servoPin = 5;
int servoPin2 = 6;
int pulseWidth = 0;
int pulseWidth2 = 0;
lange lastPulse = 0;
lange lastPulse2 = 0;
int z_button = 0;
int c_button = 0;
int refreshTime = 20;
int minPulse = 1000;
int minPulse2 = 500;
int rekenwijze = 10;
#define pwbuffsize 10
lange pwbuff [pwbuffsize];
lange pwbuffpos = 0;
lange pwbuff2 [pwbuffsize];
lange pwbuffpos2 = 0;
VOID Setup
{
Serial.begin (19200);
Wire.begin ();
nunchuck_init ();
pinMode (servoPin, OUTPUT);
pinMode (servoPin2, OUTPUT);
pulseWidth = minPulse;
pulseWidth2 = minPulse2;
Serial.Print ("afgewerkte setup\n");
}
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 (0x00);
Wire.endTransmission ();
}
int t = 0;
void loop
{
t ++;
eindelijk = millis();
Als (t == 1) {}
t = 0;
Wire.requestFrom (0x52, 6);
terwijl (Wire.available ()) {}
outbuf [cnt] = nunchuk_decode_byte (Wire.receive ());
digitalWrite (ledPin, hoge);
CNT ++;
}
Als (cnt > = 5) {}
printNunchuckData();
int z_button = 0;
int c_button = 0;
Als ((outbuf [5] >> 0) & 1)
z_button = 1;
Als ((outbuf [5] >> 1) & 1)
c_button = 1;
schakelaar (c_button) {}
Case 1:
schakelaar (z_button) {}
Case 0:
breken;
Case 1:
muovi();
breken;
}
breken;
Case 0:
schakelaar (z_button) {}
Case 0:
delay(10000);
breken;
Case 1:
delay(3000);
breken;
}
breken;
}
}