Wii Nunchuck Arduino vattenpass (6 / 7 steg)

Steg 6: Wii_Nunchuck_Level Arduino skiss belastning

Det finns två Arduino skisser: 1) Wiichuck_range_test; och 2) Wii_Nunchuck_Level.

Du behöver först och främst veta vad Nunchuck accelerometerns varje axel dataområde är. Jag har testat några av dem och alla av dem visar små skillnader. Men mestadels, spänner är 60-70 som minimum och 180-200 som maximum. För bästa känslighet av nivån behöver du ladda Wiichuck_range_test först och hitta dessa värden (minimum, center (på nivå) och maximum) för varje axel och justera värdena i den huvudsakliga skissen om det behövs.

Rad test skissen är enkelt och rakt framåt så jag kommer inte att förklara i detalj här.

Huvudprogrammet, Wii_Nunchuck_Level visas nedan samt också bifogas.

Funktionen getData() få värdena för varje axel och lagra dem i byte array AgCl [] och hitta orientering på nivån och returnerar "orient."

Funktion orientation() få nuvarande axelvärdena och hitta orientering på nivån. Varje inriktning ger två axlar som mitten (planat, runt 120-130) och en axel som minimum eller maximum beroende på allvar. Använder detta kännetecken, bestämmer det orienteringen.

Den huvudsakliga loop() är ganska enkel. Det övervakar om kalibrering knappen trycks genom att se om stift 10 är hög och i övrigt den läsa aktuella data och vända på lysdioder. Programmet jämför nuvarande data till den lagrade (i EEPROM av ATmega328P) kalibreringsdata. Det finns tre stadier av visning: 1) om värdet är inom vissa intervall, det kommer att vända på den centrala röd lysdiod ansluten till det digitala stiftet 7; 2) om värdet är större än intervallet (sens i programmet) och mindre än 2 gånger av spänna (sens), det kommer att vända på röda LED och en grön LED på motsatsen (för att simulera bubbla riktning) sida av tilt; 3) om värdet är större än 2 gånger av spänna (sens), är sedan endast den gröna lysdioden aktiverat.

Värdena som kalibrering är neutral värdet av varje axel läsa när det är planat på axeln. Till exempel den Nunchuck data behandlingen är mellan 60-70 (dessa värden är olika från sensorn till sensor) på -g (upp och ner) på axeln och är över 170 g (upp till höger). Så neutral (planat) värdet av varje axel om 120-130. Kalibreringen börjar när stift 10 går högt anslutna till V + med en liten tryckknapp switch tryckte. En kalibreringsprocessen börjar, för att ge användaren lite tid för att sätta enheten på en plan yta, väntar den tills den centrala röda lysdioden blinkar några gånger. Den faktiska kalibreringen sker verkligen snabbt och följt av några snabbare blinkar.

/*
* Wii_Nunchuck_Level
* Feb-Mar 2012, Jinseok Jeon
* http://jeonlab.wordpress.com
*
* Wii Nunchuck data läses:
* nunchuck_funcs.h från WiiChuckDemo av 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 AgCl [3]. Accelerometer avläsningar för x, y, z-axel
int calPin = 10; kalibrering pin
int sens = 1; känslighet
int orient;

void setup()
{
nunchuck_init();
för (int jag = 5; jag < 10; i ++) {
pinMode (i, matas);
} //9 vänster, 8 upp, 7 center, 6 ner, 5 rätt
pinMode (calPin, ingång);
Delay(100);
}

void loop()
{
om kalibrering pinnen trycks ner, hoppa till funcion calibrate()
om (digitalRead(calPin) == hög) calibrate();

getData();

om (orientera == 1 || orientera == 2) {
om (abs (AgCl [0]-EEPROM.read (0 + orient * 10)) < = 2 * sens) digitalWrite (7, hög).
om (AgCl [0]-EEPROM.read (0 + orient * 10) > sens) digitalWrite (5, hög).
om (EEPROM.read(0 + orient*10)-AgCl [0] > sens) digitalWrite (9, hög).
}
om (orientera == 3 || orientera == 4) {
om (abs (AgCl [1]-EEPROM.read (1 + orient * 10)) < = 2 * sens) digitalWrite (7, hög).
om (AgCl [1]-EEPROM.read (1 + orient * 10) > sens) digitalWrite (8, hög).
om (EEPROM.read(1 + orient*10)-AgCl [1] > sens) digitalWrite (6, hög).
}
om (orientera == 5 || orientera == 6) {
om (abs (AgCl [0]-EEPROM.read (0 + orient * 10)) < = 2 * sens & & abs (AgCl [1]-EEPROM.read (1 + orient * 10)) < = 2 * sens) digitalWrite (7, hög).
om (AgCl [0]-EEPROM.read (0 + orient * 10) > sens) digitalWrite (5, hög).
om (EEPROM.read(0 + orient*10)-AgCl [0] > sens) digitalWrite (9, hög).
om (AgCl [1]-EEPROM.read (1 + orient * 10) > sens) digitalWrite (8, hög).
om (EEPROM.read(1 + orient*10)-AgCl [1] > sens) digitalWrite (6, hög).
}

Delay(50);
för (int jag = 5; jag < 10; i ++) {//turn av alla lysdioder
digitalWrite (i, låg);
}
}

void getData()
{
nunchuck_get_data();
AgCl [0] = nunchuck_accelx();
AgCl [1] = nunchuck_accely();
AgCl [2] = nunchuck_accelz();

Orient = orientation(); få orientering
}

void calibrate()
{
för (int jag = 0; jag < 3; i ++) {
digitalWrite (7, hög).
Delay(500);
digitalWrite (7, låg).
Delay(500);
}

getData();

för (int jag = 0; jag < 3; i ++) {
EEPROM.write (i + orient * 10, accl[i]);
}

för (int jag = 0; jag < 3; i ++) {
digitalWrite (7, hög).
Delay(200);
digitalWrite (7, låg).
Delay(200);
}
}

int orientation()
{
om (AgCl [0] > 125 & & AgCl [0] < 145 & & AgCl [2] > 110 & & AgCl [2] < 140) {
om (AgCl [1] > 170) orientera = 1; längst ner på golvet
annars om (AgCl [1] < 75) orientera = 2; Top på golvet
}
annars om (AgCl [1] > 110 & & AgCl [1] < 140 & & AgCl [2] > 110 & & AgCl [2] < 140) {
om (AgCl [0] > 180) orientera = 3; kvar på golvet
annars om (AgCl [0] < 90) orientera = 4. mitt på golvet
}
annars om (AgCl [1] > 110 & & AgCl [1] < 140 & & AgCl [0] > 125 & & AgCl [0] < 145) {
om (AgCl [2] > 170) orientera = 5. tillbaka på golvet
annars om (AgCl [2] < 80) orientera = 6. framsidan på golvet
}
returnera orient;
}

Se Steg
Relaterade Ämnen

6 skott Arduino gummiband torn (Wii Nunchuck + Arduino)

efter ett långt uppehåll från min Arduino, bestämde jag mig för jag skulle hitta ett trevligt projekt för att underlätta tillbaka till använda den. Detta är resultatet! och det var inte ett mycket snällt sätt att underlätta tillbaka i en obekant plat...

Trådlös Wii Nunchuck kontrollerade Arduino

Använda en helt omodifierade trådlös Wii Nunchuck som ett styrsystem för Arduino baserat projekt. Ingen extra radio sändare/mottagare par etc.Detta instructable förutsätter viss erfarenhet med Arduino mikrokontroller.Radiomottagare som kommer med trå...

Styra din Robot med en Wii Nunchuck (och en Arduino)

efter bär själv spela Wii boxning jag måste tänka vore det inte bra om jag kunde använda detta för att styra min robot, (ser att min vänstra hand).Titta runt på internet hittade jag en uppsjö av människor som gör liknande saker, (länkar till alla bar...

Wii Nunchuck som generell controller via Arduino ombord

Bakgrund:Jag gjorde ett självbalanserande elektriska skateboard som styrs med en Wii Nunchuck genom att antingen använda tummen joysticken på toppen eller genom att luta den åt vänster eller höger, beroende på vilken av de två knapparna på slutet är...

Arduino Wii nunchuck och Wii motion plus med uppdaterad kod för IDE 1.0.2 och lysdioder

så, jag var försökande till hacka min Wii nunchuck eftersom jag vill styra motorer och lampor med Wii nunchuck.Det första problemet som jag hittade var hur man ansluta kontrollen utan adapter, jag planerar att göra en, menNär jag var forskande för nu...

Arduino Wii Nunchuck controller

Hur man styr 2 servon trodde wii nunchuck.Steg 1: delar Wii nunchuckArduinoen2 servoSkärbrädaHoppare ledningarSteg 2: Anslut Anslut wii nunchuck som detta schema.Steg 3: Ladda upp kodenSteg 4: gjort!!! Du kan nu kontrollera 2 servon trodde wii nunchu...

Wii Nunchuck Adapter

denna tutorial är för alla de människor som har en arduino och vill använda det Wii nunchuck som en inmatningsenhet, men inte verkligen känner för styckning öppna sladden och förstör nunchuck FOREVER!!!Tja har du kommit till rätt ställe!Steg 1: lever...

HackerBoxes 0002: Klivet upp till ARM32, MCU Video, Wii Nunchuck

Detta Instructable delar grunderna i arbetar med HackerBoxes #0002. HackerBoxes är den månatliga box prenumerationstjänsten för elektronik hobbyister, beslutsfattare och hackare. Om du vill få en box som denna rätt till din brevlåda varje månad, kan...

Remote Control Pleo med Wii Nunchuck

detta instructable beskriver hur man fjärrkontroll Pleo (en vänlig robotic dinosaurie: http://www.pleoworld.com) med gester med en fickformat setup. Du kan utöka de flesta delar av detta instructable att styra andra typer av robotar. Här är en video...

Animatronic ögon och Wii Nunchuck del 2 - ge det en röst

Efter att jag byggt animatronic ögonen i Del1, ville jag fylla i ansiktet med en röst och eventuellt flytta ögonbryn. Om du ser tillbaka på min Del1, ser du att jag använt en modell från Thingiverse för basen. När du har modell 3D tryckt, måste du lä...

Animatronic ögon och Wii Nunchuck

Jag hittade denna 3D-fil på Thingiverse av Micropuller. Jag insåg snabbt att filen skapar en överdimensionerad öga enhet. Men jag ville ändå utforska skapa en animatronic ansikte som jag kunde kontrollera med en Arduino.Ju mer jag tänkte på det, dest...

Desktop Frisbee Launcher med Wii Nunchuck

Här är hur man bygger min första iteration av en launcher som kastar Discraft mini Star Ultimate skivor. Du kan ringa detta snabba och smutsiga version. Det är verkligen grundläggande. Allt det gör är att skjuta. Men det kan lätt ändras för att göra...

USB-mus gjord av A Wii Nunchuck

detta instructable kommer att beskriva hur du omvandlar en Nintendo Wii Nunchuck controller till en USB 2-knappars mus med en Teensy USB. Teensy USB är en mycket användarvänlig utveckling styrelse som kan programmeras i en Arduino miljö. Teensy USB u...

ESP8266 och Visuino: WiFi fjärrkontroll Smart bil Robot med Wii Nunchuck

Smart Car anger i kombination med L298N Motor drivrutinsmoduler, erbjuder en av de enklaste sätten att göra roboten bilar. Jag har redan gjort en Instructable på hur du kan kontrollera Smart bil med Arduino och Joystick. Det är emellertid mer intress...

Projektet Robot bugg - med wii nunchuck

Projektet Robot buggVad roboten måste:Rörliga objekt, ledde lichtRobot materialet måste bestå av 3 olika typer av material3D-skrivare är obligatoriska i processen att göra detta projekt.Steg 1: Församlingen steg & projekt delar lista över delar som b...

Wii nunchuck Örontoppar fallet

kan säga du köpt ett wii nunchuck för några andra projekt och du inte vill använda den ursprungliga fallet eller kanske din wii nunchuck bröt precis men du vill inte att bara kasta bort.här är något du kan göra: göra ett mål för dina hörlurarsaker du...

Arduino ledde matrisen med Wii Nunchuck kontroll

Main Video:Dokumentation...

Wii Nunchuck kontrollerade torn

har du 99 problem? Pesky ekorrar? Horder av irriterande trick-or-treaters klädd som zombies? Horder av faktiska zombies på dina portar? Är dessa typer av problem som kan lösas genom att kasta saker? Om så, är detta instructable för dig!För att minska...

Wii NunChuck kontrollerade Mindstorms NXT fotboll Robot

För den Brixhibition utställningen i slutet av April, var jag ombedd att ställa upp och köra ett par interaktiva Robot fotbollsplaner. De robotar som behövs för att vara robust och pålitlig som allmänheten kommer att interagera med dem. De behöver oc...