Arduino + TFT gráficos de tortuga--> (16 / 18 paso)

Paso 16: Dibujo recursivo

Hasta ahora hemos dicho la tortuga donde sacar y lo ha hecho lo que se dijo - incluso con los dibujos más complicados como el ejemplo del coche. Pero la repetición le da a la tortuga una vida propia. Dice qué hacer y luego sentarse y observar.

Aquí hay un enlace a la discusión de Wikipedia de la recursividad:

www.wikipedia.org/wiki/Recursion _ (computer_science...

¿Qué es recursividad? Para una persona que escribe tortuga Arduino funciones de gráficos, es una forma diferente de pensar. Para la tortuga que hace el dibujo, es una medida de la independencia: ¡ a conseguir comenzado y watch me go!

Nota: el Arduino Uno limitada memoria SRAM, pero todavía suficiente para utilizar la recursividad en los ejemplos de gráficos de tortuga. Si intenta utilizar demasiados pasos recursivos, sus funciones no funcionen. Sin embargo no hemos llegado a que limitar en nuestros ejemplos, así que vamos a seguir adelante y ver cómo funciona...

Cuando invocamos recursividad utilizamos una función que se llama. ¿Cómo lo hacemos? Es más fácil de explicar con un breve ejemplo que dibuja una V:

void vee(length); Si ejecuta este ejemplo, pruébalo con longitud de 80 píxeles

{

t.Left(45); tlas urnas izquierda 45 grados

t.Forward(length); dibuja el brazo izquierdo de V con longitud especificada - 80 píxeles, por ejemplo

t.back(length); vuelve al punto de inicio de V

t.Right(90); da vuelta 90 grados derecha - que es de 45 grados a la derecha de la orientación original

t.Forward(length); dibuja el brazo derecho de V

t.back(length); vuelve al punto de partida

t.Left(45); vuelve a la orientación original

}

-Dibuja una V. Ahora estamos listos para añadir la recursividad. Después de la primera línea que dice t.forward(length); agregar esta línea:

Vee(length / 2); se trata de repetición - una función que se hace llamar!

Que ha dibujado el brazo izquierdo de la V y ahora llamar la misma función para dibujar otra V que es la mitad de tamaño. Después de que se haya completado, la función inicial continúa dibujar la V original, más grande. Se trata de una forma interesante de dibujar algo. Es realmente una forma interesante de pensar cómo se pueden dibujar cosas.

Ahora vamos a agregar una V más pequeña en el extremo del brazo derecho también. Después de la segunda t.forward(length); agregue esta línea otra vez:

Vee(length / 2); se trata de repetición - una función que se hace llamar!

Ya casi terminamos, excepto por una cosa - la función no funciona de la manera que es - hay algo que arreglar. Recursividad necesita un punto de parada, no continúe indefinidamente. (Este el error que hice cuando primero trató de dibujar una V usando recursividad - no funcionó para mí y tuve que conseguir consejos.) Añadir esta rutina de parada al principio de la función:

Si (longitud < 10)

{

retorno;

}

Allí. Ahora tenemos un punto de parada - cuando los brazos de la V se reducen a menos de 10 píxeles (note que la longitud es a la mitad cada vez que la función se llama) - las paradas de la función.

Esta es la función de vee recursiva completa:

int longitud = 80; variable que especifica la longitud de los brazos de la V

void vee(length); los nombres de la función con un parámetro, que es la longitud de los lados de la V
{

Si (longitud < 10)
{

retorno; Esto detiene la repetición cuando la longitud es menos de 10 píxeles.

}

t.Left(45); gira a la izquierda 45 grados

t.Forward(length); brazo izquierdo dibuja de V con longitud de 80 píxeles

Vee(length / 2); se trata de recursividad - función llamar a sí mismo para dibujar más pequeñas V!

t.back(length); regresa a la parte inferior de la V

t.Right(90); gira derecha 45 grados

t.Forward(length); dibuja el brazo derecho de V

Vee(length / 2); Esto es repetición otra vez!

t.back(length); vuelve al punto de partida

t.Left(45); vuelve a la orientación original

}

Ahora puede probar la función. Probar con diferentes valores para la longitud de lo V - mirar y ver qué pasa!

EJEMPLO 1 - CONOS

Este ejemplo utiliza una función que hemos denominado rCones a trazar dos arcos, t.arcLeft() y t.arcRight(), cada uno de 360 píxeles de circunferencia. Después de dibujar el arco de la primera, la función se llama (!-recursividad)- y dibuja un arco más pequeño, más corta en la circunferencia de 30 píxeles. Esto continúa hasta que se alcanza el límite de parada, cuando el arco más pequeño es menos de 100 píxeles en la circunferencia.

EJEMPLO 2 - UN ÁRBOL PEQUEÑO

La función de ejemplo rTree es similar al ejemplo de la V anterior.

EJEMPLO 3 - UN ÁRBOL CON MÁS RAMAS

Esto utiliza la misma función de rTree utilizada en ejemplo 2, pero especificando un tamaño mayor de la rama la función dibuja muchas ramas más. Es interesante ver cuánto detalle puede añadirse simplemente cambiando este uno parámetro.

EJEMPLO 4 - UN ÁRBOL MÁS COMPLEJO

El principio es el mismo - pero en esta función podemos especificar longitudes de ramas izquierdas y derecha ramas y ángulo izquierdo, ángulo recto para las ramas. También se dibujan las ramas más cortas del final un color diferente. Nuestra tortuga está consiguiendo bastante artístico. Dependiendo de los valores utilizados, la imagen resultante puede ser sofisticada. Trate de alguna rama diferentes longitudes y colores y ver qué pasa.

EJEMPLO 5 - RECURSIVO TRIÁNGULOS

Este ejemplo dibuja triángulos de Sierpinski. Conozca más sobre ellos en Wikipedia:

https://en.wikipedia.org/wiki/Sierpinski_triangle

Artículos Relacionados

Tutorial de Arduino TFT texto

Tutorial de Arduino TFT texto

Necesita estas piezas:-Arduino Uno R3-TFT pantalla-La siguiente biblioteca de ArduinoPaso 1: fuenteEsta es la fuente#include#include #define LCD_CS A3 LCD_CD A2 de #define #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 Adafruit_TFTLCD tft (
Biblioteca de pantalla y fuente de Arduino TFT

Biblioteca de pantalla y fuente de Arduino TFT

Soy un fan de Arduino como hay tanto software ya está disponible en internet, esto hace más fácil nuevos proyectos!Hace poco compré unos baratos 1.8" TFT pantallas para un proyecto, inicialmente no he podido conseguirlos de trabajo que fue frustrante
El Arduino / TFT LCD conexión

El Arduino / TFT LCD conexión

¿Dices que quieres conectar una pantalla TFT a un Arduino? Son bromas?No! Por sobre el precio de un familiar 2 x 16 LCD, usted consigue una pantalla TFT de alta resolución. Para tan bajo como $4 (gastos de envío incluidos!), es posible comprar una pa
Arduino + TFT = música Visual

Arduino + TFT = música Visual

Resumen:Audio: en este proyecto Arduino Lee una cadena de notas escritas en el formato de notación musical que hemos llamado lenguaje de música fácil. Selecciona cada nota musical (o descanso), determina su frecuencia y reproduce esa nota.Gráficos: e
Sistema de gestión de uso de Arduino de tráfico

Sistema de gestión de uso de Arduino de tráfico

Se trata de un prototipo muy simple y básico de cómo se gestiona el flujo de tráfico. He construido este prototipo con LED y Ardunio Microcontroller. Esto es solo para principiantes y apenas tarda 30 minutos para terminar el bosquejo y el circuito.Pa
Oscilliscope Arduino TFT

Oscilliscope Arduino TFT

Este es mi video haciendo un oscilliscope arduino. Del oscilliscope era bastante barato, así que diviértete. Aunque es un poco crudo, hace el trabajo. Algunas cosas a tener en cuenta:1.) uso 10 uf capacitor2.) use un rango de ohmios en los transistor
Tutorial de Arduino gráfico

Tutorial de Arduino gráfico

Este tutorial fue hecho para ayudar a leer valores analógicos de arduino en un gráfico.A veces, para una mejor comprensión de lo que está leyendo el Arduino, un gráfico podría realmente ayudar a facilitar el proceso.Mientras que la programación de pl
Arduino "Habla" Temp / humedad en una TFT LCD con relés

Arduino "Habla" Temp / humedad en una TFT LCD con relés

De la mente de http://arduinotronics.blogspot.comACTUALIZACIÓN: Añadido nuestro escudo SpeakEasy texto a voz (TTS) para hacer de este una estación meteorológica "Hablar"!ACTUALIZACIÓN: Añadido una placa de relé de 4 Puerto de control del disposi
Dibujo de Arduino Robot

Dibujo de Arduino Robot

He diseñado este proyecto para un taller de 10 horas de ChickTech.org cuyo objetivo es introducir a las mujeres adolescentes a los asuntos de la madre. Los objetivos de este proyecto fueron:Fácil de construir.Fácil de programar.Hizo algo interesante.
Dibujo de bajo costo, compatible con Arduino Robot

Dibujo de bajo costo, compatible con Arduino Robot

He diseñado este proyecto para un taller de 10 horas de ChickTech.org cuyo objetivo es introducir a las mujeres adolescentes a los asuntos de la madre. Los objetivos de este proyecto fueron:Fácil de construir.Fácil de programar.Hizo algo interesante.
Arduino todas las cosas--Smart Alarm Clock Setup para reuniones, citas, tareas, recordatorios y este reloj utiliza un Arduino Yún y su calendario de Google para configurar automáticamente alarmas. y parece fresco también!

Arduino todas las cosas--Smart Alarm Clock Setup para reuniones, citas, tareas, recordatorios y este reloj utiliza un Arduino Yún y su calendario de Google para configurar automáticamente alarmas. y parece fresco también!

Reloj de alarma S.M.A.R.T.Instalación para reuniones, citas, recordatorios y tareas, este reloj utiliza un Arduino Yún y su calendario de Google para configurar automáticamente alarmas. Y parece fresco también!Por Tony DiCola dificultad: moderado¿No
Etch-a-Sketch LOGO - EASiLOGO

Etch-a-Sketch LOGO - EASiLOGO

¿Qué obtienes cuando cruzas una tortuga con un Etch-a-Sketch?LOGO interactivo de Etch-A-Sketch - 'EASiLOGO'!Este es el primer lenguaje de programación diseñado específicamente para el juguete famoso mundo de las artes de Ohio - Etch-a-Sketch. Si nunc
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
Python coding for Minecraft

Python coding for Minecraft

Este Instructable muestra cómo instalar y utilizar un mod que escribí que te permite controlar el Minecraft con secuencias de comandos de python. A centrarme en Windows, aunque OS X y Linux debería funcionar igual de bien.Scripts de Python pueden gen