Hacer: es robótica Starter Kit - análisis de LineFollowing.ino parte 2

En el Instructable pasado empezamos analizando las operaciones bit a bit en el bosquejo de lineFollow.ino. Vimos cómo se interpretan las lecturas del sensor para hacer que el robot vaya hacia adelante.

En este tutorial vamos a continuar nuestro análisis al considerar cómo el programa de lineFollow.ino interpreta cuando el negro bajo el sensor izquierdo. Haciendo referencia otra vez a la salida de nuestro readOptical.py Python programa cuando las lecturas del sensor tercero y cuarto son 0 x 00 y 0 x 100.

(consulte el programa de readOptical.py si necesita un recordatorio. Vamos otra vez a empezar en la parte superior del nuevo bucle for:

optValues = [0xff, 0 x 100, 0 x 00, 0 x 100, 0xff, 0 x 100]
para elem en optValues:

sensor _En = 0 x 0

acción1 = 0x3

action2 = 0x3

sensorValue1 = 0xff

sensorValue2 = 0 x 0

0 x 0 y 0xf00

0 x 0 = 0b00000000000000000

xf00 = 0b0000111100000000

Si 0 × 0 y 0xf00 == 0

dentro de if sensor_in & 0xf00 == 0

0 x 0 & 0xff

sensorValue1 = 0b0000000000000000

& 0b0000000011111111

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

0b0000000000000000

sensorValue1 = 0 × 0

El valor de sensor_in es 0 × 00 y realizar una y otra vez y operación con el valor de 0xf0. Como hemos dicho antes estamos comprobando si sensor_in datos están un valor de 8 bits o 16 bits. Por supuesto, 0 x 00 es un valor de 8 bits como se muestra arriba (todos ceros). Así que el & operación devuelve un 0 x 00. Por lo que sensorValue1 es igual a 0 x 00.
Puesto que sensorValue1 es igual a 0 x 00

ejecutamos el if instrucción

Si (sensorValue1 == 0 x 00)
dentro de sensorValue1 == 0 x 00

0X3 & 0xf

eaction1 = 0b0000000000000011

& 0b0000000011111110

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

0b0000000000000010

acción1 = 0 x 2

Ahora aquí es un poco interesante, cuenta que desde el ciclo pasado action1 era 0x3, ahora y & action1 con 0xfe, cuenta la máscara de bits, 0xfe cuenta con todos los ocho bits a 1 con la excepción de la posición del bit 0. Así que cuando nos y y los dos valores obtenemos action1 = 0 x 2. Como hemos dicho, los valores de los sensores tienen significados especiales, en este caso estamos configurando nuestra acción para vuelta a la derecha.
Puesto que sensorValue1 no es igual a 0xff nos saltamos el if de la siguiente declaración. sensorValue2 es igual a 0 x 00 permite así salta dentro de la fi comunicado.

Si (sensorValue2 == 0 x 00)
dentro de sensorValue2 == 0 x 00

0 x 2 | 0 x 02

acción1 = 0b0000000000000010

| 0b0000000000000010

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

0b0000000000000010

acción1 = 0 x 2

Desde action1 ahora es igual a 0 x 2, cuando se o & con 0 x 02 por supuesto obtenemos un valor de 0 x 02.
El último si declaración por supuesto devuelve false para que nos la saltamos. Ahora podemos pasar el el segundo conjunto de if declaraciones:

Si (action1! = action2)

{

Si (action1 == 3)

line_following.go_forward(50);

Si (action1 == 1)

line_following.line_following_turn_left(50);

Si (action1 == 2)

line_following.line_following_turn_right(50)

; Si (action1 == 0)

line_following.go_forward(50);

}

action2 = acción1;

Acción1 es igual a 0 × 02 el comando "girar a la derecha" es dado.
Vamos a saltar hacia atrás el la parte superior de la fi comunicado y aspecto como el siguiente sensor_in valoran si 0 x 100.

sensor _En = 0 x 100

acción1 = 0 x 2

action2 = 0 x 2

sensorValue1 = 0 x 0

sensorValue2 = 0 x 0

0 x 100 & 0xf00

0 x 100 = 0b00000001000000000

xf00 = 0b0000111100000000

Si 0 x 100 & 0xf00 == 0

dentro de elif

0 x 100 & 0xff

sensorValue2 = 0b0000000100000000

& 0b0000000011111111

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

0b0000000000000000

SensorValue2 = 0 x 0

Tome nota de los valores de acción1, action2, sensorValue1 y sensorValue2. Como antes de que se influyen los valores cuando ejecuta a través del if declaraciones otra vez.
sensor_in ahora es igual a un valor de 0 x 100, como mencionamos antes este es un número de 16 bits, así que cuando evaluamos la primera si declaración else si declaración sea verdadera.

Después de procesar la y & operación, sensorValue2 ahora contiene el valor de 0 x 00. Otra vez como procesamos el recordatorio del if instrucciones, establecen los valores de sensorValue1 y sensorValue2.

Como resultado sensorValue1 y sensorValue2 tienen los valores de 0 x 00 action1 resultado final es 0 x 02.

Ahora como la última vez que procesamos el segundo valor de sensor, acción1 y action2 ambos contienen los mismos valores, por lo que se dan el control del motor si se omite la declaración y no comandos de motor.

En este momento el robot está moviendo hacia la línea negra. Por lo que están pasado de valores en el programa de readOptical.py simular esta situación. Ambos sensores leer valores que sensor1 y sensor2 devolución valores blanco.

Usted puede referir a la primera vez que corría por el if declaraciones cuando los valores de los sensores fueron 0xff y 0 x 100 para ver los resultados.

Otra vez, mantener un ojo en los valores anteriores de sensorValue1, sensorValue2, acción1 y action2, estos valores determinan si el motor si las instrucciones se ejecutan o no.

Ahora vamos a echar un vistazo a los resultados del segundo readOptical.py donde tenemos los siguientes valores del sensor en la matriz de optValues:

optValues = [0xff, 0 x 100, 0xff, 0x1ff, 0xff, 0 x 100]

Comenzamos asumiendo otra vez que el robot está entre la línea negra, a continuación, como las curvas de la línea negra en un círculo asumimos entonces que el sensor derecho se pone negro.

El programa de readOptical.py luego procesa if declaraciones y termina con el tercer grupo de valores otra vez simulando el robot a caballo entre el centro de la línea otra vez.

Abra su archivo de salida de readOptical.py que nos salvó antes y deje revisar if lógica otra vez. Puesto que ya hemos discutido la lógica de imagen1 y sensor2 siendo blanco, simulando el robot a caballo entre la línea central, puede revisar este código por su cuenta observando el análisis anterior.

Ahora veamos el segundo conjunto de valores cuando el sensor de la derecha es de color negro. Fíjate otra vez de los valores anteriores de sensorValue1, sensorValue2, acción1 y action2.

sensor _En = 0xff

acción1 = 0x3

action2 = 0x3

sensorValue1 = 0xff

sensorValue2 = 0 x 0
0xFF & 0xf00

0xFF = 0b0000000011111111

0xf00 = 0b0000111100000000

Si 0xff & 0xf00 == 0

dentro de if sensor_in & 0xf00 == 0

0xFF y 0xff

sensorValue1 = 0b0000000011111111

& 0b0000000011111111

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

0b0000000011111111

sensorValue1 = 0xff

Tercer pase a través del lazo con un valor de sensor_in de 0xff. Tenga en cuenta que hemos recorren nuestra lógica antes con sensor_in se establece en 0xff, el resultado de acción1 sigue siendo 0 x 03, pero porque acción1 y action2 valores se establecen en los mismos valores, el motor si la instrucción no se ejecuta esta vez.

Tan control del motor no se envía al robot.
Ahora corremos a través del lazo para la cuarta vez que sensor_in valor es 0x1ff.

sensor _En = 0x1ff

acción1 = 0x3

action2 = 0x3

sensorValue1 = 0xff

sensorValue2 = 0 x 0
0x1ff & 0xf00

0x1ff = 0b0000000111111111

0xf00 = 0b0000111100000000

Si 0x1ff & 0xf00 == 0

dentro de elif

0x1ff & 0xff

sensorValue2 = 0b0000000111111111

& 0b0000000011111111

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

0b0000000011111111

SensorValue2 = 0xff

Como antes, sensor_in se establece en un número de 16 bits así que ejecutamos el if más lógica.
valor de sensorValue2 se establece ahora en 0xff. Ahora sensorValue1 y sensorValue2 se establecen en 0xff.

Si (sensorValue1 == 0xFF)
así que el anterior si se ejecuta la instrucción.

dentro de sensorValue1 == 0xff

0X3 | 0 x 01

acción1 = 0b0000000000000011

| 0b0000000000000001

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

0b0000000000000011

acción1 = 0x3

acción1 ahora se establece en 0 x 03.

La próxima si entonces se ejecuta la instrucción:

Si (sensorValue2 == 0xFF)

0X3 & 0xfd

acción1 = 0b0000000000000011

& 0b0000000011111101

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

0b0000000000000001

acción1 = 0 x 1

Como resultado de la y & operación, acción1 ahora se establece en un valor de 0 x 1.
Se ejecuta la acción1 y action2 son diferentes, la lógica del motor si se ejecuta la instrucción y como se puede ver la instrucción motor de "ir a la izquierda".

El tercer conjunto de valores son los mismos que antes y dar instrucciones para el robot para "Ir adelante" Si desea usted puede revisar la lógica de su propio.

Hasta ahora hemos evaluado todos los de la lógica que controla el robot en el programa de lineFollow.ino.

¿Cómo a proceder desde aquí?

Debemos preocuparnos mucho por el ingeniero diseñó el motor controlador/Señor la manera él o ella lo hizo. No realmente.

Ahora que entendemos lo que la lógica hace, en el futuro los proyectos que utilizan los sensores ahora sabemos cómo usar esta lógica para leer e interpretar los datos imagen1 y sensor2.

Si en el futuro queremos diseñar nuestro propio controlador entonces podemos mirar en por qué el ingeniero diseñó el tablero de la manera o hizo.

Pero ahora tienes suficientes conocimientos como para redactar nuevos programas para utilizar los datos del sensor con su robot. En el futuro Instructables seguiremos ver en el trabajo con el hacer: es robótica Starter Kit.

Disfrutar.

Pásate por mi blog para más información

http://joepitz.wordpress.com/

Etiquetas: Robots, Binario, BitWise

Artículos Relacionados

Hacer: es robótica Starter Kit - análisis de LineFollowing.ino parte 1

Hacer: es robótica Starter Kit - análisis de LineFollowing.ino parte 1

En nuestro último post del blog capturamos algunos datos de los sensores de las tres diferentes posiciones que nuestro robot puede encontrarse al seguir la línea negra, (negro, sensor de sensor/derecha sensor blanco, derecha sensor izquierdo negro a
Hacer: es robótica Starter Kit

Hacer: es robótica Starter Kit

Finalmente tengo algo de tiempo libre para empezar a trabajar en C/C++ integrado sistemas y robots. Así que en la navegación alrededor en Radio Shack me topé con el hacer: es robótica Starter Kit. Al parecer una colaboración conjunta entre la gente e
Hacer: es robótica Starter Kit - envío de datos del Sensor sin cables

Hacer: es robótica Starter Kit - envío de datos del Sensor sin cables

En este Instructable van a tomar lo que hemos aprendido en "hacer: es robótica Starter Kit – conectividad inalámbrica" y "hacer: es robótica Starter Kit – captura de datos de los sensores" y combinar esta información para capturar dato
Hacer: es robótica Starter Kit – conectividad inalámbrica

Hacer: es robótica Starter Kit – conectividad inalámbrica

En este blog vamos a tener la información que aprendimos en el anterior post del blog el post titulado "Make: es robótica Starter Kit-Software parte 2 y capturar datos de sensores en tiempo real y enviar estos datos a nuestro ordenador de forma inalá
Hacer: es robótica Starter Kit – familiarización con el tablero de conductor

Hacer: es robótica Starter Kit – familiarización con el tablero de conductor

En este post del blog tomamos un vistazo a la tarjeta de conductor que viene con el Kit robótica hacen: es. No hay ninguna documentación que viene con el kit de inicio con respecto a la tarjeta de conductor que no sea el esquema.A menos que tenga alg
Hacer: es robótica Starter Kit - comprensión Bitwise matemáticas

Hacer: es robótica Starter Kit - comprensión Bitwise matemáticas

Esta entrada de blog es una continuación de mi jugando con el Kit de robótica hacen: es. Que me puede pasar en la información que he aprendido por lo que hará más fácil para que otros puedan ponerse al día en el trabajo con el Kit de robótica.Después
Hacer: es robótica Starter Kit de captura de datos del Sensor

Hacer: es robótica Starter Kit de captura de datos del Sensor

Instructable pasado hablamos un poco sobre lo que está haciendo el programa de linefollow.ino. Presenté un script en Python que nos permitirá analizar el bit a bit if declaraciones para ver cómo el valor que devuelve el método read_Optical() obtiene
Protoboard de robótica simple

Protoboard de robótica simple

Este Instructable le muestra cómo construir un tablero simple y barato para experimentos de robótica. Es un compañero al barato, fácil de robótica para el Non-Programmer. Aquí aprenderemos cómo construir un robot de Babuino para experimentos con el e
Introducción a la robótica

Introducción a la robótica

Robots están moviendo rápidamente de personajes y conceptos que sólo se encuentra en la ciencia ficción a parte de nuestra vida cotidiana. Aunque a veces puede parecer ser misterios de electromecánica, robótica personal es cada vez más accesible cada
Barato, fácil de robótica para el programador no

Barato, fácil de robótica para el programador no

Hey robótica-programador-quiere a abejas! ¿Cansado de tratar de hacen varios ambientes sólo para encontrar que hay una curva de aprendizaje entre usted y esos robot fresco trucos a tus amigos geek? ¿Los kits comerciales son demasiado caros? Entonces
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
Hacer un modelo de demostración de robótica solenoide

Hacer un modelo de demostración de robótica solenoide

Los solenoides son bobinas electromagnéticas envueltas alrededor de un tubo con un émbolo metálico interior. Cuando la electricidad se enciende, la bobina magnetizada atrae el émbolo y tira. Si le colocas un imán permanente en el émbolo, luego el ele
Manejo de plástico para hacer bricolaje piezas robóticas

Manejo de plástico para hacer bricolaje piezas robóticas

Incluso con impresoras 3D y fresadoras accesibles hoy en día, supongo que este post será de interés para algunas personas. De vez en cuando, me preguntan cómo produzco mi piezas, así que este post es dedicado para este pueblo, para los chicos que no
Hacer una garra robótica

Hacer una garra robótica

es este instructable sobre la fabricación de una garra robótica fácil y rápido.permite comenzar.Paso 1: materialesmaderapegamento para maderaservidor o (motorreductores como de mi instructables)palito plástico redondoSierramás ligeroPaso 2: hacer par