Juego de evitación del obstáculo (6 / 9 paso)

Paso 6: Obstáculo actualización matriz

Lo que hace de este proyecto un juego es que tienes que evitar los obstáculos que pueden venir en las 3 posibles posiciones (posiciones de izquierda, centro y derecha). Esto significa que tenemos que hacer un seguimiento de nuestros obstáculos y enviar otros nuevos después de que pasa un cierto periodo de tiempo.

Esto significa que vamos a necesitar lo siguiente:

1) una matriz de reg para almacenar los obstáculos.

2) un contador para saber si no ha transcurrido suficiente tiempo para saber si tenemos que enviar un nuevo obstáculo.

3) una manera de generar nuevos obstáculos. (usaremos nuestro generador aleatorio)

4) una forma de moverse los "obstáculos". Tendremos que ser capaces de deshacerse de la fila inferior que "pasa" el vector de posición y también insertar nuestro nuevo obstáculo en la parte superior de la matriz de obstáculo.

1) para realizar un seguimiento de los obstáculos, utilizamos un registro llamado "TotalArray". TotalArray utiliza los índices desde 0 el índice 3 del final de los obstáculos y los ultimos 3 para lo que nos referimos como nuestra "posición". Por ejemplo: en nuestro proyecto utilizamos un TotalArray con índices desde [0:20], así que todo de 0:17 será nuestros obstáculos, y todo, desde las 18:20 será nuestra posición actual.

Es importante saber 2 cosas específicas para nuestra aplicación.

a) usted debe saber que obstáculos se interpretaron en grupos de tres. Así que cuando estamos escribiendo en la pantalla o comprobar si un obstáculo ha chocado con nuestra posición, tenemos que pensar en los índices de obstáculos 3 a la vez.

Para los 3 primeros obstáculos son TotalArray [0:2], los tres siguientes sería TotalArray [3:5] y así sucesivamente.

b) obstáculos nunca llegan a la última fila donde están los índices de posición. Esto significa que la posición de los índices 18:20 sólo tendrá un bit es un 1.

2) Este contador cuenta con posedge del tablero construido en el reloj que se toma de PIN Y2. Un parámetro también debe ser instanciado para indicar lo que debe ser el valor de contador para saber que ha transcurrido el tiempo de señalización para un nuevo obstáculo ser generado y luego poner en la parte de obstáculos de la matriz. Cuanto mayor sea el valor de este parámetro, más tiempo entre nuevos obstáculos se genera y más fácil el juego se juega.

3) nuestro generador de números aleatorios debe "devolver" un valor binario de 3 bits. Tenemos este efecto dando el módulo generador de aleatorios un reg para acceder y cambiar cuando genera un nuevo valor. Podemos tomar este reg y utilizarlo para nuestro módulo updateObstacleArray. Este valor de bit 3 corresponde el nuevo obstáculo que aparecerá en el 0:2 índices. Una cosa a tener en cuenta aquí es que no podemos tener el nuevo obstáculo sea el caso: 3' b111 porque eso significaría el usuario tendría ninguna manera de evitar el obstáculo y que no es divertido! (Somos buena gente!) Para cuidar esto en el azar generar módulo.

Hay otro caso que tenemos no podemos pasar y ese es el caso donde un obstáculo 3' b110 es seguido por un 3' b011 obstáculo porque esto también hace que un escenario de pérdida de auto. En lugar de comprobar en este caso, en lugar de otro crear una línea de 3' b000 entre cada obstáculo para que el usuario siempre pueda encontrar un camino a través de los obstáculos.

4) cuando el tiempo transcurre el parámetro constante período predefinido (de 2), tenemos que mover nuestros obstáculos. Suponiendo que no hay ninguna colisión entre un obstáculo y un valor de posición, entonces vamos a actualizar la matriz para reflejar este paso del tiempo con un nuevo obstáculo. (Volveremos a esta comprobación de colisiones.)

Tenemos que hacer un nuevo obstáculo aparecen en la fila superior de la TotalArray, deshacerse de la fila inferior de los obstáculos y todo lo empuja desde la parte superior de los obstáculos hacia abajo una fila.

Esto se logra mediante el uso de un tempArray.

...

...

Suponiendo que tiempo transcurre para que un obstáculo necesita ser generado.

REG TotalAr [0:20]
tempArray reg [0:17]

entrada randSig [0:2];

Si (obsAr [0:2] == 3' b000)

comenzar

Si primero y la parte superior de la matriz está vacía gen nuevo obsAr original obs y empuje "hacia abajo"

implica que cada obstáculo está separado por una línea horizontal vacía entre obstáculos

Si (randSig! = 3' b111)

comenzar

tempArray [3:17] < = TotalAr [0:14]; almacenar los elementos top 15

tempArray [0:2] = randSig; Creando el nuevo obstáculo de la randomsignal

TotalAr [0:17] = tempArray [0:17]; poner la nueva matriz de obstáculo detrás en el TotalArray

final

otra cosa

comenzar

tempArray [3:17] < = TotalAr [0:14];

tempArray [0:2] = 3' b000; El nuevo obstáculo de hacer una fila en blanco si hay un obstáculo en la fila superior para comenzar.

TotalAr [0:17] = tempArray [0:17];

final

final

...

...

Este código es lo que se utilizará para poner el nuevo obstáculo en la parte superior, así como bajar los viejos obstáculos de una fila.

Artículos Relacionados

EVITACIÓN del obstáculo con la KY-032

EVITACIÓN del obstáculo con la KY-032

¡Hola mundo! He realizado otro proyecto de ejemplo, estoy usando el KY-032 que le muestre cómo obstáculo evitación sensores funcionan. El código es básico pero funciona muy bien para cosas simples. El código puede construir proyectos más grandes.El s
Un infrarrojo de Arduino controlado y Robot de evitación del obstáculo

Un infrarrojo de Arduino controlado y Robot de evitación del obstáculo

Hola todo el mundo,Este Instructables se divide en dos fases, que hace conveniente para el principiante y los diseñadores de robots intermedios.La primera fase abarca el uso de la placa de arduino nano solamente como controlador. Con esto, vamos a co
Robot de evitación del obstáculo de Arduino

Robot de evitación del obstáculo de Arduino

Hola chicos,Material:1 microcontrolador Arduino - http://www.robotshop.com/en/arduino-uno-usb-microc...2 paralaje continua Servos rotacional - http://www.robotshop.com/en/parallax-futaba-contin...1 180 grado Hi-Tec HS-422 Servo - http://www.robotshop
Arduino Nano: Detector de evitación de obstáculos infrarrojo con Visuino

Arduino Nano: Detector de evitación de obstáculos infrarrojo con Visuino

Sensores infrarrojos evitación del obstáculo son baratos, pequeños sensores de uso frecuente en robots y proyecto de Arduino para detectar objetos cerca del sensor.Los sensores infrarrojos funcionan enviando una luz infrarroja con cierta frecuencia,
Cómo hacer un obstáculo evitando Arduino Robot! "Mi Robot V1"

Cómo hacer un obstáculo evitando Arduino Robot! "Mi Robot V1"

Este instructable muestra las instrucciones de pasos para hacer un obstáculo evitando robot con Arduino.Empezar a dejarmi bloghttp://robot4pro.blogspot.com/p/My-robots.htmlPaso 1: Materiales necesariosAquí le damos todo que lo necesario para hacer My
Control remoto obstáculo evitando Robot con PIC microcontrolador

Control remoto obstáculo evitando Robot con PIC microcontrolador

Utilizo el pic 16f877amódulo ultrasónico motor servo había orientada motor motor cristal conductor y 20 mhz.En robótica, evitación del obstáculo es la tarea de satisfacer algún objetivo de control sujeto a las limitaciones de la posición de no inters
Sin embargo, otra línea siguiente / obstáculo evitación 2WD coche

Sin embargo, otra línea siguiente / obstáculo evitación 2WD coche

Este coche de robot no es nada nuevo. Instructables y Youtube se sazonan con pimienta con un coche robot similar a este y sinceramente esos anuncios me inspiraban a armar este kit de robótica asequible que podría folleto en mi taller de robótica (niv
Obstáculo, evitando Robot con Arduino

Obstáculo, evitando Robot con Arduino

Hola chicos en este instructable veremos cómo hacer un obstáculo autónomo evitando Robot.This robot ha sido diseñado y programado de tal manera que evita la colisión. Básicamente, el robot se mueve hacia delante y siempre que detecte un objeto/obstác
Fácil de obstáculos láser

Fácil de obstáculos láser

en este Instructable, le mostraré cómo hacer una carrera de obstáculos de láseres.Para esto se necesita:-Puntero láser-3 espejos-Un pequeña luz accionada solar (puede encontrarse en la sección jardinería de tiendas)-Cinta-A botella de spray llena de
Juego de anillo-lanzamiento del pirata

Juego de anillo-lanzamiento del pirata

que íbamos a tener una fiesta sorpresa para mi hijo de 4 años y está muy en Jake y los piratas de nunca jamás.  Además de un curso del obstáculo de pirata quería construir a algún tipo de juego.  Una Junta de anillo-lanzamiento de Capitán Garfio pare
Ultrasónico Robot evitando obstáculo

Ultrasónico Robot evitando obstáculo

Este es mi intento de diseñar y construir un obstáculo evitando robot! RekaBot (nombrada de un hada (:) puede detectar obstáculos con un sensor de ultrasonidos que puede moverse con la ayuda de un servo. Basado en las medidas que toma, las pistas son
LEGO carrera de obstáculos - para niños

LEGO carrera de obstáculos - para niños

En Instructables anterior mencioné por qué me estaba haciendo un curso del obstáculo de Lego. Esencialmente, mi hijo tuvo su fiesta de cumpleaños de 9 años de edad en el país. Le encanta Legos. Y quiero decir que realmente ama. Por lo tanto, para su
Robot WiFi con transmisión de video en tiempo real, detección de obstáculo y sensibilidad a la luz

Robot WiFi con transmisión de video en tiempo real, detección de obstáculo y sensibilidad a la luz

INTRODUCCIÓN:Este proyecto es un vehículo robot que puede ser controlado a través de cualquier ordenador de forma inalámbrica mediante un enlace WiFi. Transmite vídeo en tiempo real a la computadora que controla usando el mismo enlace. La cámara que
Obstáculos del Robot Qtechknow

Obstáculos del Robot Qtechknow

¿Has pensado de controlar su FuzzBot de forma inalámbrica? ¿Quieres hacer un real - life video juego? ¿Quieres aprender sobre la tecnología detrás de NFC y RFID? -el Qtechknow Robot de obstáculos cómo - a guía es para usted!Por favor votar para mí (e