(con Video) Básicos Arduino Robot buscador de luz! (4 / 8 paso)

Paso 4: Incorporar sensores de la luz Part 2

Después agitando las manos delante de los sensores de luz y ves cambiar de valor, te darás cuenta cuando el sensor de luz detecta menos luz el Sensor de valor será subida, y cuando detecta luz, el Sensor de valor caerá. Esto es porque el Sensor disminuye resistencia cuando detecta una luz brillante. Cuando hay menos resistencia a través de dos conductores de la LDR, la clavija de entrada analógica comenzará a leer una señal de tierra, o algo cerca de ella. Cuando el el LDR recibe menos luz, aumentará la resistencia a tierra y más electricidad fluirá a la analógica del pin de la resistencia de pullup, que está conectado a + 5v.

Por preferencia personal, me gustaria tener el analogRead() función retorno 0(min) si el sensor de luz es oscuro y 1023(max) si detecta luz. Podemos solucionar este problema usando el software. No existen cambios en el circuito.

En esta sección de código:

SensorLeft = analogRead(LeftSensor);
Delay(1);

Podemos agregar:

SensorLeft = 1023 - analogRead(LeftSensor);
Delay(1);

Esto restará lo que valor la analogRead() función devuelve por 1023 (que es el valor máximo que puede devolver).
Esta manera, será invertir lo que valoran los rendimientos analogRead().
Por ejemplo, si el valor de analogRead() es x

x = 0
Valor del sensor = 1023 - x
Valor del sensor = 1023 0
Valor del sensor = 1023

x = 1023
Valor del sensor = 1023 - x
Valor del sensor = 1023-1023
Valor del sensor = 0

Este método puede utilizarse para invertir en cualquier valor, como usted sabe el valor máximo que volverá.
Por ejemplo, si un sensor devuelve un máximo de 255:
Val = 255 - valor del sensor

Añadir este código a la placa Arduino y probarlo.

Copiar el código desde aquí:

/****************************************************************************************************************
* Programa para leer dos LDRs
* creado por: Anuj
* (c) copyright
*
*
* Configuración físico:
* Dos LDRs conectados a tierra y el pin análogo 1(Right) y 2(left) pin analógico
*
*
******************************************************************************************************************/
Usando Arduino Duemilinove

Definiciones del PIN - une una variable a un pin.
const int RightMotor = 2; Este pin se utiliza para activar o desactivar el motor adecuado. Conectado a la base de un transistor NPN.
const int LeftMotor = 3; Este pin se utiliza para activar o desactivar el motor izquierdo. Conectado a la base de un transistor NPN.
const int RightSensor = 1; Este pin se utiliza para leer el valor del Sensor de la derecha.
const int LeftSensor = 2; Este pin se utiliza para leer el valor del Sensor de la izquierda.

Definiciones de variables

int SensorLeft; Esto almacena el valor del pin Sensor izquierda para utilizar más tarde en el bosquejo
int SensorRight; Esto almacena el valor del pin Sensor derecho para utilizar más tarde en el bosquejo

el método setup() se ejecuta una vez cuando se ejecuta el programa. Cuando el
Arduino se restablece, el setup() se ejecutará una vez más.

void setup() {}

pinMode (LeftSensor, entrada); Define este pin como entrada. El Arduino leerá los valores de este pin.
pinMode (RightSensor, entrada); Define este pin como entrada. El Arduino leerá los valores de este pin.
digitalWrite (A1, alto); Permite una resistencia pullup interna
digitalWrite (A2, alto); Permite una resistencia pullup interna
Serial.Begin(9600); Permite una conexión en serie con el Arduino al USB o UART (pines 0 y 1). Observe que es la velocidad en baudios de 9600
Serial.println ("\nReading sensores de luz."); Colocado en el extremo del void Setup() modo que funciona una vez, justo antes del void Loop()
}

el método loop() se ejecuta una y otra vez,
como el Arduino tiene poder

void loop() {}
SensorLeft = analogRead(LeftSensor); Esto lee el valor del sensor, luego guarda el entero correspondiente.
Delay(1); el retraso permite que el convertidor analógico a Digital IC a recuperarse para la siguiente lectura.
SensorRight = analogRead(RightSensor); Esto lee el valor del sensor, luego guarda el entero correspondiente.
Delay(1); el retraso permite que el convertidor analógico a Digital IC a recuperarse para la siguiente lectura.

Esta sección del bosquejo se utiliza para imprimir los valores de la
sensores a través de la serie a la computadora. Útil para determinar
Si los sensores están trabajando y si el código también funciona correctamente.
Esto se conoce como depuración.

Serial.Print ("Sensor izquierdo ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorLeft); Imprime el valor del Sensor de la izquierda.
Serial.Print("\t"); Imprime una pestaña (espacio).
Serial.Print ("Sensor de la derecha ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorRight); Imprime el valor del Sensor de la derecha.
Serial.Print("\n"); Imprime una nueva línea después de todos los datos necesarios se visualizan.
}

No copie nada más allá de este punto.

Ahora tenemos a los sensores a utilizar con nuestro robot, pero no hemos terminado todavía. Necesitamos una forma de comparar estos valores. Utilizando sólo estos valores, podemos determinar si un sensor está leyendo un valor mayor o menor y el otro sensor, o si son exactamente iguales.

Ahora, debido a otros factores como menores discrepancias en la fabricación de la LDR, jitter, EMI, etc., los valores para el sensor de luz rara vez va a ser exactamente el mismo. Así que por el contrario, podemos utilizar otro entero para determinar si son aproximadamente lo mismo. Podemos lograrlo mediante el uso de cálculo de la diferencia entre los dos sensores de luz. Podemos restar el valor de un sensor por el valor de los otros sensores y luego encontrar el valor absoluto del sensor. Devolverá la diferencia de los dos sensores y podemos usarlo inmediatamente, o guardar en otro entero, en caso de necesitar usar más de una vez. El valor final puede utilizarse para determinar si los sensores son leer dos valores distintos, o si tienen algo similares. Cuanto mayor sea el valor, cuanto mayor sea la diferencia. Utilizando un if instrucción, puedo decir, si los valores de los sensores son en incrementos de 100, hacer esto.

Si (SensorDifference < = 100) {}
Ejecutar esto.
}

Piggybacking nuestro código anterior que todavía debe estar corriendo en la placa de Arduino,
podemos utilizar los dos enteros que contienen el valor de los sensores para calculcate la diferencia y salvar a un entero nuevo.

El nuevo código se ve así. Los cambios están en negrita.

/****************************************************************************************************************
* Programa para leer dos LDRs
* creado por: Anuj
* (c) copyright
*
*
* Configuración físico:
* Dos LDRs conectados a tierra y el pin análogo 1(Right) y 2(left) pin analógico
*
*
******************************************************************************************************************/
Usando Arduino Duemilinove

Definiciones del PIN - une una variable a un pin.
const int RightMotor = 2; Este pin se utiliza para activar o desactivar el motor adecuado. Conectado a la base de un transistor NPN.
const int LeftMotor = 3; Este pin se utiliza para activar o desactivar el motor izquierdo. Conectado a la base de un transistor NPN.
const int RightSensor = 1; Este pin se utiliza para leer el valor del Sensor de la derecha.
const int LeftSensor = 2; Este pin se utiliza para leer el valor del Sensor de la izquierda.

Definiciones de variables

int SensorLeft; Esto almacena el valor del pin Sensor izquierda para utilizar más tarde en el bosquejo
int SensorRight; Esto almacena el valor del pin Sensor derecho para utilizar más tarde en el bosquejo
int SensorDifference; / / este valor se utiliza para determinar la diferencia entre la izquierda y derecha

el método setup() se ejecuta una vez cuando se ejecuta el programa. Cuando el
Arduino se restablece, el setup() se ejecutará una vez más.

void setup() {}

pinMode (LeftSensor, entrada); Define este pin como entrada. El Arduino leerá los valores de este pin.
pinMode (RightSensor, entrada); Define este pin como entrada. El Arduino leerá los valores de este pin.
digitalWrite (A1, alto); Permite una resistencia pullup interna
digitalWrite (A2, alto); Permite una resistencia pullup interna
Serial.Begin(9600); Permite una conexión en serie con el Arduino al USB o UART (pines 0 y 1). Observe que es la velocidad en baudios de 9600
Serial.println ("\nReading sensores de luz."); Colocado en el extremo del void Setup() modo que funciona una vez, justo antes del void Loop()
}

el método loop() se ejecuta una y otra vez,
como el Arduino tiene poder

void loop() {}
SensorLeft = analogRead(LeftSensor); Esto lee el valor del sensor, luego guarda el entero correspondiente.
Delay(1); el retraso permite que el convertidor analógico a Digital IC a recuperarse para la siguiente lectura.
SensorRight = analogRead(RightSensor); Esto lee el valor del sensor, luego guarda el entero correspondiente.
Delay(1); el retraso permite que el convertidor analógico a Digital IC a recuperarse para la siguiente lectura.

SensorDifference = abs(SensorRight = SensorLeft);

Esta sección del bosquejo se utiliza para imprimir los valores de la
sensores a través de la serie a la computadora. Útil para determinar
Si los sensores están trabajando y si el código también funciona correctamente.
Esto se conoce como depuración.

Serial.Print ("Sensor izquierdo ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorLeft); Imprime el valor del Sensor de la izquierda.
Serial.Print("\t"); Imprime una pestaña (espacio).
Serial.Print ("Sensor de la derecha ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorRight); Imprime el valor del Sensor de la derecha.
Serial.print("\t"); / / imprime una pestaña (espacio).
Serial.print ("diferencia de Sensor ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorDifference);
Serial.Print("\n"); Imprime una nueva línea después de todos los datos necesarios se visualizan.
}

Artículos Relacionados

Basados en Arduino robot seguidor de luz

Basados en Arduino robot seguidor de luz

una demostración de la presentación que publiqué
Mini buscador de luz

Mini buscador de luz

Hacer su propio robot buscador de luz mini.Paso 1: Qué necesitas -85 Attiny-Titular de la IC DIP8-Programador para el Attiny (utilizar un arduino uno como programador)-2 x mini motor (Especificaciones: 12x6mm, voltaje 1, 5V, 20mA actual)Cuando usted
Johnny5 Arduino Robot DfRobotshop rover con interfaz de control remoto html

Johnny5 Arduino Robot DfRobotshop rover con interfaz de control remoto html

En este post explico paso a paso cómo construir un Arduino basado en Robot y programar con Javascript. Explico que opciones de diseño que hice, que Marcos y tecnologías utilizan y como programar y configurar el robot.Puede encontrar más información s
DIY Bluetooth controlado Robot (Rover) con Video Stream en vivo!!

DIY Bluetooth controlado Robot (Rover) con Video Stream en vivo!!

ADVERTENCIA: ESTE INSTRUCTIVO CONTIENE UN SUPER IMPRESIONANTE CONTENIDO ASÍ TENGA EN CUENTA.¿Has alguna vez has querido hacer robot súper impresionante o rover controlado inalámbricamente con tu dispositivo móvil?¿Alguna vez has querido hacer algo mi
Arduino Robot con menor costo

Arduino Robot con menor costo

ME VEN EN EL CIUDAD DE NUEVA YORK MAKER FAIRE!Todo comenzó con esto:Arduino Robot Challenge: ¿Económicamente puede crear un robot utilizando un Arduino para 5 º grado?Espero que este instructable tiene una cierta elegancia en su sencillez y le conven
Proyectos de Carlitos: Inalámbrico controlado por discurso Arduino Robot

Proyectos de Carlitos: Inalámbrico controlado por discurso Arduino Robot

Todos soñamos con tener aparatos y máquinas que pueden obedecer a nuestros comandos hablados. Bien, vamos a tomar el primer paso para que esto suceda y construir un intervención controlada basada en Arduino robot móvil.Puedes estar pensando que hacer
Ben - un Arduino Robot protoboard siguientes de luz

Ben - un Arduino Robot protoboard siguientes de luz

Ben la luz siguiente placa Arduino Robot es el segundo robot que he hecho para ayudar a enseñar robótica a los estudiantes de secundaria en una clase enseñar voluntariamente. El primer robot también tiene su propio Instructable que puede encontrar aq
4WD todo terreno Arduino Robot para todos

4WD todo terreno Arduino Robot para todos

Siempre me ha gustado robots que pueden moverse en terrenos ásperos. Esta vez he decidido que voy a utilizar chasis confeccionado modificarlo un poco y añadiendo unos pocos componentes adicionales. Mediante el uso de un chasis listo rápidamente podrí
Cómo hacer un obstáculo evitando Arduino Robot

Cómo hacer un obstáculo evitando Arduino Robot

Hola a todos! En este Instructable voy se que muestra cómo hacer un robot similar a la "móvil Arduino plataforma Experimental" (MAEP) que hice. Está equipado con dos motores que pueden dirigir el robot y la habilidad de ver los obstáculos delant
Arduino Robot brazo camarero

Arduino Robot brazo camarero

¿Alguna vez ha deseado que usted tenido un robot que podría la muñeca las fotos? El futuro de la fiesta está aquí con el cantinero de brazo Robot! Servir bebidas en estilo e impresionar a tus invitados con sólo pulsar un botón! Este proyecto utiliza
Arduino Robot V2 (rápido) también controlado por voz

Arduino Robot V2 (rápido) también controlado por voz

Esta es mi segunda versión de mi robot arduino después "Construir tu primer robot". Mi segunda versión es un poco complicada en comparación con mi primer uno pero ofrece mejor. En este instructable voy para mostrarle cómo construir un robot rápi
Línea siguiente Arduino Robot

Línea siguiente Arduino Robot

Este robot utiliza un algoritmo de control PID para seguir autónomamente un camino negro sobre un fondo blanco. Utiliza una matriz de ocho sensores de reflectancia IR para determinar la posición del robot en la línea, y el microcontrolador Arduino Na
CBDBv2 Evolution - Junta de desarrollo de ESP8266 cumple con la IDE de ARDUINO!

CBDBv2 Evolution - Junta de desarrollo de ESP8266 cumple con la IDE de ARDUINO!

La revolución de Internet de las cosas está aquí!IOT describe un mundo en el que los objetos cotidianos son conectados a una red para que los datos pueden ser compartidos. Esto es sólo el comienzo. En un futuro cercano podríamos tenemos sensores que
Rana: Inspirado en un arduino robot biológico

Rana: Inspirado en un arduino robot biológico

Rana (rana en Italiano) es un robot inspirado biológico. Es el resultado de meses de investigación y desarrollo. Uno de los principios aplicados proviene de otra insuperable hice llamada "arduino robot bípedo". Este robot utiliza los métodos com