Wii Nunchuck Arduino waterpas (6 / 7 stap)

Stap 6: Wii_Nunchuck_Level Arduino schets belasting

Er zijn twee schetsen van de Arduino: 1) Wiichuck_range_test; en 2) Wii_Nunchuck_Level.

Eerst en vooral, moet u weten wat de Nunchuck versnellingsmeter van elk gegevensbereik as zijn. Ik heb getest een paar van hen en alle van hen toont kleine verschillen.  Maar meestal, de bereiken zijn 60-70 als minimum en 180-200 als maximum.  Om de beste gevoeligheid van het niveau moet u eerst het Wiichuck_range_test laden en vinden deze waarden (minimum, centrum (op niveau) en maximum) voor elk zwaartepunt en pas de waarden in de belangrijkste schets indien nodig.

De reeks test schets is eenvoudig en ongecompliceerd, dus ik zal niet de details hier uitleggen.

Het hoofdprogramma, de Wii_Nunchuck_Level wordt getoond hieronder en ook aangesloten.

De functie getData() krijgen de waarden voor elk zwaartepunt en ze opslaan in byte matrix accl [] en vinden van de richting van het niveau en retourneert 'oriënteren.'

De functie orientation() de huidige waarden voor de as ophalen en vinden van de richting van het niveau.  Elke geaardheid geeft twee assen als midden (geëgaliseerd, rond 120-130) en één as als minimum of maximum afhankelijk van de richting van de zwaartekracht.  Met behulp van deze kenmerken, bepaalt het de oriëntatie.

De belangrijkste loop is heel simpel.  Het bewaakt als de kalibratie-knop wordt gedrukt door het zien als de pin 10 hoog en anders is het huidige gegevens lezen en inschakelen van LEDs.  Het programma de huidige data opgeslagen (in de EEPROM van de ATmega328P) vergelijkt ijkgegevens. Er zijn drie stadia weer te geven: 1) als de waarde binnen een bepaald bereik is, zal het weer op de centrale rode LED aangesloten op de digitale pin 7; 2) indien de waarde groter dan het bereik (sens in het programma is) en minder dan 2 keer van het bereik (sens), zal dit op de rode LED en een groene LED op het tegenovergestelde (om te simuleren de richting zeepbel) kant van de tilt; 3) als de waarde groter dan 2 keer van het bereik (sens), is dan alleen de groene LED is ingeschakeld.

De kalibratie-waarden zijn de neutrale waarde van elke as lezen wanneer het wordt herverdeeld op die as. Bijvoorbeeld, de Nunchuck gegevens lezen bedraagt tussen de 60-70 (deze waarden zijn verschillend van de sensor naar de andere sensor) -g (ondersteboven) op die as en is meer dan 170 g (boven rechts). Dus de neutrale (geëgaliseerd) waarde van elke as ongeveer is 120-130. De kalibratie begint wanneer de pin 10 hoog gaat door verbonden met V + met een kleine Drukknopschakelaar ingedrukt. Een het kalibratieproces begint, zodat de gebruiker enige tijd om het apparaat neer op een vlakke ondergrond, het wacht totdat de centrale rode LED een paar keer knippert. De werkelijke kalibratie is echt snel klaar en gevolgd door een paar sneller knippert.

/*
* Wii_Nunchuck_Level
* Feb-Mar 2012, Jinseok Jeon
* http://jeonlab.wordpress.com
*
* Wii Nunchuck gegevens lezen:
* nunchuck_funcs.h van WiiChuckDemo door Tod E. Kurt,
* http://todbot.com/blog/2008/02/18/wiichuck-wii-nunchuck-adapter-available/
*/

#include < Wire.h >
#include < EEPROM.h >
#include "nunchuck_funcs.h"

byte accl [3]; versnellingsmeter lezingen voor x, y, z-as
int calPin = 10; kalibratie pin
int sens = 1; gevoeligheid
int de Oriënt;

VOID Setup
{
nunchuck_init();
for (int i = 5; ik < 10; i ++) {}
pinMode (ik, OUTPUT);
} //9 verliet 8 omhoog, 7 center, 6 down, 5 recht
pinMode (calPin, INPUT);
delay(100);
}

void loop
{
Als de pin kalibratie wordt gedrukt, springen naar opstelplaats calibrate()
Als (digitalRead(calPin) == HIGH) calibrate();

getData();

Als (oriënteren == 1 || oriënteren == 2) {}
Als (abs (accl [0]-EEPROM.read (0 + orient * 10)) < = 2 * sens) digitalWrite (7, hoge);
Als (accl [0]-EEPROM.read (0 + orient * 10) > sens) digitalWrite (5, hoge);
Als (EEPROM.read(0 + orient*10)-accl [0] > sens) digitalWrite (9, hoge);
}
Als (oriënteren == 3 || oriënteren == 4) {}
Als (abs (accl [1]-EEPROM.read (1 + orient * 10)) < = 2 * sens) digitalWrite (7, hoge);
Als (accl [1]-EEPROM.read (1 + orient * 10) > sens) digitalWrite (8, hoge);
Als (EEPROM.read(1 + orient*10)-accl [1] > sens) digitalWrite (6, hoge);
}
Als (oriënteren == 5 || oriënteren == 6) {}
Als (abs (accl [0]-EEPROM.read (0 + orient * 10)) < = 2 * sens & & abs (accl [1]-EEPROM.read (1 + orient * 10)) < = 2 * sens) digitalWrite (7, hoge);
Als (accl [0]-EEPROM.read (0 + orient * 10) > sens) digitalWrite (5, hoge);
Als (EEPROM.read(0 + orient*10)-accl [0] > sens) digitalWrite (9, hoge);
Als (accl [1]-EEPROM.read (1 + orient * 10) > sens) digitalWrite (8, hoge);
Als (EEPROM.read(1 + orient*10)-accl [1] > sens) digitalWrite (6, hoge);
}

delay(50);
voor (int i = 5; ik < 10; i ++) {//turn uit alle LEDs
digitalWrite (i, laag);
}
}

VOID getData()
{
nunchuck_get_data();
accl [0] = nunchuck_accelx();
accl [1] = nunchuck_accely();
accl [2] = nunchuck_accelz();

oriënteren = orientation(); geaardheid krijgen
}

VOID calibrate()
{
for (int i = 0; ik < 3; i ++) {}
digitalWrite (7, hoge);
delay(500);
digitalWrite (7, laag);
delay(500);
}

getData();

for (int i = 0; ik < 3; i ++) {}
EEPROM.write (i + orient * 10, accl[i]);
}

for (int i = 0; ik < 3; i ++) {}
digitalWrite (7, hoge);
delay(200);
digitalWrite (7, laag);
delay(200);
}
}

int orientation()
{
Als (accl [0] > 125 & & accl [0] < 145 & & accl [2] > 110 & & accl [2] < 140) {}
Als (accl [1] > 170) oriënteren = 1; bodem op verdieping
anders als (accl [1] < 75) oriënteren = 2; Top op vloer
}
anders als (accl [1] > 110 & & accl [1] < 140 & & accl [2] > 110 & & accl [2] < 140) {}
Als (accl [0] > 180) oriënteren = 3; links op de vloer
anders als (accl [0] < 90) oriënteren = 4; recht op de vloer
}
anders als (accl [1] > 110 & & accl [1] < 140 & & accl [0] > 125 & & accl [0] < 145) {}
Als (accl [2] > 170) oriënteren = 5; terug op de vloer
anders als (accl [2] < 80) oriënteren = 6; Front op vloer
}
retourneren van de Oriënt;
}

Gerelateerde Artikelen

6 shot Arduino elastiekje torentje (Wii Nunchuck + Arduino)

6 shot Arduino elastiekje torentje (Wii Nunchuck + Arduino)

na een lange pauze van mijn Arduino, heb ik besloten dat ik moet vinden van een mooi project om terug in het gebruik van het gemak. Dit is het resultaat! en het was niet een zeer vriendelijke manier om gemakkelijk terug in een onbekende platform, maa
Draadloze Wii Nunchuck gecontroleerd Arduino

Draadloze Wii Nunchuck gecontroleerd Arduino

Gebruik een volledig ongewijzigde draadloze Wii Nunchuck als een controlesysteem voor elke Arduino gebaseerd project. Geen toegevoegde radio zender/ontvanger paren enz.Dit instructable aanvaardt enige ervaring met de Arduino microcontroller.De radio-
Wii Nunchuck als General-Purpose controller via Arduino board

Wii Nunchuck als General-Purpose controller via Arduino board

Achtergrond:Ik maakte een zelfbalancerende elektrische skateboard die is gestuurd met behulp van een Wii Nunchuck door hetzij met behulp van de joystick van de duim op de top of door het kantelen van het links of rechts, afhankelijk van welke van de
Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

na het dragen van mezelf spelen van Wii Boksen, ik kreeg aan het denken zou het niet geweldig als ik zou kunnen dit gebruiken om te controleren mijn robot, (op zoek naar mijn linkerhand).Op zoek rond het internet vond ik een schare van mensen die soo
Arduino Wii Nunchuck controller

Arduino Wii Nunchuck controller

Hoe u kunt besturen 2 servo's dacht dat de wii nunchuck.Stap 1: onderdelen Wii nunchuckArduino2 servoBreadboardJumper dradenStap 2: verbinding maken Sluit de wii nunchuck zoals dit schema.Stap 3: De Code uploadenStap 4: gedaan!!! U kunt nu de 2 servo
Arduino Wii nunchuck en Wii motion plus met bijgewerkt code voor IDE 1.0.2 en LEDs

Arduino Wii nunchuck en Wii motion plus met bijgewerkt code voor IDE 1.0.2 en LEDs

dus, mij watertje trying voor kappen mijn Wii nunchuck omdat ik wil besturen van motoren en verlichting met de Wii nunchuck.Het eerste probleem dat ik vond was hoe om verbinding te maken met het besturingselement zonder een adapter, ik was van plan o
Wii Nunchuck Adapter

Wii Nunchuck Adapter

deze tutorial is voor al die mensen die hebben een arduino en wilt gebruiken er Wii nunchuck als een input device, maar niet echt het gevoel dat knippen het snoer open en nunchuck voor eeuwig verpest!!!ook bent u bij ons aan het juiste adres!Stap 1:
Bureaublad Frisbee Launcher met Wii Nunchuck

Bureaublad Frisbee Launcher met Wii Nunchuck

Hier is hoe te bouwen mijn eerste iteratie van een draagraket die Discraft mini Star Ultimate schijven gooit. Je zou kunnen noemen dit de snelle en vuile versie. Het is echt basic. Alles wat het doet is te schieten. Maar het kan gemakkelijk worden ge
USB-muis Made Out Of A Wii Nunchuck

USB-muis Made Out Of A Wii Nunchuck

dit instructable zal beschrijven hoe u een controlemechanisme van Nintendo Wii Nunchuck converteert naar een USB 2-knops muis met behulp van een Teensy USB.  De Teensy USB is een zeer gebruiksvriendelijk ontwikkeling boord die kan worden geprogrammee
HackerBoxes 0002: Intensivering van ARM32, MCU Video, Wii Nunchuck

HackerBoxes 0002: Intensivering van ARM32, MCU Video, Wii Nunchuck

Dit Instructable deelt de basisbeginselen van het werken met HackerBoxes #0002. HackerBoxes is de maandelijkse abonnement vak dienst voor electronica hobbyisten, makers en hackers. Als u wil graag een doos als dit recht naar uw mailbox elke maand, ku
ESP8266 en Visuino: WiFi-afstandsbediening Smart auto Robot met Wii Nunchuck

ESP8266 en Visuino: WiFi-afstandsbediening Smart auto Robot met Wii Nunchuck

Dat Smart auto ingesteld wanneer gecombineerd met L298N Motor Driver Modules, bieden een van de gemakkelijkste manieren om robot auto's maken. Ik maakte al een Instructable op hoe u slimme auto met Arduino en Joystick kunt controleren. Het is echter
Animatronic ogen en Wii Nunchuck deel 2 - Geef het een stem

Animatronic ogen en Wii Nunchuck deel 2 - Geef het een stem

Nadat ik de animatronic ogen in deel 1 bouwde, wilde ik om te voltooien van het gezicht met een stem en eventueel verplaatsen wenkbrauwen. Als je kijkt terug op mijn deel 1, ziet u dat voor de base ik een model uit Thingiverse gebruikte. Als u eenmaa
Animatronic ogen en Wii Nunchuck

Animatronic ogen en Wii Nunchuck

Ik vond deze 3D-bestand op Thingiverse door Micropuller. Ik besefte al snel dat het bestand een oversized oog-eenheid creëert. Maar ik wilde nog verkennen een animatronic gezicht waarmee ik kon maken met een Arduino.Hoe meer ik erover nadacht, hoe me
Afstandsbediening Pleo met Wii Nunchuck

Afstandsbediening Pleo met Wii Nunchuck

dit instructable beschrijft hoe afstandsbediening Pleo (een vriendelijke robot dinosaurus: http://www.pleoworld.com) met gebaren met behulp van een zakformaat setup. U kunt de meeste delen van dit instructable waarmee andere soorten robots uitbreiden