Draadloze nunchuk gecontroleerd animatronic pop (4 / 16 stap)

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;
}
}

CNT = 0;
send_zero();

} / / if(t==)

updateServo();

delay(DTIME);
}

ongeldig updateServo() {}

Als (millis() - lastPulse > = refreshTime) {}

digitalWrite (servoPin, hoge);
delayMicroseconds(pulseWidth);
digitalWrite (servoPin, laag);

digitalWrite (servoPin2, hoge);
delayMicroseconds(pulseWidth2);
digitalWrite (servoPin2, laag);

lastPulse = millis();
}
}

int i = 0;
VOID printNunchuckData()
{
int joy_x_axis = outbuf [0];
int joy_y_axis = outbuf [1];
int accel_x_axis = outbuf [2] * 2 * 2; // * 2 * 2;
int accel_y_axis = outbuf [3] * 2 * 2; // * 2 * 2;
int accel_z_axis = outbuf [4] * 2 * 2; // * 2 * 2;

int z_button = 0;
int c_button = 0;

Als ((outbuf [5] >> 0) & 1)
z_button = 1;
Als ((outbuf [5] >> 1) & 1)
c_button = 1;
Als ((outbuf [5] >> 2) & 1)
accel_x_axis += 2;
Als ((outbuf [5] >> 3) & 1)
accel_x_axis += 1;

Als ((outbuf [5] >> 4) & 1)
accel_y_axis += 2;
Als ((outbuf [5] >> 5) & 1)
accel_y_axis += 1;

Als ((outbuf [5] >> 6) & 1)
accel_z_axis += 2;
Als ((outbuf [5] >> 7) & 1)
accel_z_axis += 1;

Serial.Print (i, DEC);
Serial.Print ("\t");

Serial.Print ("X:");
Serial.Print (joy_x_axis, DEC);
Serial.Print ("\t");

Serial.Print ("Y:");
Serial.Print (joy_y_axis, DEC);
Serial.Print ("\t");

Serial.Print ("AccX:");
Serial.Print (accel_x_axis, DEC);
Serial.Print ("\t");

Serial.Print ("AccY:");
Serial.Print (accel_y_axis, DEC);
Serial.Print ("\t");

Serial.Print ("AccZ:");
Serial.Print (accel_z_axis, DEC);
Serial.Print ("\t");

Serial.Print (z_button, DEC);
Serial.Print ("");
Serial.Print (c_button, DEC);
Serial.Print ("\r\n");
i ++;
}

char nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}

VOID muovi () {}
zweven tilt = (700 - outbuf[3]*2*2);
tilt2 zweven = outbuf [2] * 2 * 2;

kantelen (tilt) =;
pulseWidth = (kantelen * 5) + minPulse;

Tilt2 = (tilt2-288);
pulseWidth2 = (tilt2 * 5) + minPulse2;

pwbuff [pwbuffpos] = pulseWidth;
pwbuff2 [pwbuffpos2] = pulseWidth2;

Als (++ pwbuffpos == pwbuffsize) pwbuffpos = 0;
Als (++ pwbuffpos2 == pwbuffsize) pwbuffpos2 = 0;

pulseWidth = 0;
pulseWidth2 = 0;

voor (int p = 0; p < pwbuffsize; p ++) {}
pulseWidth += pwbuff [p];
pulseWidth2 += pwbuff2 [p];
}

pulseWidth / = pwbuffsize;
pulseWidth2 / = pwbuffsize;

}



Gerelateerde Artikelen

Draadloze RF gecontroleerd vuur effecten

Draadloze RF gecontroleerd vuur effecten

holbewoners uitgevonden brand ongeveer een ontelbaar jaar geleden, en sinds die dag man heeft geweest met komen steeds creatievere manieren van het maken van grotere en grotere vuurballen. Hier is mijn poging om uw homo erectus stijl vlam effecten in
Arduino gecontroleerd animatronic houten hoofd (leeslamp)

Arduino gecontroleerd animatronic houten hoofd (leeslamp)

deze kop is een leeslamp die kan worden aangepast aan de richting van de verlichting, en grijs als vereist.Dit Instructable combineert Arduino, programmering, sommige eenvoudig elektronica, snijwerk met hand en power tools, mechanische controle en ee
Afstandsbediening animatronic... fairy :)

Afstandsbediening animatronic... fairy :)

.. .yes sprookje.  Dit project kwam over als de dames waar ik werk besloten dat de partij van de verjaardag van een sprookje zou een mooi ding om te doen... Nu ben ik een rufty tufty houthakker en dus ik punt blank weigerde te lopen van de genoemde p
Sprong Motion gecontroleerd externe zoeken en verwijdering Robot

Sprong Motion gecontroleerd externe zoeken en verwijdering Robot

Als onderdeel van mijn inzending voor de sprong Motion #3D Jam was ik opgewekt om te bouwen van deze draadloze gebaar gecontroleerde zoeken/Rescue Robot gebaseerd op de Raspberry Pi. Dit project laat zien en biedt een minimalistisch voorbeeld van hoe
Draadloze Accelerometer Controlled rgb-LED's

Draadloze Accelerometer Controlled rgb-LED's

MEMS (Micro-Electro-mechanische systemen) versnellingsmeters worden op grote schaal gebruikt als tilt-receptor in mobiele telefoons en camera's. Eenvoudige accelerometers zijn beschikbaar zowel als ic-chip en goedkoop pcb-ontwikkelborden.Draadloze ch
Draadloze mobiele telefoon ontstekingen

Draadloze mobiele telefoon ontstekingen

Besturen een ontstekingen op afstand vanaf uw mobiele telefoonHier is een draadloze ontstekingen gecontroleerd door een mobiele telefoon. Het kan worden gebruikt om het vuurwerk te ontsteken of voor model rocketry vanaf een veilige afstand. De belang
Erkenning van de toespraak van de animatronic Talking boom - deel 2 -

Erkenning van de toespraak van de animatronic Talking boom - deel 2 -

als u gevolgd samen met mijn eerste Instructable, Animatronic praten Christmas Tree, toonde ik u hoe te nemen van een kunstmatige boom, toevoegen sommige servo's en een Arduino, sluit hem aan op een schets van de verwerking uitvoert op uw computer, e
Monitor TinyServer deur

Monitor TinyServer deur

Welkom! In deze demo richten we onze aandacht op het bord TinyShield Wi-Fi. We zullen het testen van het schild om ervoor te zorgen dat het goed werkt en gebruiken voor het maken van een deur sensor die kan worden bekeken vanaf een apparaat op uw lok
Interactieve Bee Game

Interactieve Bee Game

met de steun van Prof. Kylie Peppler2 en Prof. Joshua Danish bouwden we (Benjamin Zaitlen, Alexander Jacobs en Diane Glosson) een elektronische prototype van het spel van de Bee teken (uitgelegd op de volgende pagina).  We gebruikten gemeenschappelij
Mijn Robot conversie... Monkey Man

Mijn Robot conversie... Monkey Man

heb ik besloten om mijn huidige LARP karakter zou ik het maken van een kleine vriend te voeren rond... met het hebben van weinig elektronica kennis heb ik om te wijzigen en middendoor robotachtige vriend besloten... Ik vond hem in de vorm van Dave de
Gehackte roomba + arduino sneeuwballen tot een post Eurobot 2013...

Gehackte roomba + arduino sneeuwballen tot een post Eurobot 2013...

Het allemaal begon als een weekend project met mijn kinderen en spoedig genoeg ik meegezogen in een project van 4 maanden met hun school!Het idee was om een kleine groep van kinderen van 6 tot en met 9 jaar deel te nemen aan een wedstrijd van de Robo
Hoe maak je een robot dart schieten schildwacht

Hoe maak je een robot dart schieten schildwacht

Tools:Hete lijmpistoolLaptop met de Arduino software22 awg hookup draad (zwart, rood, geel)draad strippersUSB-kabelboor1/16e drillbitexacto mesDelen:2 tong depressors1 wasknijper1 rubber-band1 dart1 kop (papier of plastic)1 arduino1 breadboard1 gelei
Bluetooth controlled robot met spy camera's draadloos

Bluetooth controlled robot met spy camera's draadloos

In deze instructables die ik u hoe tonen zal te maken is draadloze robot gecontroleerd met Bluetooth module.the beste eigenschap van deze robot draadloze camera werkt via wiffi.in boven de afbeelding u de werken van mijn telefoon ziet als camera.my t
Draadloze Animatronic Hand

Draadloze Animatronic Hand

Hier is een video van hoe het eruit ziet nu:Het gebruik van een robot is steeds een dagelijkse noodzaak, gebruiken we ze bij de productie van producten en artikelen, hulp aan mensen met behoeften, en zelfs verbetering van onze eigen zwakte. Animatron