Niveau à bulle Wii Nunchuck Arduino (6 / 7 étapes)

Étape 6: Charge de sketch Arduino Wii_Nunchuck_Level

Il y a deux esquisses de l’Arduino: 1) Wiichuck_range_test ; et 2) Wii_Nunchuck_Level.

Tout d’abord, vous devez savoir quel le Nunchuck accéléromètre chaque plage de données d’axe sont. J’ai testé quelques uns d'entre eux et tous les spectacles de légères différences.  Mais surtout, les plages sont 60-70 comme minimum et 180-200 comme maximum.  Afin que la meilleure sensibilité du niveau, vous devez charger le Wiichuck_range_test tout d’abord, trouver ces valeurs (Centre (au niveau), minimum et maximum) pour chaque axe et ajuster les valeurs dans l’esquisse principale si nécessaire.

L’esquisse de test gamme est simple et rapide donc je ne vais pas expliquer le détail ici.

Le programme principal, Wii_Nunchuck_Level est montré ci-dessous et également attaché.

La fonction GetData extraire les valeurs de chaque axe et stockez-les dans Byte array accl et trouver l’orientation du niveau et retourne « orienter ».

La fonction orientation() obtenir les valeurs de l’axe actuel et trouver l’orientation du niveau.  Chaque orientation donne deux axes comme moyen (nivelé, autour de 120-130) et un axe minimum ou maximum selon la direction de la gravité.  En utilisant cette caractéristiques, il détermine l’orientation.

La loop() principale est assez simple.  Il surveille si le bouton de calibrage est pressé de voir si la broche 10 est élevé et autrement il lu les données actuelles et allumer les LEDs.  Le programme compare les données actuelles de la stockée (dans l’EEPROM de la ATmega328P) données de calibration. Il y a trois étapes d’affichage: 1) si la valeur est comprise dans certains, il s’allume la LED rouge centrale connectée à la broche numérique 7 ; 2) si la valeur est supérieure à la plage (sens au programme) et moins de 2 fois de la gamme (sens), il s’allume rouge LED et un LED verte en face (pour simuler la direction bulle) côté de la bâche ; 3) si la valeur est supérieure à 2 fois de la gamme (sens), alors seulement la LED verte est allumée.

Les valeurs d’étalonnage sont la valeur neutre de chaque axe de lecture quand il est nivelé sur cet axe. Par exemple, la lecture de données Nunchuck est entre 60-70 (ces valeurs sont différentes d’un capteur à) - g (à l’envers) sur cet axe et est de plus de 170 g (à droite). Donc la valeur neutre (nivelée) de chaque axe est d’environ 120-130. L’étalonnage commence lorsque la broche 10 passe haut reliée à V + avec un petit bouton poussoir interrupteur enfoncé. Un le processus d’étalonnage commence, afin de donner à l’utilisateur quelque temps à poser l’appareil sur une surface plane, il attend jusqu'à ce que la centrale LED rouge clignote plusieurs fois. L’étalonnage réel est fait très vite et suivie de quelques clignote plus rapidement.

/*
* Wii_Nunchuck_Level
* Février-mars 2012, Jinseok Jeon
* http://jeonlab.wordpress.com
*
* Wii Nunchuck données lues :
* 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 »

accl octet [3] ; lectures d’accéléromètre pour x, y, axe z
calPin int = 10 ; goupille de calibration
sens int = 1 ; sensibilité
int orient ;

void setup()
{
nunchuck_init() ;
pour (int i = 5; i < 10; i ++) {}
pinMode (i, sortie) ;
} //9 à gauche, 8 vers le haut, le centre 7, de 6 en bas et de droite 5
pinMode (calPin, entrée) ;
Delay(100) ;
}

void loop()
{
Si vous appuyez sur la broche de calibration, sauter à funcion calibrate()
Si (digitalRead(calPin) == haute) calibrate() ;

getData() ;

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

Delay(50) ;
pour (int i = 5; j’ai < 10; i ++) {//turn éteint toutes les LEDs
digitalWrite (i, faible) ;
}
}

void GetData
{
nunchuck_get_data() ;
accl [0] = nunchuck_accelx() ;
accl [1] = nunchuck_accely() ;
accl [2] = nunchuck_accelz() ;

Orient = orientation() ; obtenir l’orientation
}

Sub calibrate()
{
pour (int i = 0; i < 3; i ++) {}
digitalWrite (7, HIGH) ;
Delay(500) ;
digitalWrite (7, faible) ;
Delay(500) ;
}

getData() ;

pour (int i = 0; i < 3; i ++) {}
EEPROM.write (j’ai + orient * 10, accl[i]) ;
}

pour (int i = 0; i < 3; i ++) {}
digitalWrite (7, HIGH) ;
Delay(200) ;
digitalWrite (7, faible) ;
Delay(200) ;
}
}

int orientation()
{
Si (accl [0] > 125 & & accl [0] < 145 & & accl [2] > 110 & & accl [2] < 140) {}
s’orienter (accl [1] > 170) = 1 ; bas étage
bien s’orienter (accl [1] < 75) = 2 ; haut étage
}
ElseIf (accl [1] > 110 & & accl [1] < 140 & & accl [2] > 110 & & accl [2] < 140) {}
s’orienter (accl [0] > 180) = 3 ; gauche sur plancher
bien s’orienter (accl [0] < 90) = 4 ; directement sur le plancher
}
ElseIf (accl [1] > 110 & & accl [1] < 140 & & accl [0] > 125 & & accl [0] < 145) {}
s’orienter (accl [2] > 170) = 5 ; retour sur le plancher
bien s’orienter (accl [2] < 80) = 6 ; avant sur le plancher
}
retour d’orient ;
}

Articles Liés

6 d’Arduino shot de tourelle à l’élastique (Wii Nunchuck + Arduino)

6 d’Arduino shot de tourelle à l’élastique (Wii Nunchuck + Arduino)

après une longue pause de mon Arduino, j'ai décidé que je devrais trouver un beau projet pour faciliter en l'utilisant. Voilà le résultat ! et ce n'était pas une manière très aimable pour faciliter dans une plate-forme peu familier, mais c'était bien
Arduino Wii Nunchuck controller

Arduino Wii Nunchuck controller

Comment faire pour commander 2 servos pensé le nunchuck wii.Étape 1: pièces Wii nunchuckArduino2 servoCarte de prototypageFils de raccordementÉtape 2: se connecter Brancher le nunchuck wii comme ce schéma.Étape 3: Télécharger le CodeÉtape 4: fait!!!
Sans fil Wii Nunchuck contrôlée Arduino

Sans fil Wii Nunchuck contrôlée Arduino

Utiliser un complètement non modifiée sans fil Wii Nunchuck comme un système de contrôle pour tout projet Arduino basé. Aucune paire d'émetteur/récepteur radio ajouté etc..Cette instructable assume-t-il certaine expérience avec le microcontrôleur Ard
Wii Nunchuck comme contrôleur généraliste via carte Arduino

Wii Nunchuck comme contrôleur généraliste via carte Arduino

Rappel des faits :J'ai fait une planche à roulettes électrique autonome qui est orientée à l'aide d'un Wii Nunchuck en utilisant le levier de commande de pouce sur le dessus ou en l'inclinant gauche ou droite, selon qui des deux boutons à l'extrémité
Commander votre Robot à l’aide d’un Wii Nunchuck (et un Arduino)

Commander votre Robot à l’aide d’un Wii Nunchuck (et un Arduino)

après les avoir portés moi-même en jouant à Wii boxe je suis arrivé à penser ne serait-il pas merveilleux si je pourrais l'utiliser pour contrôler mon robot, (à la recherche de ma main gauche).En regardant autour de l'internet j'ai trouvé une foule d
Arduino Wii nunchuck et Wii motion plus avec code mis à jour pour IDE 1.0.2 et del

Arduino Wii nunchuck et Wii motion plus avec code mis à jour pour IDE 1.0.2 et del

alors, j'ai essayé de pirater mon nunchuck Wii parce que je veux contrôler les moteurs et les lumières avec le nunchuck Wii.Le premier problème que j'ai trouvé était de savoir comment connecter le contrôle sans adaptateur, je comptais en faire un, ma
ESP8266 et Visuino : télécommande WiFi Smart voiture Robot avec Wii Nunchuck

ESP8266 et Visuino : télécommande WiFi Smart voiture Robot avec Wii Nunchuck

Que voiture smart définit lorsqu'il est combiné avec Les Modules des pilotes automobile L298N, offre une des façons plus faciles à rendre les voitures robot. J'ai déjà fait une Instructable sur comment vous pouvez contrôler la voiture Smart avec Ardu
Animatronic yeux et Wii Nunchuck partie 2 - lui donner une voix

Animatronic yeux et Wii Nunchuck partie 2 - lui donner une voix

Après que j'ai construit les yeux animatronique dans la partie 1, j'ai voulu remplissez le visage avec une voix et éventuellement déplacement sourcils. Si vous revenez à ma partie 1, vous verrez que pour la base, j'ai utilisé un modèle de Thingiverse
Animatronic yeux et Wii Nunchuck

Animatronic yeux et Wii Nunchuck

J'ai trouvé ce fichier 3D sur Thingiverse par Micropuller. J'ai vite compris que le fichier crée une unité oeil surdimensionné. Mais j'ai toujours voulu explorer la création d'un visage animatronique que je pouvais contrôler avec un Arduino.Plus j'y
USB souris faite sur A Wii Nunchuck

USB souris faite sur A Wii Nunchuck

cette instructable décrira comment convertir une Nintendo Wii Nunchuk controller une souris à 2 boutons USB utilisant un Teensy USB.  Le Teensy USB est une carte de développement très convivial qui peut être programmée dans un environnement Arduino.
HackerBoxes 0002 : Renforcement à ARM32, MCU vidéo, Wii Nunchuck

HackerBoxes 0002 : Renforcement à ARM32, MCU vidéo, Wii Nunchuck

Ce Instructable partage l'essentiel du travail avec HackerBoxes #0002. HackerBoxes est le service de boîte d'abonnement mensuel pour les amateurs d'électronique, les responsables et les pirates. Si vous désirez recevoir une boite comme ce droit à vot
Projet Robot Bug - avec wii nunchuck

Projet Robot Bug - avec wii nunchuck

Projet Robot BugCe que le robot doit avoir :Objet en mouvement, licht ledLe matériel du robot doit se composer de 3 types différents de matérielLes imprimantes 3D sont nécessaires dans le processus de réalisation de ce projet.Étape 1: Composants Proj
Lanceur de Frisbee bureau avec Wii Nunchuck

Lanceur de Frisbee bureau avec Wii Nunchuck

Voici comment construire ma première itération d'un lanceur qui lève les disques Discraft mini Star ultime. On pourrait appeler cela la version rapide et sale. C'est vraiment de base. Il ne fait tirer. Mais, il pourrait facilement être modifié pour e
Intel Edison basic : niveau à bulle

Intel Edison basic : niveau à bulle

C'est comment faire le capteur d'accélération GY-61 travailler avec Intel Edison.Et en même temps, nous allons faire un niveau à bulle !Étape 1: Choses nécessaires et comment l'installer. Vous aurez besoin d'un Conseil d'Arduino base (j'ai utilisé l'