Nivel Arduino Nunchuck Wii (6 / 7 paso)

Paso 6: Carga de sketch de Arduino Wii_Nunchuck_Level

Hay dos bocetos de Arduino: 1) Wiichuck_range_test; y 2) Wii_Nunchuck_Level.

En primer lugar, necesitas saber qué el Nunchuck acelerómetro cada variedad de datos eje. He probado algunos de ellos y todos ellos muestra ligeras diferencias.  Pero sobre todo, los rangos de 60-70 como mínimo y 180-200 como máximo.  Para la mayor sensibilidad del nivel, debe cargar primero el Wiichuck_range_test y encontrar aquellos valores (mínimo, centro (nivel) y máximo) para cada eje y ajuste los valores en el bosquejo principal si es necesario.

El bosquejo de la prueba de rango es simple y sencillo por lo que no explico el detalle aquí.

El programa principal, Wii_Nunchuck_Level se muestra a continuación y también adjunto.

La función getData() obtener los valores para cada eje y guardarlos en el array de bytes [AgCl] y buscar la orientación del nivel y devuelve 'Oriente'.

La función orientation() obtiene los valores actuales de eje y buscar la orientación del nivel.  Cada orientación da dos ejes como medio (nivelado, alrededor de 120-130) y un eje como mínimo o máximo dependiendo de la dirección de la gravedad.  Con estas características, determina la orientación.

El loop() principal es bastante simple.  Controla si el botón de calibración se presiona por ver si el pin 10 es alta y si no leer los datos actuales y encender LEDs.  El programa compara los datos actuales a la tienda (en la EEPROM de la ATmega328P) datos de calibración. Hay tres etapas de la exhibición: 1) si el valor está dentro de cierto rango, se encenderá el LED rojo central conectado al pin digital 7; 2) si el valor es mayor que el rango (sens en el programa) y menos de 2 veces de la gama (sens), se encenderá el rojo LED y un LED verde en el opuesto (para simular la dirección de la burbuja) lado de la inclinación; 3) si el valor es mayor que 2 veces de la gama (sens), entonces solamente el LED verde se enciende.

Los valores de calibración son el valor neutro de cada eje cuando está nivelada en el eje de lectura. Por ejemplo, la lectura de datos del Nunchuck es entre 60-70 (estos valores son diferentes desde el sensor a) - g (boca abajo) en el eje y es más de 170 g (arriba la derecha). Por lo que el valor neutro (nivelado) de cada eje es de 120-130. La calibración comienza cuando el pin 10 va alto conectadas a V + con un pequeño empuje interruptor de botón presionado. Uno comienza el proceso de calibración, con el fin de dar al usuario un tiempo para colocar el dispositivo sobre una superficie plana, espera hasta que el LED rojo central parpadee un par de veces. La calibración real es realmente rápida y seguida por unos parpadea más rápido.

/*
* Wii_Nunchuck_Level
* Febrero-marzo 2012, Jinseok Jeon
* http://jeonlab.wordpress.com
*
* Wii Nunchuck datos leer:
* nunchuck_funcs.h de WiiChuckDemo de 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"

AgCl Byte [3]; las lecturas del acelerómetro para x, y, eje z
calPin int = 10; pin de calibración
sens de int = 1; sensibilidad
int Oriente;

void setup()
{
nunchuck_init();
para (int i = 5; i < 10; i ++) {}
pinMode (i, salida);
} //9 izquierda, 8 a, centro 7, 6 abajo, derecha 5
pinMode (calPin, entrada);
Delay(100);
}

void loop()
{
Si se presiona el pin de calibración, saltar a la funcion calibrate()
Si (digitalRead(calPin) == HIGH) calibrate();

getData();

Si (Oriente == 1 || Oriente == 2) {}
Si (abs (AgCl [0]-EEPROM.read (0 + Oriente * 10)) < = 2 * sens) digitalWrite (7, alto);
Si (AgCl [0]-EEPROM.read (0 + Oriente * 10) > sens) digitalWrite (5, alto);
Si (EEPROM.read(0 + orient*10)-AgCl [0] > sens) digitalWrite (9, alto);
}
Si (Oriente == 3 || Oriente == 4) {}
Si (abs (AgCl [1]-EEPROM.read (orientar + 1 * 10)) < = 2 * sens) digitalWrite (7, alto);
Si (AgCl [1]-EEPROM.read (orientar + 1 * 10) > sens) digitalWrite (8, HIGH);
Si (EEPROM.read(1 + orient*10)-AgCl [1] > sens) digitalWrite (6, alto);
}
Si (Oriente == 5 || Oriente == 6) {}
Si (abs (AgCl [0]-EEPROM.read (0 + Oriente * 10)) < = 2 * sens & & abs (AgCl [1]-EEPROM.read (orientar + 1 * 10)) < = 2 * sens) digitalWrite (7, alto);
Si (AgCl [0]-EEPROM.read (0 + Oriente * 10) > sens) digitalWrite (5, alto);
Si (EEPROM.read(0 + orient*10)-AgCl [0] > sens) digitalWrite (9, alto);
Si (AgCl [1]-EEPROM.read (orientar + 1 * 10) > sens) digitalWrite (8, HIGH);
Si (EEPROM.read(1 + orient*10)-AgCl [1] > sens) digitalWrite (6, alto);
}

Delay(50);
para (int i = 5; i < 10; i ++) {//turn apaga todos los LEDs
digitalWrite (i, LOW);
}
}

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

Oriente = orientation(); obtener orientación
}

void calibrate()
{
para (int i = 0; i < 3; i ++) {}
digitalWrite (7, alto);
Delay(500);
digitalWrite (7, bajo);
Delay(500);
}

getData();

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

para (int i = 0; i < 3; i ++) {}
digitalWrite (7, alto);
Delay(200);
digitalWrite (7, bajo);
Delay(200);
}
}

int orientation()
{
Si (AgCl [0] > 125 & & AgCl [0] < 145 & & AgCl [2] > 110 & & AgCl [2] < 140) {}
Si Oriente (AgCl [1] > 170) = 1; abajo en el piso
otra cosa si Oriente (AgCl [1] < 75) = 2; arriba en el piso
}
else if (AgCl [1] > 110 & & AgCl [1] < 140 & & AgCl [2] > 110 & & AgCl [2] < 140) {}
Si Oriente (AgCl [0] > 180) = 3; izquierda en el piso
otra cosa si Oriente (AgCl [0] < 90) = 4; en piso
}
else if (AgCl [1] > 110 & & AgCl [1] < 140 & & AgCl [0] > 125 & & AgCl [0] < 145) {}
Si Oriente (AgCl [2] > 170) = 5; en el piso
otra cosa si Oriente (AgCl [2] < 80) = 6; frente en el piso
}
retorno Oriente;
}

Artículos Relacionados

Proyecto Robot insecto - con nunchuck wii

Proyecto Robot insecto - con nunchuck wii

Proyecto Robot insectoLo que el robot debe tener:Objeto en movimiento, led lichtEl material del robot debe consistir en 3 diferentes tipos de materialLas impresoras 3D son necesarias en el proceso de este proyecto.Paso 1: Partes del proyecto y los pa
Nunchuck Wii inalámbrico controlado por Arduino

Nunchuck Wii inalámbrico controlado por Arduino

Utilizar un sin modificar totalmente inalámbrico Wii Nunchuck como un sistema de control para cualquier proyecto basado en Arduino. No pares de transmisor/receptor de radio mayor etc..Este instructable asumir alguna experiencia con el microcontrolado
Integración de Arduino nunchuck

Integración de Arduino nunchuck

Para la clase de sumobots encontrado aquí...El nunchuk de Wii es un producto bastante sorprendente.Para menos de $3,00 aquí, puede comprar uno y tenerlo enviado a su puerta.No sólo consigues el joystick normal (izquierda, derecha, arriba, abajo), tam
Controlar su Robot con un Wii Nunchuck (y un Arduino)

Controlar su Robot con un Wii Nunchuck (y un Arduino)

después de usar yo mismo a jugar Wii boxeo me puse a pensar sería genial si pudiera utilizar este control con mi robot, (mirando a mi mano izquierda).Buscando por internet encontré un grupo de personas que hacen cosas similares, (enlaces a todos just
ESP8266 y Visuino: mando a distancia WiFi Smart coche Robot con Wii Nunchuck

ESP8266 y Visuino: mando a distancia WiFi Smart coche Robot con Wii Nunchuck

Que coche elegante se establece cuando se combinan con Los módulos de controladores Motor L298N, ofrecen una de las maneras más fáciles de fabricar coches robot. Ya hice un Instructable sobre cómo puede controlar coche Smart con Arduino y Joystick. S
Wii Nunchuck adaptador

Wii Nunchuck adaptador

este tutorial es para todas aquellas personas que tienen un arduino y usar allí nunchuck de Wii como un dispositivo de entrada, pero no ganas realmente de corte abierto del cordón y arruinar el nunchuck para siempre!!!!!!bien has llegado al lugar cor
Unidad de texto a voz de Nunchuck. Muy bajo costo TVout/Arduino basado

Unidad de texto a voz de Nunchuck. Muy bajo costo TVout/Arduino basado

propósito:Más bajo costo posible texto a voz la unidad para las personas con discapacidad, posiblemente en los países en desarrollo. Independiente (es decir, no basado en PC)Dispositivo de entrada:Nunchuck Wii sin modificar.En este ejemplo estoy usan
Arduino animatronics-hacer tu vestuario impresionante más impresionante!

Arduino animatronics-hacer tu vestuario impresionante más impresionante!

Aquí es cómo agregar luces, sonido y acción a tu proyecto favorito de Halloween utilizando el microcontrolador de Arduino de código abierto. Arduino es fácil aprender a utilizar y se abre un nuevo mundo para traje constructores y creadores de la cria
Medida del ángulo mediante giroscopio, acelerómetro y Arduino

Medida del ángulo mediante giroscopio, acelerómetro y Arduino

el dispositivo es un prototipo áspero de lo que eventualmente se convertirá en un robot de balance del uno mismo, esta es la segunda parte de la cosa del agujero (leer acelerómetro y controlar un motor a balance del uno mismo). La primera parte con s
Tutoriales de Arduino (parte dos-17 Tutorial Pack)

Tutoriales de Arduino (parte dos-17 Tutorial Pack)

Se trata de Arduino Tutorial Pack parte 2.La 1ª parte está disponible aquí:La parte 3 está disponible aquí:A diferencia de otros tutoriales aquí no doy ningún fondo en teoría funciona. Está orientada al resultado como lograrlo - para hacer mediciones
Experimentos de Arduino (Supersize Instructable)

Experimentos de Arduino (Supersize Instructable)

Las masas si no todos los experimentos de Arduino hecho a mi manera, que siendo todos de llevar a cabo experimentos diferente a la siguiente persona, como tal este instructable tendrá un montón de videos y fotos, así como descripciones detalladas de
Cómo programar Arduino Pro Mini con Arduino Uno y ArduShield - sin los cables de

Cómo programar Arduino Pro Mini con Arduino Uno y ArduShield - sin los cables de

El objetivo principal de esta instrucción es mostrar cómo programar más fácil manera de Arduino Mini o Arduino Pro Mini con Arduino UNO y ArduShield – sin los cables.Paso Tutorial paso, con ninguna medida para saltar por PCB impresionante.Paso 1 - ¿q
Hacer un fuego de respiración Animetronic Pony de caramelo queridas o S'Mores

Hacer un fuego de respiración Animetronic Pony de caramelo queridas o S'Mores

para el Maker Faire Detroit 2011, muestra un hack que hice para un Pony de caramelo queridas amigos. Mis compañeros Hackers LVL1 y yo habíamos tomado el control del sistema de control motor del juguete y añadido un lanzador de la llama.  Parecía pasa
Pregunta caja Puzzle

Pregunta caja Puzzle

esto es un juego rompecabezas con temática caja basado en un Arduino Mega.  Sólo usé lo que tenía que poner, así que si usted quería construir algo como esto tuyo probablemente será diferente.  Quería este tutorial más sobre la idea de la caja del ro