Arduino / Wii contrôlé tourelle de fusée de Lego Star Wars (3 / 3 étapes)

Étape 3: Arduino Sketch

Basé sur le code de http://www.ideavirus.it/ adapté avec l’aide d’Oliver à Londres Hackspace. Comprend sont : wire.h, string.h, stdio.h et Servo.h - pour une raison quelconque Instructables drops eux quand j’ai coller mon code.

#include
#include
#include
#include / / contrôles servo déclencheur seulement

Servo myservo ;  créer objet servo servo déclencheur de contrôle

int pos = 90 ;    variable pour stocker la position du servo déclencheur

uint8_t outbuf [6] ;

cnt int = 0 ;
int ledPin = 13 ;

int servoPin = 7 ;
int servoPin2 = 6 ;

int pulseWidth = 0 ;
int pulseWidth2 = 0 ;

long lastPulse = 0 ;
long lastPulse2 = 0 ;

int z_button = 0 ;
int c_button = 0 ;

int refreshTime = 70 ;  peaufiné pour servos FutabaS3003

int minPulse = 600 ;  peaufiné pour servos FutabaS3003
int minPulse2 = 600 ;  peaufiné pour servos FutabaS3003
int maxPulse = 2400 ; position du servo maximale
int maxPuls2e = 2400 ; position du servo maximale

dtime int = 10 ;

#define pwbuffsize 10
long pwbuff [pwbuffsize] ;
long pwbuffpos = 0 ;
long pwbuff2 [pwbuffsize] ;
long pwbuffpos2 = 0 ;

void setup()
{
myservo.Attach(8) ;  s’adapte sur le servo déclencheur sur la broche 8 l’objet de servo

Serial.Begin (9600) ;
Wire.Begin () ;
nunchuck_init () ;
pinMode (servoPin, sortie) ;
pinMode (servoPin2, sortie) ;

pulseWidth = minPulse ;
pulseWidth2 = minPulse2 ;

Serial.Print ("Finished setup\n") ;
}

Sub nunchuck_init()
{
Wire.beginTransmission (0 x 52) ;
Wire.Send (0 x 40) ;
Wire.Send (0 x 00) ;
Wire.endTransmission () ;
}

Sub send_zero()
{
Wire.beginTransmission (0 x 52) ;
Wire.Send (0 x 00) ;
Wire.endTransmission () ;
}

int t = 0 ;

void loop()
{

t ++ ;
Enfin = millis() ;

Si (t == 1) {}

t = 0 ;

Wire.requestFrom (0 x 52, 6) ;

tandis que (Wire.available ()) {}
outbuf [cnt] = nunchuk_decode_byte (Wire.receive ()) ;
digitalWrite (ledPin, HIGH) ;
CNT ++ ;
}

Si (cnt > = 5) {}

int z_button = 0 ;
int c_button = 0 ;

Si ((outbuf [5] >> 0) & 1)
z_button = 1 ;
Si ((outbuf [5] >> 1) & 1)
c_button = 1 ;

Switch (c_button) {}
cas 1 :

muovi (outbuf [3], outbuf [2]) ;
rupture ;
case 0 :
muovi (outbuf [1] / 2 + 0x3E, outbuf [0] / 2 + 0x3E) ;
rupture ;
}

Switch (z_button) {}
case 0 :

pour (pos = 90; pos > = 120; pos += 1) / / déclencheur est déclenché lorsque vous appuyez sur le bouton Z
{
myservo.Write(POS) ;
Delay(15) ;
}
pour (pos = 120; pos > = 90; pos-= 2) / / renvoie la gâchette vers le centre
{
myservo.Write(POS) ;
Delay(15) ;
}

rupture ;
cas 1 :
rupture ;
}

}

CNT = 0 ;
send_zero() ;

}

updateServo() ;

Delay(dtime) ;
}


Sub updateServo()
{

Si (millis() - lastPulse > = refreshTime) {}

digitalWrite (servoPin, HIGH) ;
delayMicroseconds(pulseWidth) ;
digitalWrite (servoPin, basse) ;

digitalWrite (servoPin2, HIGH) ;
delayMicroseconds(pulseWidth2) ;
digitalWrite (servoPin2, basse) ;

lastPulse = millis() ;
}
}

int i = 0 ;
Sub printNunchuckData()
{
int joy_x_axis = outbuf [0] ;
int joy_y_axis = outbuf [1] ;
int accel_x_axis = outbuf [2] ;
int accel_y_axis = outbuf [3] ;
int accel_z_axis = outbuf [4] ;

int z_button = 0 ;
int c_button = 0 ;

Si ((outbuf [5] >> 0) & 1)
z_button = 1 ;
Si ((outbuf [5] >> 1) & 1)
c_button = 1 ;
Si ((outbuf [5] >> 2) & 1)
accel_x_axis += 2 ;
Si ((outbuf [5] >> 3) & 1)
accel_x_axis += 1 ;

Si ((outbuf [5] >> 4) & 1)
accel_y_axis += 2 ;
Si ((outbuf [5] >> 5) & 1)
accel_y_axis += 1 ;

Si ((outbuf [5] >> 6) & 1)
accel_z_axis += 2 ;
Si ((outbuf [5] >> 7) & 1)
accel_z_axis += 1 ;

Serial.Print (i, DEC) ;
Serial.Print ("\t") ;

Serial.Print ("X:") ;
Serial.Print (joy_x_axis, DEC) ;
Serial.Print ("\t") ;

Serial.Print ("y") ;
Serial.Print (joy_y_axis, DEC) ;
Serial.Print ("\t") ;

Serial.Print ("AccX:") ;
Serial.Print (accel_x_axis, DEC) ;
Serial.Print ("\t") ;

Serial.Print ("AccY:") ;
Serial.Print (accel_y_axis, DEC) ;
Serial.Print ("\t") ;

Serial.Print ("AccZ:") ;
Serial.Print (accel_z_axis, DEC) ;
Serial.Print ("\t") ;

Serial.Print (z_button, DEC) ;
Serial.Print ("") ;
Serial.Print (c_button, DEC) ;
Serial.Print ("\r\n") ;
i ++ ;
}

nunchuk_decode_byte de char (char x)
{
x = (x ^ 0 x 17) + 0 x 17 ;
Return x ;
}

muovi Sub {(uint8_t, uint8_t XY)
flotteur tilt = (700 - x * 2 * 2) ;
flotteur tilt2 = (0x7E - y + 0x7E) * 2 * 2 ;

inclinaison = (inclinaison) ;
pulseWidth = (inclinaison * 5) + minPulse ;

Tilt2 = (tilt2-288) ;
pulseWidth2 = (tilt2 * 5) + minPulse2 ;

pwbuff [pwbuffpos] = pulseWidth ;
pwbuff2 [pwbuffpos2] = pulseWidth2 ;

Si (++ pwbuffpos == pwbuffsize) pwbuffpos = 0 ;
Si (++ pwbuffpos2 == pwbuffsize) pwbuffpos2 = 0 ;


pulseWidth = 0 ;
pulseWidth2 = 0 ;

pour (int p = 0; p pulseWidth += pwbuff [p] ;
pulseWidth2 += pwbuff2 [p] ;
}

pulseWidth / = pwbuffsize ;
pulseWidth2 / = pwbuffsize ;

Articles Liés

AMSC - multimédia de l’Arduino et contrôleur de Skype

AMSC - multimédia de l’Arduino et contrôleur de Skype

AMSC - multimédia de l'Arduino et contrôleur de Skype* Imaginez-vous regarder un film et, sorti de nulle part, quelqu'un vous appelle sur Skype et de ce fait vous obtenez destracted et vous avez besoin de rembobiner le film pour se concentrer à nouve
Orbite de Puzzlebox : En utilisant un Arduino pour contrôler un hélicoptère infrarouge

Orbite de Puzzlebox : En utilisant un Arduino pour contrôler un hélicoptère infrarouge

dans ce Instructable nous vous expliquerons comment les signaux infrarouges sont utilisés par une télécommande pour contrôler un jouet ou un périphérique, puis montrer comment un circuit simple peut être ajouté à un Arduino pour faire fonctionner l'a
En utilisant un Arduino de contrôler ou de tester un dispositif électronique de SPI

En utilisant un Arduino de contrôler ou de tester un dispositif électronique de SPI

il y a beaucoup de dispositifs électroniques qui utilisent le bus SPI, ou le bus Serial Peripheral Interface, pour les communications (p. ex. divers capteurs, LCD affiche, potentiomètres numériques, convertisseurs D/A et A/D, sans fil émetteurs et ré
Arduino Bluetooth contrôle moteur sans moteur puce

Arduino Bluetooth contrôle moteur sans moteur puce

Cette instructable vous indique comment contrôler un moteur à courant continu alimenté par petites piles via bluetooth à l'aide de quelques composants de base.Étape 1: matériauxVous aurez besoin :-1 x Arduino (tout va faire mais vous devrez peut-être
STAR WARS NINTENDO Wii

STAR WARS NINTENDO Wii

il s'agit d'une courte instructable sur comment j'ai dépassés un cas Nintendo Wii avec étoiles optiques de fibre et de logo pour une Wii sur le thème de Star Wars ! Cette Wii est en vente maintenant sur E-Bay, il aura également le jeu Star Wars the F
Sapin de Noël de mur Arduino-Powered w / Star Wars Theme LED Lights

Sapin de Noël de mur Arduino-Powered w / Star Wars Theme LED Lights

Il s'agit d'un arbre de Noël bricolage parfait pour les petites maisons, des appartements ou un bureau où vous ne voulez pas un arbre réel et que vous souhaitez un petit esprit de Noël.Vous pouvez aller simples ou complexes avec la conception ici mai
Motorisé, Sound réagissant à-St Star Wars modèle de Bandai, avec Arduino.

Motorisé, Sound réagissant à-St Star Wars modèle de Bandai, avec Arduino.

Issus de Star Wars à-St modèle Bandai.Réagit aux sons et tourne la tête vers elle.Fait avec Arduino Nano, un composant personnalisé 3dprinted, microphones, micro servo.Cette instructable est faite pour partager les modifications nécessaires pour acqu
Star Wars veilleuse avec linogravure et Arduino

Star Wars veilleuse avec linogravure et Arduino

Cette fois j'ai voulu faire un autre projet de cadre de photo et à nouveau avec un arduino simple contrôlé de LED. Étant donné que j'ai eu plein de trucs pour Lino traîner, j'ai pensé que ce serait bien illuminer un manuscrit.VIDEOLINKChoses que j'ai
Fusée de LEGO!!!

Fusée de LEGO!!!

Il s'agit d'un tutoriel sur les fusées de lego!!! OK, donc c'est une fusée de bouteille (eau ou co2) c'est le feu d'artifice ones. Oui matériaux = tape, bottle rockets, ciseaux et legos... maintenant ce sont des machines volantes impressionnants car
Arduino sonnerie Star Wars Theme

Arduino sonnerie Star Wars Theme

Arduino sonnerie Star Wars ThemeVidéos YouTubeDocuments
Mandrin de Wii contrôlée tourelle Air-soft: D

Mandrin de Wii contrôlée tourelle Air-soft: D

Code#include#include/** WiiChuck tourelle--** Cudnik Luc 2011**/#include#include « nunchuck_funcs.h »int loop_cnt = 0 ;Servo s1 ;Servo s2 ;octet accx accy, zbut, cbut ;int ledPin = 13 ;void setup(){pinMode (sortie 11) ;Serial.Begin(19200) ;nunchuck_s
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!!!
Jouet RC Arduino PC contrôlé par 2 fils (signal et sol)

Jouet RC Arduino PC contrôlé par 2 fils (signal et sol)

Cette instructables est ma façon de dire Merci à tous les auteurs de l'instructables qui m'inspirent. Merci!J'ai commandé précédemment RC Toys en soudant les fils dans les coussinets de l'IC RX2 et envoyer des commandes (haut/bas) vers le pont en H c
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