Laberinto Robot Solver, utilizando Inteligencia Artificial con Arduino (3 / 10 paso)

Paso 3: Instalación y prueba los nuevos sensores

La nueva matriz de ahora 7 sensores, se monta de forma que los originales 5 se utilizan exclusivamente para control PID (y la detección de la "línea completa", explicada más adelante) y la nueva izquierda 2 para izquierda y derecha detección de cruce solamente.

Como un repaso, vamos a recordar cómo funcionan los sensores "digitales" originales 5:

Si un sensor se centra con relación a la línea negra, sólo que el sensor específico producirá un alto. Por otro lado, se calculará el espacio entre sensores para permitir que 2 sensores pueden cubrir todo el ancho de la línea negra al mismo tiempo, también produce una señal de alto en ambos sensores.

Cómo funcionan los 2 nuevos sensores "análogos":

Si uno de los sensores se centra con relación a la línea negra, el resultado será un valor análogo, generalmente produciendo una salida en el bramido de ADC Arduino "100" (Recuerde que el ADC produce una salida de 0 a 1023). Con superficies más ligeras, el valor de salida será mayor (he probado 500 a 600 sobre papel blanco, por ejemplo). Este valor debe ser probado en diferentes situaciones de luz y superficie para definir la constante umbral correcto para utilizar en su caso (ver imagen aquí).

Mirando el código de Arduino, cada uno de los sensores se define con un nombre específico (tener en cuenta que debe asignarse el Sensor original de seguir línea más a la izquierda con una etiqueta "0"):

const int lineFollowSensor0 = 12; Utilizando la entrada Digital

const int lineFollowSensor1 = 18; Utilizando Analog Pin A4 como entrada Digital

const int lineFollowSensor2 = 17; Utilizando Analog Pin A3 como entrada Digital

const int lineFollowSensor3 = 16; Utilizando Analog Pin A2 como entrada Digital

const int lineFollowSensor4 = 19; Utilizando Analog Pin A5 como entrada Digital

const int farRightSensorPin = 0; Pin analógico A0

const int farLeftSensorPin = 1; Pin analógico A1

Para recordar, el posible 5 original sensor de matriz cuando siguiendo una línea de salida son:

  • 1 1 1 1 1
  • 0 0 0 0 0
  • 0 0 0 0 1
  • 0 0 0 1 1
  • 0 0 0 1 0
  • 0 0 1 1 0
  • 0 0 1 0 0
  • 0 1 1 0 0
  • 0 1 0 0 0
  • 1 1 0 0 0
  • 1 0 0 0 0

Con la adición de los 2 nuevos, sus posibles salidas son:

  • Sensor de extrema izquierda: Salida analógica mayor o menor que un umbral
  • Sensor de la derecha: Salida analógica mayor o menor que un umbral

En orden de almacenamiento los valores de cada sensor se crea una variable de matriz para los sensores digitales 5 originales:

int LFSensor [5] = {0, 0, 0, 0, 0};

Y dos variables de número entero para los 2 nuevos sensores analógicos:

int farRightSensor = 0;
int farLeftSensor = 0;

Cada posición del array y variables se actualizarán constantemente con la salida de cada uno de los sensores:

LFSensor [0] = digitalRead(lineFollowSensor0);

LFSensor [1] = digitalRead(lineFollowSensor1);

LFSensor [2] = digitalRead(lineFollowSensor2);

LFSensor [3] = digitalRead(lineFollowSensor3);

LFSensor [4] = digitalRead(lineFollowSensor4);

farRightSensor = analogRead(farRightSensorPin);

farLeftSensor = analogRead(farLeftSensorPin);

Tener 5 sensores, como vimos en el proyecto de seguidor línea Robot, permite la generación de una "variable de error" que ayudará a controlar la posición del robot sobre la línea. También, se utilizará una variable llamada "mode" para la determinación si el robot está siguiendo una línea, sobre una línea continua, una intersección o no en todos.

Esta variable "modo" se utilizarán también con los sensores ahora derecha/izquierda ". Para la representación, vamos a considerar los sensores lejos izquierdos y derecho tiene 3 Estados posibles: H (superior a umbral), L (menor umbral) y X (irrelevante). Para las salidas digitales, será el habitual 0, 1 y también presentará la X:

  • X 1 1 1 1 1 X == > modo = CONT_LINE; error = 0;
  • H 0 X X X X L == > modo = RIGHT_TURN; error = 0; (ver el ejemplo en la imagen de arriba)
  • L X X X X 0 H == > modo = LEFT_TURN; error = 0;
  • X 0 0 0 0 0 X == > modo = NO_LINE; error = 0;
  • H 0 0 0 0 1 H == > modo = FOLLOWING_LINE; error = 4;
  • H 0 0 0 1 1 H == > modo = FOLLOWING_LINE; error = 3;
  • H 0 0 0 1 0 H == > modo = FOLLOWING_LINE; error = 2;
  • H 0 0 1 1 0 H == > modo = FOLLOWING_LINE; error = 1;
  • H 0 0 1 0 0 H == > modo = FOLLOWING_LINE; error = 0;
  • H 0 1 1 0 0 H == > modo = FOLLOWING_LINE; error = -1;
  • H 0 1 0 0 0 H == > modo = FOLLOWING_LINE; error = -2
  • H 1 1 0 0 0 H == > modo = FOLLOWING_LINE; error = -3;
  • H 1 0 0 0 0 H == > modo = FOLLOWING_LINE; error = -4;

Por lo tanto, aplicar la lógica anterior en la función:

void readLFSsensors()

volverá al modo"variables" y "error" que se utilizará en la lógica de programación.

Es importante probar la lógica de los sensores antes de seguir con el proyecto. La función del fuelle está incluida en el código y puede ser utilizada para propósitos de prueba:

void testSensorLogic(void)
{

Serial.Print (farLeftSensor);

Serial.Print ("< == derecha izquierda == >");

Serial.Print (farRightSensor);

Serial.Print ("modo de:");

Serial.Print (modo);

Serial.Print ("error:");

Serial.println (error);

}


Artículos Relacionados

Inteligencia Artificial basados en Arduino Robot que habla

Inteligencia Artificial basados en Arduino Robot que habla

Este proyecto va a hacer nuestro robot hablando con Arduino basada en inteligencia artificial.Que en nuestro proyecto anterior hicimos nuestro robot que se verificaron en comando de voz del teléfono.Se puede ver aquí.Este proyecto que desarrollemos n
Construya su propio ROBOT insecto utilizando ARDUINO y SERVO

Construya su propio ROBOT insecto utilizando ARDUINO y SERVO

Hola, estoy con una instructalble más. Voy a enseñarte cómo construir un robot insecto utilizando Arduino y servomotores. Suena cool, verdad?. ¿Qué parece el uso de este robot? Debido a su tamaño compacto que puede ser utilizados en defensa, pueden t
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
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
Gesture control car(robot) con Arduino y Android(bluetooth)

Gesture control car(robot) con Arduino y Android(bluetooth)

Hola amigos,Aquí es un proyecto interesante por todo lo que mentes creativas que hay. Vamos a construir un auto RC android teléfono controlado.Nada podría ser más fascinante que los coches de controlados remotos. Éste utiliza Bluetooth para la comuni
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
Inalámbrico de Omán Robot direccional controlada fútbol con nRF 24L 01 + y Arduino

Inalámbrico de Omán Robot direccional controlada fútbol con nRF 24L 01 + y Arduino

Hey todo el mundoBienvenidos a mi primer instructable. Un robot WiFi controlado Omaní direccional robot.a inalámbrico controlado puede ser utilizado en muchos ways.i hecho para jugar un fútbol porque hubo un evento de fútbol jugar robots en mi instit
Cómo construir obstáculos evitando Robot para principiantes con Arduino Tutorial

Cómo construir obstáculos evitando Robot para principiantes con Arduino Tutorial

Este Tutorial es para cualquier persona para empezar con arduino. Vamos construir un obstáculo evitando el robot que utiliza un sensor de ultrasonidos HC SR-04 para detectar objetos y 2 servos de continua (360 grados) conectados a una fuente de bater
2 ruedas Self Balancing Robot con Arduino y MPU6050

2 ruedas Self Balancing Robot con Arduino y MPU6050

2 ruedas Self Balancing Robot con Arduino y MPU6050.Usar Arduino como el controlador y sensor de MPU6050 para controlar el equilibrio. Sólo añadir un modulo Serial Bluetooth simple y utilizar una aplicación de controlador Serial de Bluetooth para el
Steampunk ESP8266 Internet con reloj utilizando el IDE de Arduino

Steampunk ESP8266 Internet con reloj utilizando el IDE de Arduino

¿Qué se obtiene cuando un anillo de NeoPixel, una placa Arduino Wifi barata y un láser de corte entrar a un salón de Punk de vapor?Una moda Steampunk Internet diseñado con reloj utilizando el ESP8266 y el IDE de Arduino por supuesto!Aquí es un proyec
Robot de gesto controlado con Arduino

Robot de gesto controlado con Arduino

Este gesto controlado utiliza robot Arduino, acelerómetro ADXL335 y par transmisor/receptor de RF.Dividiremos el robot entero en 3 partes el emisor, el receptor y el robot.Los diferentes gestos que se ha asignado a la dirección de los bot son-Mano pa
Mando a distancia Robot con Arduino

Mando a distancia Robot con Arduino

L293D es un doble motor driver puente H circuito integrado (IC). Controladores de motor actúan como amplificadores de corriente ya que llevan un control de poca intensidad de señal y proporcionan una señal de corriente más alta. Esta señal de corrien
Utilizando un controlador NES para emuladores con Arduino y procesamiento

Utilizando un controlador NES para emuladores con Arduino y procesamiento

He encontrado varias formas de conectar un controlador NES al ordenador para su uso como un emulador de gamepad pero ninguno parece ser simple y compatible con lo que tenía en mano.Ésta sólo funciona con Arduino Leonardo, Micro y debido: https://gist
BASIC TUTORIAL sobre inteligencia ARTIFICIAL MARKUP lenguaje (AIML) a través de Bloc de notas

BASIC TUTORIAL sobre inteligencia ARTIFICIAL MARKUP lenguaje (AIML) a través de Bloc de notas

Inteligencia Artificial Markup lenguaje (AIML) es un lenguaje de programación que es una especificación de lenguaje de marcado Extensible (XML) utilizada por chatbot, verbot, pandorabot, superbot y otro robot parlante.Fue desarrollado por el Dr. Rich