Protector de perro y escenario de cartero con Arduino (4 / 4 paso)

Paso 4: programación

Perro de guardia

Para el robot perro de guardia, el código ha sido programado como un "si lo" cláusula. En su estado latente, o en otras palabras la parte "else" de la cláusula, el robot es programado para realizar una función de "sway" en el que analiza de lado a lado. La función de balanceo consiste en el Arduino envíos señales los servos para girar a la izquierda, demora un poco, luego gire a la derecha, demora un poco y repetir. Si cualquiera de los sensores infrarrojos detecta algo dentro de cierta gama de la zona, el robot realizará un tipo de alarma. La alarma contiene un "bucle" for así como los códigos para activación de luces y sonidos. La alarma comienza parando los servos y luego inicia el bucle for. El bucle provoca parpadeo de los 4 LED de la placa Arduino según cuántos destellos en la función de bucle, en este caso elegimos 20 flashes. El Arduino luego procede a jugar a un juego adelante tono luego disco un segundo tono, entonces lejos de nuevo a su posición inicial. La base de este programa es que el perro de guardia es vigilar sobre su territorio, si ve algo entonces alerta y "persigue" al intruso lejos.

Código para perro guardián:


#include / / incluye la librería Servo
Servo servoLeft; Declarar servoRight izquierdo y derecho de Servos Servo;

void setup() / / código de inicialización

{pinMode (10, INPUT); / / pines para alimentación de entrada/salida

pinMode (9, salida);

pinMode (3, entrada);

pinMode (2, salida);

pinMode (5, salida);

pinMode (6, salida);

tono (11, 3000, 1000); Reproducir tono durante 1 segundo

Delay(1000);

servoLeft.attach(13); Conectar Servos de izquierda y derecho para pernos

servoRight.attach(12); }

void loop() / / bucle código principal

{int irLeft = irDetect (9, 10, 39000); / / Set a izquierda y derecha infrarrojos sensores para detectar movimiento dentro de cierto rango de zona

int irRight = irDetect (2, 3, 39000);

Si ((irLeft == 0) || (irRight == 0)) Si las izquierda o la derecha sensores infrarrojos detectan algo, realizan la función de alarma

{alarm(20);

}

Else / / en los demás casos, realizan la función de "sway"

{sway(0);}

}

irDetect int (int irLedPin, int irReceiverPin, frecuencia largo)

{tono (irLedPin, frecuencia, 8); / / IRLED 38 kHz durante al menos 1 ms

Delay(1); Espere 1 ms

int ir = digitalRead(irReceiverPin); Receptor de infrarrojos -> ir variable

Delay(1); Tiempo antes de revisión

volver a ir; Retorno 1 no detectar detectar 0}

Anular alarma (int parpadea) / / función de alarma

{servoLeft.writeMicroseconds(1500); / / parada de enviar señales en ambos Servos

servoRight.writeMicroseconds(1500);

para (int i = 1; i < = parpadea; i ++) / creado para la función de "bucle" for, la variable aumenta de 1 a la cantidad de destellos declarado

{digitalWrite (5, HIGH); digitalWrite (6, HIGH); / / enciende el LED en los pines 5 y 6

Delay(50); Retardo de 50 milisegundos

digitalWrite (5, bajo); Apagar el LED en los pines 5 y 6

digitalWrite (6, bajo);

Delay(50); Retardo de 50 milisegundos

} tono (11, 4000, 1000); Reproducir tono durante 1 segundo

Delay(1000);

Forward(2000); Seguir adelante durante 2 segundos

digitalWrite (5, alto);

digitalWrite (6, HIGH); / / enciende el LED en los pines 5 y 6

tono (11, 2000, 1000); Reproducir tono durante 1 segundo

Delay(1000);

digitalWrite (5, bajo);

digitalWrite (6, bajo);

backward(2000); Ir hacia atrás durante 2 segundos

}

anular la influencia (int tiempo) / / función de balanceo

{servoLeft.writeMicroseconds(1700); / / Servos girar a máxima velocidad servoRight.writeMicroseconds(1700) en sentido antihorario;

Delay(1000); ... por 1 segundo

servoLeft.writeMicroseconds(1300); Servos de girar a toda velocidad hacia la derecha servoRight.writeMicroseconds(1300);

Delay(1000); ... por 1 segundo

}

void avanzar (int tiempo) / / función de adelante

{servoLeft.writeMicroseconds(1700); / / izquierda Servo velocidad completa en sentido antihorario servoRight.writeMicroseconds(1300); / / full-speed del Servo derecho hacia la derecha

Delay(Time); Demora para el valor declarado de la hora

}

vacío hacia atrás (int tiempo) / / al revés función

{servoLeft.writeMicroseconds(1300); / / full-speed del Servo de la izquierda hacia la derecha

servoRight.writeMicroseconds(1700); Servo velocidad hacia la izquierda a la derecha

Delay(Time); Demora para el valor declarado de la hora

}

Mailman

Para el robot de Mailman, el código ha sido programado como un "si lo" cláusula así. La función principal es a través de los fototransistores, el hombre de correo robot será la tendencia hacia la fuente de luz. Si el cartero detecta algo a través de sus sensores infrarrojos a cada lado, el cartero dejará un cierto tono de señalización que se da cuenta de que ha atraído la atención del perro de guardia. Entonces, el cartero se copia de seguridad para alejarse del perro ya que se viene hacia el robot. La base de esta parte del código es que el cartero quiere llegar a la fuente de luz; sin embargo, si ve al perro, entonces sabe que la tarea no puede realizarse.

Código para Robot de Mailman:



#include / / include biblioteca servo
Servo servoLeft; Declarar derecho e izquierdo de servos Servo servoRight;

void setup() / bloque de inicialización incorporado {pinMode (10, entrada); / / Set clavijas de potencia de entrada/salida pinMode (9, salida) pinMode (salida 3,) pinMode (2, salida); pinMode (5, entrada); pinMode (salida 12,); tono (11, 3000, 1000); / / juego tono para 1 segundo delay(1000); / retardo para terminar tono servoLeft.attach(13); / / Coloque la señal izquierda al pin 13 servoRight.attach(12); / Coloque señal derecha en pin 12} void loop() / / Main loop auto repite {int irLeft = irDetect (9 10, 39000); Conjunto sensores izquierdos y derecho infrarrojos para detectar movimiento dentro de cierta zona rango int irRight = irDetect (2, 3, 39000); flotador de TIzquierda = float(rcTime(12)); Se quedan luz y flotador flotador tRight = float(rcTime(2)); Obtener la luz correcta y flotador float ndShade; Normalizado el tono diferencial ndShade = tRight / (obligamos + tRight) - 0,5; Calcular y restar 0.5 int speedLeft, speedRight; Declarar variables de velocidad si ((irLeft == 0) || (irRight == 0)) ¿Si las izquierda o la derecha sensores infrarrojos detectan algo, realizan la función de alarma {backward(2000);} else if (ndShade > 0.0) / cortina de derecha? ¿{/ / Desaceleración de la rueda izquierda speedLeft = int (200.0 - (ndShade * 1300.0)); speedLeft = restringir (speedLeft, -200, 200); speedRight = 200; / / completo rueda derecha velocidad} else if (ndShade < 0.0) / cortina izquierda? {/ / Slow down rueda derecha speedRight = int (200.0 + (ndShade * 1300.0)); speedRight = restringir (speedRight, -200, 200); speedLeft = 200; / toda velocidad de la rueda a la izquierda} otra maniobra {} (speedLeft, speedRight, 20); Velocidades de la rueda sistema}

rcTime largo (int pin) / / rcTime mide el decaimiento en el perno {pinMode (pin, salida); / / carga condensador digitalWrite (pin, HIGH); / /... por configuración de pin salida alta delay(5); // .. para 5 ms pinMode (pin, entrada); Conjunto pin para entrada digitalWrite (pin, LOW); // .. con no mucho tiempo de subida = micros(); Marca el while(digitalRead(pin)) del tiempo; Espere a que voltaje < tiempo umbral = micros() - tiempo; Calcular el tiempo de relajación volver a tiempo; Devoluciones del decaimiento tiempo}

irDetect int (int irLedPin, int irReceiverPin, frecuencia largo) {tono (irLedPin, frecuencia, 8); / / IRLED 38 kHz para por lo menos 1 ms delay(1); / / esperar 1 ms int ir = digitalRead(irReceiverPin); / / receptor de infrarrojos -> ir delay(1) variable; / / tiempo antes de ir vuelta revisión; / / 1 volver sin detectar, detectar 0}

maniobra nula de la función de maniobra (int speedLeft, int speedRight, int msTime) {servoLeft.writeMicroseconds(1500 + speedLeft); / / servo sistema izquierda velocidad servoRight.writeMicroseconds (1500 - speedRight); / / Set servo derecho velocidad if(msTime==-1) / / si msTime = -1 {servoLeft.detach(); / parada servo señales servoRight.detach();} delay(msTime); / retardo para msTime}

vacío hacia atrás (int tiempo) / / al revés función {servoLeft.writeMicroseconds(1300); / / izquierda Servo máxima velocidad hacia la derecha servoRight.writeMicroseconds(1700); / / Servo derecho velocidad completa en sentido antihorario delay(time); / retardo de valor declarado tiempo}

void avanzar (int tiempo) {servoLeft.writeMicroseconds (1700); servoRight.writeMicroseconds (1300); delay(time);}

Artículos Relacionados

Construir un XBMC/KODI remoto con Arduino, protector del Sensor IR y VB.NET

Construir un XBMC/KODI remoto con Arduino, protector del Sensor IR y VB.NET

Construir un XBMC/KODI remoto con Arduino y un protector del Sensor IR, que funciona con cualquier mando a distancia.Quería controlar mi PC XBMC/Kodi de control remoto de mi decodificador satélite, ya sea ver películas en XMBC/Kodi o TV vía satélite,
Lucha contra el perro y el gato construido con Makeblock

Lucha contra el perro y el gato construido con Makeblock

Este proyecto es el más lindo del 18 maratón de fabricante.Perro y gato pueden controlarse con. DE LA APLICACIÓN. Puede mover arriba y abajo, gire a la derecha y la izquierda. Si sus fondos son tocados por el otro, se pone hacia abajo durante 3 segun
Cómo utilizar 2.4" TFT LCD protector con Arduino Mega

Cómo utilizar 2.4" TFT LCD protector con Arduino Mega

Hoy, voy a demostrar que queremos utilizar 2.4" shield TFT LCD (hay mcufriend.com escribe sobre este escudo) trabaja con Arduino Mega, porque no es tan fácil de ejecutar unos a otros. Pero con estas instrucciones, puede ejecutar y modificar los códig
Hacer un robot simple de RF inalámbrico con Arduino!

Hacer un robot simple de RF inalámbrico con Arduino!

ACTUALIZACIÓN: HE AÑADIDO CONTROL DE JOYSTICK A ESTE ROBOT. POR FAVOR CONSULTE EL PASO 7 SI DESEA CONTROLAR EL ROBOT POR MEDIO DE JOYSTICK.Hola,Este es mi primer instructivo y en este tutorial voy a mostrarte, cómo construir un simple robot inalámbri
PHloat2 DIY agua ácida prueba escultura y kit con arduino

PHloat2 DIY agua ácida prueba escultura y kit con arduino

pHloatpHloat es un kit de bricolaje para uso junto con un microcontrolador arduino seminuevo / preexistente. Su propósito es poner a prueba los niveles de pH en ríos, lagos y arroyos debido a la afluencia de aire y agua contaminación causada a menudo
Controlar un actuador pequeño con Arduino

Controlar un actuador pequeño con Arduino

Este Tutorial de actuador lineal de Arduino muestra cómo controlar un Actuador pequeño Firgelli usando una placa compatible con Arduino y varios sensores de entrada, incluyendo un Slider y la perilla de rotación por control directo, Joystick para mov
Controlar una cucaracha con Arduino de bajo $30

Controlar una cucaracha con Arduino de bajo $30

Hace unos años VI cucaracha controlada de patio cerebros smartphone, y solo sopló mi mente! He intentado a mi mamá para que me deje comprarlo, pero la mención de las cucarachas convenció de lo contrario. :) Comencé a realizar proyectos con Arduino un
Uber domótica con Arduino y Pi

Uber domótica con Arduino y Pi

[EDITAR] He creado un foro para colaborar en el código de puerta de enlace.http://homeautomation.proboards.com/Board/2/openha...Hace unos años me convertí en propietario de un perro por primera vez. Me gustaba salir de Cody en la perrera solo todo el
BRICOLAJE teléfono Bluetooth controlado BB-8 droide con Arduino UNO

BRICOLAJE teléfono Bluetooth controlado BB-8 droide con Arduino UNO

Soy un gran fan de Star Wars y cuando vi Star Wars: la fuerza despierta pensé que necesito un droide de BB-8. Era impresionante cómo esta esfera poco movido en la película. Así que he decidido que voy a hacer este droide que se basa en el Arduino UNO
Smart termómetro Personal con Arduino

Smart termómetro Personal con Arduino

Este instructable es preparado como parte de nuestra tarea para TfCD (tecnología para el diseño de concepto) el curso en TU Delft. Se prepara el siguiente instructivo:bo Koperdraat: 4209567Karthik Mahadevan: 4501578En este instructable aprenderá a co
Cubo del LED con Arduino y PCB personalizado

Cubo del LED con Arduino y PCB personalizado

este instructivo detalla el diseño y construcción de proceso para un 5 x 5 x 5 cubo del LED, controladas con un Arduino, que reside en un tablero de circuito impreso personalizado.Videos, fotos e información adicional pueden encontrarse en mi sitio w
Construir tu Robot de Streaming de Video en Internet controlado con Arduino y frambuesa Pi

Construir tu Robot de Streaming de Video en Internet controlado con Arduino y frambuesa Pi

< el instructivo y el código están listos. ¡ Disfrute! Dejo un comentario Comentarios! >Yo soy (aka LiquidCrystalDisplay / Italia), un estudiante de 14 años de aprendizaje de Israel en el Max Shein secundaria para matemáticas y ciencia avanzada. Est
Cómo hacer un mando a distancia controlado por una mano robótica con Arduino

Cómo hacer un mando a distancia controlado por una mano robótica con Arduino

Este es mi proyecto escolar para 5 º año de secundaria (yo soy italiana, tenemos 5 años de secundaria).Consiste en una mano artificial controlada por un guante con sensores de flexión. La mano artificial reproduce los movimientos de la mano con el gu
Control de un solenoide con Arduino

Control de un solenoide con Arduino

Este Tutorial de Arduino solenoide muestra cómo controlar un solenoide con pulsadores y un relé, el controlador compatible con Arduino. Los solenoides son actuadores accionados electromagnéticamente. Cuando se aplica voltaje a la bobina de solenoide