Laberinto de Arduino (4 / 4 paso)

Paso 4: Código de Arduino

El código puede modificarse para que el joystick o el acelerómetro puede ser por defecto!
El código tiene algunos elementos no necesarios que son insignificantes!

#include / / biblioteca Arduino Wire.h
#include / / biblioteca Arduino string.h
#include / / biblioteca Arduino Stdio.h
#include / / biblioteca Arduino Servo.h

Servo myservo;  crear objeto servo para controlar el servo de gatillo

int pos = 90;    variable para almacenar la posición del servo de gatillo

telefonía de uint8_t [6];

int cnt = 0;
int ledPin = 13;
int ledPin12 = 12;
int Z_trig;

int servoPin = 7;
int servoPin2 = 6;

anchura de impulso de int = 0;
int pulseWidth2 = 0;

lastPulse largo = 0;
lastPulse2 largo = 0;

int z_button = 0;
int c_button = 0;

int refreshTime = 20;  ajustado para servos Hi-Tech

int minPulse = 300;  ajustado para servos Hi-Tech 3-11
int minPulse2 = 300;  ajustado para servos Hi-Tech 3-11
int maxPulse = 2500; posición máxima servo
int maxPuls2e = 2500; posición máxima servo

tiempo de int = 10;

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

void setup()
{
myservo.Attach(8);

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

anchura de impulso = minPulse;
pulseWidth2 = minPulse2;

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

void nunchuck_init() / / apretón de manos de monja-mandril de Wii
{
Wire.beginTransmission (0x52);
Wire.Send (0 x 40);
Wire.Send (0 x 00);
Wire.endTransmission ();
}

void send_zero() / / apretón de manos de monja-mandril de Wii
{
Wire.beginTransmission (0x52);
Wire.Send (0 x 00);
Wire.endTransmission ();
}

int t = 0;

void loop()
{
pinMode (ledPin12, salida); Juegos pin 12 como una salida para que el solenoide puede ser controlado por el botón de Wii Nunchuck Z
t ++;
fin = millis();

Si (t == 1) {}

t = 0;

Wire.requestFrom (0x52, 6);

mientras que (Wire.available ()) {}
telefonía [cnt] = nunchuk_decode_byte (Wire.receive ());
digitalWrite (ledPin, HIGH);
CNT ++;
}

Si (cnt > = 5) {}

int z_button = 0; Inicializa Z a cero
int c_button = 0; Inicializa C a cero

Si ((telefonía [5] >> 0) & 1) / / bytes examina cinco desde la Wii-Nunchuck para posición de botón Z
z_button = 1; sistemas Z 1
Si ((telefonía [5] >> 1) & 1) / / bytes examina cinco desde la Wii-Nunchuck para posición de botón Z
c_button = 1; C se establece en 1

interruptor (c_button) {/ / caso de declaración de estado de botón para C
caso 1:

MUOVI (telefonía [1] / 2 + 0x3E, telefonía [0] / 2 + 0x3E); Activa Control de Accelromiter para Wii-Nunchuck
rotura;
caso 0:
MUOVI (telefonía [3], telefonía [2]); defalt control Joystick para Wii-nunchuck
rotura;
}

interruptor (z_button) {/ / caso de declaración de estado de botón para Z
caso 1: {}
digitalWrite (ledPin12, bajo);   solenoide por defecto es off
Z_trig = 0;}
rotura;
caso 0: {}
Si (Z_trig == 0) {}
digitalWrite (ledPin12, HIGH);  Activa el solenoide
Delay (20);
digitalWrite (ledPin12, bajo); desactiva el solenoide si botón Z llevó a cabo para proteger a de última hora
Z_trig = ;}} 1

rotura;
}

}

CNT = 0;
send_zero();

}

updateServo();

Delay(dtime);
}


void updateServo()
{

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

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

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

lastPulse = millis();
}
}

int i = 0;

char nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}

void muovi (uint8_t x uint8_t y) {}
inclinación del flotador = (700 - x * 2 * 2);
flotador tilt2 = (0x7E - y + 0x7E) * 2 * 2;

inclinación = (inclinación);
anchura de impulso = (inclinación * 5) + minPulse;

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

pwbuff [pwbuffpos] = anchura de impulso;
pwbuff2 [pwbuffpos2] = pulseWidth2;

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


anchura de impulso = 0;
pulseWidth2 = 0;

para (int p = 0; p anchura de impulso += pwbuff [p];
pulseWidth2 += pwbuff2 [p];
}

anchura de impulso = pwbuffsize;
pulseWidth2 = pwbuffsize;
}

Artículos Relacionados

Laberinto Robot Solver, utilizando Inteligencia Artificial con Arduino

Laberinto Robot Solver, utilizando Inteligencia Artificial con Arduino

(Si te gusta este Instructable, no olvide votar en ella (por encima de: bandera de la esquina a la derecha). Rex, el Robot está compitiendo en robótica y sensores concursos. ¡Muchas gracias! ;-)Este Instructable fue desarrollado en mi último proyecto
Arduino controlado laberinto de mármol

Arduino controlado laberinto de mármol

se trata de un simple proyecto de Arduino para el control de un laberinto de mármol.  El Laberinto de mármol (se puede controlar en línea) viene de un proyecto en TeleToyland, y las instrucciones de construcción son en este Instructable.  Para una ex
Laberinto de Solver con Arduino y ArduMoto(Micromouse) V:1.1

Laberinto de Solver con Arduino y ArduMoto(Micromouse) V:1.1

Este '' Instructables'' pretende ayudar a cualquier fábrica, entusiasta para hacer su propio solucionador de laberinto (realizar). La existencia de realizar se remonta a la década de 1950 y desde entonces se celebran competiciones. Aunque estas compe
Protector de perro y escenario de cartero con Arduino

Protector de perro y escenario de cartero con Arduino

El objetivo de este proyecto es programar dos robots para interactuar con éxito con los demás, actuando hacia fuera de un escenario de mailman de perro de guardia. El escenario es que el robot perro guardián protege su casa (también conocido como fue
Arduino cerveza Pong mesa

Arduino cerveza Pong mesa

Nuestro proyecto es una luz LED mesa de entretenimiento, o coloquialmente, una mesa de Beer Pong. Tenemos la idea de un grupo de estudiantes el año pasado, quien también construyó una tabla de pong de la cerveza para su proyecto final, y aprendimos s
Laberinto laser sistema de seguridad

Laberinto laser sistema de seguridad

esto es un Instructable que te dice como hacer un laberinto laser tripwire o láser, al igual que en las películas!Todo lo que necesitas:* Arduino* Timbre/alarma/Led* Led (opcional)* 1 resistencia (cualquier valor)* LDR 1* Láser pen* Una caja para alb
Laberinto de Lazer

Laberinto de Lazer

El laberinto de Lazer era nuestro proceso y arduino powered evento en una fiesta de tecnología nivel de estado llamada ENIGMA. un monitor primero muestra "pulse iniciar" en el cual un video dando instrucciones sobre el laberinto. luego un botón
El corredor del laberinto de mármol

El corredor del laberinto de mármol

Este Instructable será tratar y ayudar a aprender cómo hacer su propio mármol tilt MazePaso 1: Los materiales Arduino UnoCables x 8 (diffirent colores, véase edificio.)Módulo Bluetooth de serieMotor servoCuernos Motor servo x 2 (usted puede impresión
Robot laberinto Solver

Robot laberinto Solver

Este tutorial le ayudará a crear un robot basado en Arduino que puede solucionar laberintos de línea básica que no cuentan con circuitos cerrados.Cómo funciona:El robot está programado para conducir sobre las líneas negras del laberinto y utilizar se
Línea básica siguiente Robot con Arduino

Línea básica siguiente Robot con Arduino

07/09/2015Han pasado unos años desde que publicamos inicialmente básica línea siguiente Robot con Arduino tutorial, y parece que mucha gente encuentra útil que debemos publicar una actualización que funciona actual de las bibliotecas de Arduino, incl
Laberinto para resolver Robot

Laberinto para resolver Robot

Información adicional en: http://patrickmccabemakes.com/hardware/Maze_Solvin...En este instructable mostrará usted cómo construir un laberinto para resolver robot. Este es realmente mi 3er intento hacer uno. La primera fue un completo fracaso. El seg
Servo controlado laberinto de mármol

Servo controlado laberinto de mármol

Esta es la versión del laberinto de mármol clásico (hay opciones en el camino), donde el pan y tilt están controlados por servos de hobby. Con los servos, se puede trabajar el laberinto con un controlador RC o un PC, etc..Hemos construido éste para s
LÁSER de laberinto 2012 - Halloween Haunted House

LÁSER de laberinto 2012 - Halloween Haunted House

una nueva versión del laberinto láser para 2012!(buscar la versión anterior aquí: laberinto LASER 2011)Ver las fotos en el paso 7.Ver los VIDEOs en el paso 8.¿Qué es?El laberinto láser 2012 es un estilo de película láser "sistema de seguridad" q
Arduino RPG simulador

Arduino RPG simulador

En mi juventud, nos tenía arcadas y boleras para jugar un poco mejor que el sistema de inicio Juegos de Atari. El sistema de ordenador de VIC-20 fue el predecesor de la Commodore 64. Crecer durante un tiempo antes de los teléfonos inalámbricos y gráf