Système de guidage du Rocket Powered Arduino (6 / 6 étapes)

Étape 6: Code

Ce code ne pourrait pas travailler, n’hésitez pas à le changer et de me faire savoir comment vous l’avez changé. Il s’agit du domaine du public.

/*
Ce scketch est basé sur l’accéléromètre Memsic 2125 lire le code de http://www.arduino.cc/en/Tutorial/Memsic2125
et le RCServoMotorsControlledWithAccelMeter2
basé sur le code échantillon de l’ITP
http://ITP.nyu.edu/physcomp/Labs/servo
Ces croquis ont été modifiés et retravaillés par Chris Barta.
therocketgeek.wordpress.com

Cet exemple de code est dans le domaine public.
*/
#include < Servo.h >

Servo myservo ;

const int XPSous = 11 ; X sortie de l’accéléromètre
const int yPin = 12 ; Sortie Y de l’accéléromètre

long lastPulse = 0 ; Temps en millisecondes de la dernière impulsion
int refreshTime = 10 ; Temps nécessaire entre impulsions

int minSensorValue [XPSous] = {-180, -180} ; la valeur moins l’accéléromètre peut lire
int maxSensorValue [yPin] = {180, 180} ; la plus grande valeur que l’accéléromètre peut lire
int pulseWidth [XPSous] [yPin] = {0, 0} ; Largeur d’impulsion pour les moteurs servo

int sensorRange [XPSous] [yPin] = {maxSensorValue [0] - minSensorValue [0],
maxSensorValue [1] - minSensorValue [1]} ;
int i = 0 ;

phase d’int = 0 ; variable pour sélectionner le moteur servo drive

void setup()
{
myservo.Attach (1, 45, 135) ; définir quelle broche les servos sont sur
myservo.Attach (2, 45, 135) ; l’angle minimal
myservo.Attach (3, 45, 135) ; qui peut être tourné
myservo.Attach (4, 45, 135) ; et l’angle maximal
myservo.Attach (5, 45, 135) ; qui peut être tourné
myservo.Attach (6, 45, 135) ;
myservo.Attach (7, 45, 135) ;
myservo.Attach (8, 45, 135) ;
myservo.Write(90) ; Set servo à mi-ouverture (90 degrés)

pinMode (xPin, entrée) ; Set x valeur de l’accéléromètre comme intrant
pinMode (yPin, entrée) ; la valeur y de l’accéléromètre comme intrant
}

void loop()
{
variables pour lire les largeurs d’impulsion :
int pulseX, pulseY ;
variables pour contenir les accélérations qui en résulte
int accelerationX, accelerationY ;

lu impulsion de x - axes et y :
pulseX = pulseIn(xPin,HIGH) ;
pulseY = pulseIn(yPin,HIGH) ;

convertir la largeur d’impulsion en accélération
accelerationX et accelerationY sont en milli-g ' s :
la gravité terrestre est 1000 milli-g ' s, soit 1 gramme.
accelerationX = ((pulseX / 10) - 500) * 8 ;
accelerationY = ((pulseY / 10) - 500) * 8 ;

le servo d’impulsion à nouveau si la mise à jour le temps (20ms) se sont écoulés :
Si (millis() - lastPulse > = refreshTime) {}

Si (accelerationX < 0) / / si la fusée quitte ensuite l’axe des abscisses
{
myservo.Attach(1) ; les deux servos 1,3 seront déplacera pour s’opposer à la circulation
myservo.Write(135) ; le sens de servo 1
myservo.Attach(3) ; les deux servos sont face à face
myservo.Write(45) ; donc ils doivent déplacer « opposées »

} else if (accelerationX > 0) ; Si la fusée va dans
(accelerationY > 0) ; le x, axe y
{
myservo.Attach(5) ; puis les servos dans l’uppersection
myservo.Write(135) ; seuil (5,7) contrecarrer le mouvement dans cette direction
myservo.Attach(7) ;
myservo.Write(45) ;
}

} else if (accelerationX = 0) ; s’il n’y a aucun mouvement puis
(accelerationY = 0) ; garder les servos alignées avec la fusée
{
myservo.Attach(5) ;
myservo.Write(90) ;
myservo.Attach(7) ;
myservo.Write(90) ;
}

{
Si (accelerationX > 0) / / la même chose que dans l’autre sens
{
myservo.Attach(1) ;
myservo.Write(45) ;
myservo.Attach(3) ;
myservo.Write(135) ;

} ElseIf (accelerationX < 0) ;
(accelerationY < 0) ;
{
myservo.Attach(5) ;
myservo.Write(45) ;
myservo.Attach(7) ;
myservo.Write(135) ;

Si (accelerationX = 0) ;
(accelerationY = 0) ;
{
myservo.Attach(5) ;
myservo.Write(90) ;
myservo.Attach(7) ;
myservo.Write(90) ;
}
}

Si (accelerationX = 0) ; s’il n’y a pas de mouvement
{
myservo.Attach(1) ; alors gardez les servos alignées avec la fusée
myservo.Write(90) ;
myservo.Attach(3) ;
myservo.Write(90) ;
}
}
Si (accelerationY < 0)
{
myservo.Attach(2) ;
myservo.Write(45) ;
myservo.Attach(4) ;
myservo.Write(135) ;

} else if (accelerationX > 0) ;
(accelerationY < 0) ;
{
myservo.Attach(6) ;
myservo.Write(135) ;
myservo.Attach(8) ;
myservo.Write(45) ;
}
{
Si (accelerationX = 0) ;
(accelerationY = 0) ;
{
myservo.Attach(6) ;
myservo.Write(90) ;
myservo.Attach(8) ;
myservo.Write(90) ;
}
}

{
Si (accelerationY > 0)
{
myservo.Attach(2) ;
myservo.Write(135) ;
myservo.Attach(4) ;
myservo.Write(45) ;

} ElseIf (accelerationX < 0) ;
(accelerationY > 0) ;
{
myservo.Attach(6) ;
myservo.Write(45) ;
myservo.Attach(135) ;
myservo.Write(135) ;
}
{
Si (accelerationX = 0) ;
(accelerationY = 0) ;
{
myservo.Attach(6) ;
myservo.Write(90) ;
myservo.Attach(8) ;
myservo.Write(90) ;
}
}
}
Si (accelerationY = 0) ;
{
myservo.Attach(2) ;
myservo.Write(90) ;
myservo.Attach(4) ;
myservo.Write(90) ;
}
{
Delay(100) ; Il s’agit de répéter de temps de retard pour les servos peuvent rattraper
}
}

En outre, vous pouvez aller à https://sites.google.com/site/arduinorocket/products-experiment . C’est quasiment la même chose, sauf qu’il y a des indentations. 

Articles Liés

Bases de transformer votre véhicule Controll distant en un système autonome (Drone) en utilisant un Arduino

Bases de transformer votre véhicule Controll distant en un système autonome (Drone) en utilisant un Arduino

j'ai commencé ce projet avec l'objectif de transformer à moindre coût ma RC hélicoptère en quelque chose d'un UAV ou au moins pour s'adapter à certains capteurs pour réduire les collisions et autres "Pad mal."Maintenant, malheureusement, au débu
Arduino et Visuino : connecter D 4 systèmes ViSi Genie smart écran tactile à Arduino

Arduino et Visuino : connecter D 4 systèmes ViSi Genie smart écran tactile à Arduino

Il arrive un moment, quand vous voulez avoir un écran tactile connecté à votre carte Arduino. Il y a beaucoup de différentes options d'affichage et de tailles disponibles, mais la plupart d'entre eux exige une somme considérable de code pour être con
SOLAR POWERED ARDUINO STATION météo

SOLAR POWERED ARDUINO STATION météo

Dans des pays comme l'Inde, la plupart des gens est tributaire de l'agriculture. Pour une planification efficace en prévision de l'agriculture est d'une importance capitale. Si les agriculteurs sont toujours intéressés par le séjour d'agriculteurs Fo
À effet de serre, RACK de serveurs, AQUARIUM et autres appareils surveillant avec SMS alarme système de température en utilisant Arduino, itbrainpower.net 3G / GSM shields et capteur de température 1WIRE

À effet de serre, RACK de serveurs, AQUARIUM et autres appareils surveillant avec SMS alarme système de température en utilisant Arduino, itbrainpower.net 3G / GSM shields et capteur de température 1WIRE

Sur le projetConstruisez vous-même votre propre surveillance système avec des seuils de température maximale et minimalede la température, garder vivantes massages et pagination de SMS (oldies mais goldies comme) et système ARM/DISARM distant. Vous p
Contrôlez votre système Audio, Dvd et Tv avec Arduino et Android

Contrôlez votre système Audio, Dvd et Tv avec Arduino et Android

Salut tout le monde, c'est mon deuxième instructable et mon premier en anglais, oui, Désolé pour les fautes.Je tiens à partager ce projet qu'il s'agit de comment vous pouvez contrôler votre Tv, de DVD et de votre système Audio avec Arduino et un app
Porte de garage de Twitter en utilisant le système d’alerte de GE choix & Arduino

Porte de garage de Twitter en utilisant le système d’alerte de GE choix & Arduino

vous savez ce sentiment de conduite loin de votre maison presque en train de travailler et en disant "maintenant n'a fermé la porte de garage?".  Je déteste ce sentiment et recherchée sur la sorte smiplest/moins cher que j'ai pu le résoudre.  Le
« Smart Shield » - système d’alarme portatif en utilisant Arduino

« Smart Shield » - système d’alarme portatif en utilisant Arduino

détecteur est relié à la carte arduino. Lorsqu'un mouvement est détecté, une alarme sonore et clignotante LED volonté commencent à agir. Les temps des détections de mouvement sont enregistrées et peuvent être consultés plus tard sur un petit écran LC
Système de sécurité en utilisant Arduino et 1sheeld

Système de sécurité en utilisant Arduino et 1sheeld

La conception est simple que l'Arduino uno et 1sheeld planches servent, capteurs pour réaliser un système de sécuritéÉtape 1: composantsArduino uno1sheeldsommiercapteur de lumière de Grovecapteur de bouton Grovea conduitÉtape 2: Téléchargerbibliothèq
Système de verrouillage des portes de Arduino

Système de verrouillage des portes de Arduino

Dans ce projet, j'ai fait une serrure de porte (ou boîte de serrure) qui s'ouvre lorsque vous entrez votre mot de passe et appuyez sur "*".Étape 1: Matériel nécessaire... 1. Arduino uno2. standard Servo3. rouge et vert LED4. réglettes à broches
LiPo-Powered Arduino

LiPo-Powered Arduino

faisons-facelui, piles 9V sucent.  Ils ne durent pas longtemps, ils sont chers, et ai-je mentionné qu'ils ne durent pas longtemps ?  Je travaille sur et exécuter plusieurs voitures RC électriques, et pour cette raison je suis propriétaire d'un lot de
Rocket Powered Hotwheels

Rocket Powered Hotwheels

objet : Ok, donc mon cours de physique d'honneurs a dit que nous aurions besoin de fixer en quelque sorte une fusée à la petite hotwheels qui enfants collectent et casser tout le temps. L'information que nous avons essayé de faire était l'accélératio
Rocket Powered Hot Wheels

Rocket Powered Hot Wheels

il s'agissait d'un projet génial qui a été fait en physique des honneurs.  Tout, que c'est un jouet de roues chaudes que nous avons fait dans une voiture-fusée alimenté.  Il est très facile à créer.  Le but du projet était de calculer l'accélération
Solar powered arduino au verso d’une carte à jouer

Solar powered arduino au verso d’une carte à jouer

Voici une tragédie six mot :Mon arduino nécessite quatre piles AA.Vraiment ?  N'est pas ce 2012 ?  Où est mon jetpack? !Voici une façon de l'avenir--un moyen de faire un panneau solaire, à partir de zéro, qui peut alimenter un arduino hors de la lumi
Fusée de sucre / Rocket powered panier !

Fusée de sucre / Rocket powered panier !

Cette instructable va vous montrer comment faire un moteur de fusée K classe sorbitol (presque un L) avec une impulsion totale de s 482 lb de Poussée ; et vous montrera comment faire pour attacher à un panier d'achat ! Mise en garde ! Je ne suis pas