Shield Arduino personalizado y sensores (10 / 10 paso)

Paso 10: Código de Arduino para obstáculos evitando Robot

El código siguiente utiliza los sensores de este instructable para controlar un obstáculo autónomo evitando robot. Los interruptores de la hoja se utilizan para detectar contacto con objetos a la izquierda y la derecha. Si se activa un interruptor de contacto, el robot se detiene, retrocede y entonces da vuelta lejos del objeto antes de continuar. El sensor de distancia infrarrojo se utiliza para determinar la distancia a objetos delante del robot. Si un objeto está más cercano que una tolerancia de ajuste, las paradas de robot y un servo gira el sensor de IR a la derecha y hacia la izquierda para las mediciones. El robot se convierte entonces en la dirección de la más clara antes de continuar. Un botón se utiliza para iniciar el robot. Aunque técnicamente no los sensores, el láser, el zumbador y el LED se utiliza para dar retroalimentación visual y sonora de los sensores. Cuando el robot esté en movimiento, el LED verde está encendido. Cuando el robot se detiene, los sonidos del zumbador y el LED rojo se enciende. El láser se une al sensor IR dando una indicación visual de dónde apunta el sensor de distancia infrarrojo.

He pegado el código de Arduino a continuación (con jodido formato), pero por alguna razón no he podido subir un archivo que contiene el código. Esto es extraño ya que fui capaz de hacerlo por mi anterior instructable. Sin embargo esta vez, cada vez que intento subir el archivo .ino me sale el mensaje "ERROR 400: no se puede cargar secuencias de comandos:"

/ * 4/29/14
Este código utiliza varios sensores para controlar el comportamiento

de un obstáculo autónomo evitando robot. Como el robot

se mueve hacia adelante, que un sensor de distancia infrarrojo mide la distancia

a los obstáculos del robot. Si la distancia medida

es inferior a una tolerancia del sistema, las paradas de robot y un pans de servo

el sensor IR derecha y la izquierda para determinar la ruta más clara.

El robot se convierte en la dirección de la ruta más clara

y luego procede.

Hoja derecha e izquierda interruptores detectan contacto con objetos

a la derecha o izquierda del robot. Cuando se hace contacto, la

robot realiza copias de seguridad y después da vuelta lejos del objeto detectado

antes de continuar.

Un láser montado sobre el sensor del IR indica la dirección

en la que el robot está "buscando". Cuando el robot se detiene un

LED rojo se enciende y suena un zumbador piezoeléctrico. Cuando el robot está

avanzando, se enciende un LED verde. Cuando se acciona el robot

ningún movimiento ocurre hasta que un botón en el robot

presiona.

*/

#include < Servo.h >

Servo leftWheelServo;

Servo rightWheelServo;

Servo panServo;

Declarar pines digitales

int stopLightPin = 2;

int leftContactPin = 3;

int rightContactPin = 4;

int servoPinLeft = 5;

int servoPinRight = 6;

laserPin int = 7;

int goLightPin = 8;

int servoPinPan = 9;

int buzzerPin = 12;

int buttonPin = 13;

Declarar pines analógicos

int Irpín = 4;

Definir las variables

int distanceReading;

int wallDistance;

int wallDistanceTolerance = 30;

int distanceReadingLeft;

int distanceReadingRight;

int wallDistanceLeft;

int wallDistanceRight;

int panDelay = 1000; Retardo para permitir el sensor IR tomar una lectura

int turnTime = 250; Duración de vuelta basado en ensayo y error

buzzTime int = 200;

buttonValue int = 0;

int oldButtonValue = 0;

int leftContactValue = 0;

int rightContactValue = 0;

void setup()

{

pinMode (buzzerPin, salida);

pinMode (stopLightPin, salida);

pinMode (goLightPin, salida);

pinMode (buttonPin, entrada);

pinMode (laserPin, salida);

digitalWrite (buzzerPin, bajo);

digitalWrite (stopLightPin, bajo);

digitalWrite (goLightPin, bajo);

leftWheelServo.attach(servoPinLeft);

rightWheelServo.attach(servoPinRight);

panServo.attach(servoPinPan);

Sonido zumbador para indicar que el robot tiene poder

digitalWrite (stopLightPin, HIGH);

digitalWrite (buzzerPin, HIGH);

Delay(buzzTime);

digitalWrite (buzzerPin, bajo);

Espere hasta que el botón se presiona antes de mover

mientras que (buttonValue == LOW)

{

leftWheelServo.write(90);

rightWheelServo.write(90);

buttonValue = digitalRead(buttonPin);

}

Sonido zumbador para indicar Inicio botón ha sido presionado

digitalWrite (buzzerPin, HIGH);

Delay(buzzTime);

digitalWrite (buzzerPin, bajo);

Descomentar la alimentación serial para probar si es necesario

Serial.Begin(9600);

}

void loop()

{

Encienda el láser

digitalWrite (laserPin, HIGH);

Sensor de distancia de punto recto

panServo.write(90);

Avanzar

leftWheelServo.write(0);

rightWheelServo.write(120);

digitalWrite (goLightPin, HIGH);

digitalWrite (stopLightPin, bajo);

Prueba para abordajes de pared

leftContactValue = digitalRead(leftContactPin);

Si (leftContactValue == HIGH)

{

Parada

leftWheelServo.write(90);

rightWheelServo.write(90);

digitalWrite (goLightPin, bajo);

digitalWrite (stopLightPin, HIGH);

digitalWrite (buzzerPin, HIGH);

Delay(buzzTime);

digitalWrite (buzzerPin, bajo);

Copia de seguridad

leftWheelServo.write(120);

rightWheelServo.write(0);

digitalWrite (goLightPin, HIGH);

digitalWrite (stopLightPin, bajo);

Delay(500);

Gire a la derecha

leftWheelServo.write(180);

rightWheelServo.write(180);

Delay(turnTime);

leftWheelServo.write(90);

rightWheelServo.write(90);

Restablecimiento de variables de contacto izquierdo

leftContactValue = 0;

}

rightContactValue = digitalRead(rightContactPin);

Si (rightContactValue == HIGH)

{

Parada

leftWheelServo.write(90);

rightWheelServo.write(90);

digitalWrite (goLightPin, bajo);

digitalWrite (stopLightPin, HIGH);

digitalWrite (buzzerPin, HIGH);

Delay(buzzTime);

digitalWrite (buzzerPin, bajo);

Copia de seguridad

leftWheelServo.write(120);

rightWheelServo.write(0);

digitalWrite (goLightPin, HIGH);

digitalWrite (stopLightPin, bajo);

Delay(500);

Gire a la izquierda

leftWheelServo.write(0);

rightWheelServo.write(0);

Delay(turnTime);

leftWheelServo.write(90);

rightWheelServo.write(90);

RESET sensor derecho variable

rightContactValue = 0;

}

Tomar lectura del medidor de distancia

distanceReading = analogRead(IRpin);

wallDistance = distanceReading/40-10;

La fórmula de la distancia de la pared anterior se determina por ensayo

y error y conversión lineal

Para comprobar si una pared está cerca

Si (wallDistance < wallDistanceTolerance)

{

Parada

leftWheelServo.write(90);

rightWheelServo.write(90);

digitalWrite (goLightPin, bajo);

digitalWrite (stopLightPin, HIGH);

digitalWrite (buzzerPin, HIGH);

Delay(buzzTime);

digitalWrite (buzzerPin, bajo);

Bandeja de servo de la distancia a la izquierda y derecha para ver la dirección

ofrece un camino más claro

panServo.write(170);

Delay(panDelay);

distanceReadingLeft = analogRead(IRpin);

Delay(panDelay);

wallDistanceLeft = distanceReadingLeft/40-10;

panServo.write(20);

Delay(panDelay);

distanceReadingRight = analogRead(IRpin);

Delay(panDelay);

wallDistanceRight = distanceReadingRight/40-10;

Quite el comentario de serie impresión declaraciones para fines de depuración

Serial.Print(wallDistance);

Serial.println ("cm");

Serial.Print(wallDistanceLeft);

Serial.println ("cm");

Serial.Print(wallDistanceRight);

Serial.println ("cm");

Serial.println("");

Serial.println(distanceReading);

Serial.println(distanceReadingLeft);

Serial.println(distanceReadingRight);

Serial.println("");

Para comprobar que la dirección ofrece un camino claro

y el robot en esa dirección

Si (wallDistanceLeft > wallDistanceRight)

{

Gire a la izquierda

leftWheelServo.write(180);

rightWheelServo.write(180);

Delay(turnTime);

leftWheelServo.write(90);

rightWheelServo.write(90);

}

otra cosa

{

Gire a la derecha

leftWheelServo.write(0);

rightWheelServo.write(0);

Delay(turnTime);

leftWheelServo.write(90);

rightWheelServo.write(90);

}

}

Delay(200);

}

Artículos Relacionados

Alarma de Twitter Arduino con un sensor PIR. aka AlarmIno

Alarma de Twitter Arduino con un sensor PIR. aka AlarmIno

Hola hoy mostrará usted como hacer una Twitter alarma de Arduino con un sensor PIR.Le será necesario:Un pin de parallax PIR sensor 3Cable EthernetEscudo de Ethernet (que yo uso éste)ProtoboardArduino UNO6 cables de puentePaso 1: Conexión lo para arri
Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Simplificado de medición de corriente CA Arduino usando el Sensor de efecto Hall ACS712

Este es un simplificado enfoque mi Instructable previo con respecto a la corriente con el sensor de corriente ACS712 medición AC... enlaceSimplificaciones son:Eliminando el especial circuito de acondicionamiento de señal - en lugar de ello vamos a ut
Termómetro de Arduino usando el Sensor de temperatura LM35

Termómetro de Arduino usando el Sensor de temperatura LM35

Termómetro de Arduino usando el Sensor de temperatura LM35 es una muy simple de implementar Arduino basado en proyecto. Su inició un proyecto perfecto si usted es un principiante y acaba prácticamente pruebas proyectos de Arduino.En este proyecto nos
Pantalla táctil ITDB02 2.8″ Shield Arduino

Pantalla táctil ITDB02 2.8″ Shield Arduino

Compatibles con pantalla táctil ITDB02 2.8″ Shield Arduino está diseñada para todas las tarjetas con Arduino. Funciona con 3.3V, tiene una etapa de conversión de niveles de 5V para utilizarla con tarjetas como Arduino UNO.Es una pantalla táctil con f
WeMo Switch de control con shield Arduino Ethernet

WeMo Switch de control con shield Arduino Ethernet

Hay muchas aplicaciones que permiten controlar dispositivos Belkin WeMo , pero hay no hay un panel de interruptor de hardware como el Matiz aprovechar para tono de Philips.Tan construir uno con un Arduino!Paso 1: materialesPara este proyecto necesita
Control Denon AVR con shield Arduino Ethernet

Control Denon AVR con shield Arduino Ethernet

En este proyecto me he construido un panel de control simple para mi Denon AVR (AVR-X4100W).La mayoría de la Denon A receptores son red, para que los puedas controlar dentro de una interfase web o una aplicación. No hay ninguna documentación oficial
Shield Arduino Audio

Shield Arduino Audio

En este vídeo mostramos los pasos para el montaje de su caso de audio shield Arduino. Para adquirir uno de estos casos, solo volver a mi proyecto de kickstarter: Arduino Audio escudoPaso 1: Cómo montar tu caso de Shield Arduino Audio DSPEl primer pas
Controlador Arduino personalizado MIDI

Controlador Arduino personalizado MIDI

Hola y Bienvenidos a este instructable sobre cómo construir un controlador USB MIDI personalizado, barato y fácil, basado en Arduino. La mejor noticia: sólo tiene que conectar sin problemas con interfaces USB a MIDI, o herramientas de software como M
Shield Arduino sous-vide

Shield Arduino sous-vide

* Nota * este proyecto es realizado por un grupo de estudiantes de la Politécnica de SingapurLas herramientas y componentes fueron proporcionados por nuestro supervisor FYP Teo Shin Jen.Sous-vide (/ suË Ë viË d /; En francés "al vacío") [1] es u
Carro RC a Arduino Robot con sensores múltiples

Carro RC a Arduino Robot con sensores múltiples

este instructable abarca la conversión de un carro RC en un robot controlado por Arduino. Mi intención al iniciar este proyecto fue A) aprender más sobre Arduino y programación B) construir una plataforma confiable de bajo costo para ampliar C) gasta
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,
Arduino-Datalogger con Sensor de temperatura y fotorresistencia

Arduino-Datalogger con Sensor de temperatura y fotorresistencia

en este proyecto que voy a crear un simple Datalogger con mi Arduino y un escudo de Ethernet.Va a utilizar un fotoresistor y un sensor de temperatura y toda la información se almacenará en una tarjeta micro SD.La idea es que se pueden aplicar a cualq
Mostrar vivo Arduino lecturas del sensor en una LCD de Nokia 5110

Mostrar vivo Arduino lecturas del sensor en una LCD de Nokia 5110

si has trabajado alguna vez con arduino, probablemente has querido para mostrar las lecturas del sensor.Usando al serial monitor está perfectamente bien, pero ser el macarra de arduino que se está convirtiendo rápidamente en, probablemente quiere que
Arduino - HC SR04 Sensor de distancia ultrasónico ultrasónico gama Sensor

Arduino - HC SR04 Sensor de distancia ultrasónico ultrasónico gama Sensor

¡Hola mundo! Hoy he hecho una cosa bastante útil. Un metro de distancia con un sensor de distancia ultrasónico. funciona perfecto y se puede utilizar para muchas cosas, como el robot posicionamiento etc.. No cuenta el teléfono y módulo Bluetooth no l