Sentriduino! Su la nueva torreta centinela de reciclar cosas que encontrarás en su casa! (8 / 9 paso)

Paso 8: Paso 7: el programa.

Hay dos códigos diferentes, personalmente me gusta algoritmo 2 mejor. algoritmo que 1 tipo de obra, se puede modificar para su propio uso.

algoritmo 1
#include < Servo.h >

int map_table [140] [14];
tablex de int = 0;
tabley int = 0;
cm2 de int = 1; establece en 1 Si desea que las medidas en cm, 0 si pulgadas.
Servo myservo;  crear objeto servo para controlar un servo (eje)
Servo myservo2; crear objeto servo para controlar un servo (pistola)
se puede crear un máximo de ocho objetos de servo
const int MeasureOutput = 6; Pin de ping)))
int rango = 80; rango
int pos = 0;    variable para almacenar la posición del servo
barrido de int = 1;
void setup()
{
Serial.Begin(9600);
myservo.Attach(9);  se fija el servo en el pin 9 al objeto servo
myservo2.Attach(10);  se fija el servo en el pin 10 al objeto servo
}

void loop()
{
Si (barrido == 1)
{
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado

Map(POS);
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(15);                       espera 15ms para el servo a la posición
}
para (pos = 180; pos > 1; pos-= 1) / / va de 180 grados a 0 grados
{
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Map();
Delay(15);                       espera 15ms para el servo a la posición
}
barrido = 2;

}
Si (barrido == 2) {}
para (pos = 0; pos < 180; pos += 1) / / va desde 0 grados a 180 grados
{/ / en pasos de 1 grado

Measure(POS);
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(15);                       espera 15ms para el servo a la posición
}
para (pos = 180; pos > = 1; pos-= 1) / / va de 180 grados a 0 grados
{

Measure(POS);
myservo.Write(POS);              Dile el servo a la posición en la variable 'pos'
Delay(15);                       espera 15ms para el servo a la posición
}

}
}

medida nula (int número)
{
larga duración, pulgadas, cm;
pinMode (MeasureOutput, salida);
digitalWrite (MeasureOutput, bajo);
delayMicroseconds(2);
digitalWrite (MeasureOutput, alto);
delayMicroseconds(5);
digitalWrite (MeasureOutput, bajo);
pinMode (MeasureOutput, entrada);
duración = pulseIn (MeasureOutput, alto);
cm = microsecondsToCentimeters(duration);
pulgadas = microsecondsToInches(duration);
convert_to_1D_number(Number);
Si (cm2 == 1)
{
Si (cm < map_table [tablex] [tabley] - 10 & & gama < cm) {}
barrer = 3;
Attack(cm);
}
Si (cm > map_table[tablex][tabley]) {}
map_table [tablex] [tabley] = cm;
}
}
Else {}

}

}

anular el ataque (int org)
{
myservo.Attach(9);
int pos2;
para (pos2 = pos; pos < 180; pos += 1)
{
Serial.println("Attack!");
pos ++;

Delay(15);
destino (punto de venta, org);
myservo.Write(POS);
myservo2.Write(100);
}
para (pos2 = pos, pos > 1; pos = 1)
{
Serial.println("Attack!");
pos ++;

Delay(15);
destino (punto de venta, org);
myservo.Write(POS);
myservo2.Write(100);
}
barrido = 2;
}

Anular izquierdo (int org)
{
Serial.println("attackL!");
pos--;

Delay(15);
myservo.Attach(9);

destino (punto de venta, org);
myservo.Write(POS);
}
anular derecho (int org)
{
Serial.println("attackR!");
pos ++;

Delay(15);
myservo.Attach(9);
destino (punto de venta, org);
myservo.Write(POS);
myservo2.Write(100);

}
void blanco (int cantidad, int org)
{
larga duración, pulgadas, cm;
pinMode (MeasureOutput, salida);
digitalWrite (MeasureOutput, bajo);
delayMicroseconds(2);
digitalWrite (MeasureOutput, alto);
delayMicroseconds(5);
digitalWrite (MeasureOutput, bajo);
pinMode (MeasureOutput, entrada);
duración = pulseIn (MeasureOutput, alto);
cm = microsecondsToCentimeters(duration);
pulgadas = microsecondsToInches(duration);
convert_to_1D_number(Number);
Si (cm2 == 1)
{
Si (map_table [tablex] [tabley] < rango) {}
Si (cm < map_table[tablex][tabley]/2) {}
Right(org);
}
Si (cm < map_table[tablex][tabley]) {}
Left(org);
}

}
Else {}
Si (cm < map_table [tablex] -10 [tabley] & & gama < cm) {}
Right(org);
}
Si (cm < map_table [tablex] -10 [tabley] & & gama > cm) {}
Left(org);
}
}
Si (cm > map_table[tablex][tabley]) {}
map_table [tablex] [tabley] = cm;
}
}
Else {}

}

}

mapa vacío (int número)
{
larga duración, pulgadas, cm;
pinMode (MeasureOutput, salida);
digitalWrite (MeasureOutput, bajo);
delayMicroseconds(2);
digitalWrite (MeasureOutput, alto);
delayMicroseconds(5);
digitalWrite (MeasureOutput, bajo);
pinMode (MeasureOutput, entrada);
duración = pulseIn (MeasureOutput, alto);
pulgadas = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
convert_to_1D_number(Number);
Si (cm2 == 1)
{
map_table [tablex] [tabley] = cm;
}
Else {}
map_table [tablex] [tabley] = pulgadas;
}
Serial.println(map_table[tablex][Tabley]);
Serial.Print (",");
Serial.Print(Number);
}

void convert_to_1D_number(int number)
{
tablex = ((number % 14) + 1);
Tabley = número / 14;
}

microsecondsToInches(long microseconds) largo
{
Según ficha técnica de paralaje para el PING))), hay
73,746 microsegundos por pulgada (es decir, el sonido viaja a 1130 pies por
en segundo lugar).  Esto da la distancia recorrida por el ping, saliente
y, por lo que dividimos por 2 para obtener la distancia del obstáculo.
Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
volver microsegundos / 74 / 2;
}

microsecondsToCentimeters(long microseconds) largo
{
La velocidad del sonido es 340 m/s o 29 microsegundos por centímetro.
El ping viaja hacia fuera y hacia atrás, para encontrar la distancia de la
objeto que tomamos la mitad de la distancia recorrida.
volver microsegundos / 29 / 2;
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

algoritmo 2
#include < Servo.h >

Servo myservo;  crear objeto servo para controlar un servo
Servo myservo2;                se puede crear un máximo de ocho objetos de servo
dist int = 80;
Dirección int = 1;
Va a cambiar las variables:
int ledState = bajo;             ledState permite configurar el LED
previousMillis largo = 0;        almacenará la última vez actualizó a LED

las variables de seguimiento es mucho porque el tiempo, medido en milisegundos,
rápidamente se convertirá en un número más grande que puede ser almacenado en un int.
largo intervalo de tiempo = 1000;           intervalo en el que a parpadear (milisegundos)
squirt de int = 0;
int pos = 0;    variable para almacenar la posición del servo
const int MeasureOutput = 6;
int currentMillis = 0;
void setup()
{
Serial.Begin(9600);
myservo.Attach(9);  se fija el servo en el pin 9 al objeto servo
myservo2.Attach(10);
myservo2.Write(147);
}

void loop()
{
Serial.println(squirt);
Serial.println(currentMillis);
Si (currentMillis - previousMillis > intervalo) {}
guardar la última vez que titilaba el LED

previousMillis = currentMillis;
Si (ledState == baja & & squirt == 1) {}
ledState = alto;
myservo2.Attach(10);
myservo2.Write(155);
Delay(120);
squirt = 0;
}
Si (ledState == alto & & squirt == 0) {}
ledState = bajo;
myservo2.Detach(); }

}
digitalWrite (13, ledState);
Delay(1);
Scan();
Delay(14);
currentMillis = currentMillis + 15;
digitalWrite (10, bajo);
}

void scan()
{
larga duración, pulgadas, cm;
pinMode (MeasureOutput, salida);
digitalWrite (MeasureOutput, bajo);
delayMicroseconds(2);
digitalWrite (MeasureOutput, alto);
delayMicroseconds(5);
digitalWrite (MeasureOutput, bajo);
pinMode (MeasureOutput, entrada);
duración = pulseIn (MeasureOutput, alto);
cm = microsecondsToCentimeters(duration);
pulgadas = microsecondsToInches(duration);
Si (dist > = cm) {}

Left();

}
Si (dist < cm) {}

Right();

}
Si (dist > cm) {}
myservo2.Attach(10);
squirt = 1;

myservo2.Detach();
}
}

left() vacío {}
Si (Dirección == 1)
{
pos--;
myservo.Write(POS);
Si (pos < 1) {}
Dirección = 0;
}
}
Si (dirección == 0)
{
pos ++;
myservo.Write(POS);
Si {} (pos > 150)
Dirección = 1;
}
}

}
right() vacío {}
Si (Dirección == 1)
{
pos ++;
myservo2.Attach(10);
myservo.Write(POS);
myservo.Write(POS);
Si {} (pos > 150)
Dirección = 0;
}
}
Si (dirección == 0)
{
pos--;
myservo2.Attach(10);
myservo.Write(POS);
myservo2.Write(155);  conjunto servo a mitad de carrera
Delay(15);
myservo2.Detach();
myservo.Write(POS);
Si (pos < 1) {}
Dirección = 1;
}
}
}

microsecondsToInches(long microseconds) largo
{
Según ficha técnica de paralaje para el PING))), hay
73,746 microsegundos por pulgada (es decir, el sonido viaja a 1130 pies por
en segundo lugar).  Esto da la distancia recorrida por el ping, saliente
y, por lo que dividimos por 2 para obtener la distancia del obstáculo.
Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
volver microsegundos / 74 / 2;
}

microsecondsToCentimeters(long microseconds) largo
{
La velocidad del sonido es 340 m/s o 29 microsegundos por centímetro.
El ping viaja hacia fuera y hacia atrás, para encontrar la distancia de la
objeto que tomamos la mitad de la distancia recorrida.
volver microsegundos / 29 / 2;
}

Artículos Relacionados

Torreta centinela autónomo

Torreta centinela autónomo

La torreta centinela autónomo es un sistema autónomo capaz de detectar y neutralizar intrusos indeseados a través de una lluvia de espuma suave dardos. Construido para el entorno de oficina, el AST es una potente pieza de hardware que no necesita int
Hacer una pequeña, arcilla, Torreta centinela de Portal!

Hacer una pequeña, arcilla, Torreta centinela de Portal!

Los molestos poco (no muy poco...) torretas son volver a tener venganza en usted (para golpeándolos sobre...)!Pero, de alguna manera, cuando se viaja a la tierra, su estructura metálica fue cambiado en la arcilla!Así, hoy que puedes hacer tu propia t
Taburete del pie pone turbio. Descanso Comfy-ness de los Found/reciclar cosas

Taburete del pie pone turbio. Descanso Comfy-ness de los Found/reciclar cosas

Aquí un hermoso banquito sólo hechas de materiales libres, compactarse o encontrado fuera de Salta y maneras de dar clase. Tomó sólo dos fines de semana.Construí este para que coincida con el sofá en mi jardín del summerhouse. Fue diseñado con dos pr
Reciclar bolsas de plástico, perchas de alambre y periódico en bribones!

Reciclar bolsas de plástico, perchas de alambre y periódico en bribones!

Se puede hacer un loon, o cualquier otro wee beastie de las cosas que normalmente tiramos hacia fuera! Absolutamente ningún ingrediente nocivo se utiliza!¿Sabía usted que más 90% de bolsas de plástico van a los vertederos cada año? Usted puede hacer
Alicia de McGee americano DIY

Alicia de McGee americano DIY

concurso juvenil hace de aprender:¿Qué hago?Comic-Con, finalmente había llegado a Australia y me encanta que se visten en trajes, así que pensé por qué no hacer un disfraz de algo que me gusta realmente como un juego de video. He creado un traje de A
Mini generador Solar (el Grizzy Cub 90)

Mini generador Solar (el Grizzy Cub 90)

aquí está mi Instructable paso a paso sobre cómo hice mi mini generador solar. Hice este porque va a ser más compacto que cargar en mi más grande uno que pesa alrededor de 27kg (60 libras). Ésta será menos de 3kg así que por supuesto no poder mini ne
Gabinete de plataforma

Gabinete de plataforma

Necesitamos un mueble para sostener una mesa de mezclas y algunos otros objetos cocina. Queríamos dos estantes y un borde en la parte superior así que nada se caiga la parte trasera o los lados.Paso 1: Preparación de madera en primer lugar es una bue
Construir un acuario que se ve bien en cualquier sala de estar

Construir un acuario que se ve bien en cualquier sala de estar

ADVERTENCIA: En primer lugar se advierte que se trata de un largo instructivo! Alrededor de 1 hora de lectura. Tal vez lo es más fácilmente 'digerido' por sólo tener un vistazo a las fotos y luego volver a leer un poco de la historia detrás de ella y
Jardín de la que nadie

Jardín de la que nadie

¡Hola mundo! Este es mi primer experimento real jardín instructable y primero, espero que disfrute de mi jardín y encontrar mis experiencias (y dificultades) útil. Mi objetivo general es haber creado un instructivo que nadie, con ningún conocimiento
Para alojarte Puft Marshmallow Man traje de

Para alojarte Puft Marshmallow Man traje de

este año que quería probar algo un poco diferente entonces mi habitual puré-para arriba los trajes. Me decidí a ir grande o ir a casa y qué mejor manera de hacer algo grande y luego a inflarla. Así que este año voy a convertir un 8'. 5" pie alto 7' a
Otro cultivo un aguacate (12 años)

Otro cultivo un aguacate (12 años)

este es otro cómo cultivar un aguacate desde un pozo. Este INSTRUCTABLE es un poco diferente que muestra este proceso hasta el final. También es por qué tardó unos 12 años para salir juntos.Sólo un poco acerca de mí en el escenario. Finalmente coloca
Lámpara de mesa ficha POP

Lámpara de mesa ficha POP

La persona promedio produce 4,3 libras de basura por día. Se trata de una cantidad tan grande que constantemente está aumentando cada año. Es importante como habitantes de este planeta que reducimos nuestro impacto ambiental mediante el reciclaje y r
Sistema de botella de Soda hidropónico

Sistema de botella de Soda hidropónico

Hidroponía es cultivar plantas sin tierra. Las plantas se crecen con sus raíces en un medio inerte. El medio puede ser perlita, lana de roca, cáscara de coco o rocas. Lo clave es mantener las raíces expuestas a una solución de agua rica en nutrientes
Cubierta de una casa fuera de balde!

Cubierta de una casa fuera de balde!

Así que la casa va a la sede de un partido, no hablar de mí mismo a veces - es golpeado, tiene unos tres pedacitos de muebles y un montón de suciedad y polvo.El presupuesto es: 0.00 - obviamente estamos en una pegajosa pero puede y hará!Paso 1: Lo bá