Paso 13: programación
Por desgracia, dejó mi código en el equipo de la tienda cuando me mudé a LA al principio del verano, y existe la posibilidad que el código es perdido y desaparecido para siempre. En lugar de intentar volver a escribirlo (aunque probablemente encontraré una copia cuando vuelva a LA en unos días, estoy en frisco ahora), voy a intentar guiarte por programación técnicas puede utilizar para este bebé. ¿No aprendes algo de pescado que comen los pescados, de todos modos?
Aquí ' s la teoría básica detrás del código:
El dibujo es un proceso de bucle abierto. La única manera que tenemos de saber hasta qué punto ha dibujado el etch a sketch es averiguar cuánto tiempo hemos sido cambiamos el motor a una velocidad constante. El problema, por supuesto, es que los motores varían su velocidad basado en el voltaje de la batería, que podría cambiar de día a día. Podía regular la tensión del motor, pero encontrar esa idea horrible e innecesaria. En cambio yo a sentarse y escuchar la canción 'Francamente, Mr Shankly' de los Smiths con una expresión petulante en mi cara.
Para conseguir alrededor de esto, yo fingir que estoy dibujando imágenes vectoriales (es decir, imágenes que se componen de curvas y líneas escalables). Hacer una variable global en mi código llamado escala, y si tuviera una función como drawLine (ángulo, longitud), yo diría con un número arbitrario para la longitud, decir 3. Dentro de la función, tiene código que dice: dibuja una línea en el ángulo apropiado para 3 * escala de segundos
¿Eso hace sentido? Buena.
Aquí están algunas funciones básicas:
void drawRight(distancia de char sin signo)
{
PORTB = 1;
Wait(Distance*Scale);
PORTB = 0;
}
void drawLeft(distancia de char sin signo)
{
PORTB = 2;
Wait(Distance*Scale);
PORTB = 0;
}
void drawUp(distancia de char sin signo)
{
PORTB = 4;
Wait(Distance*Scale);
PORTB = 0;
}
cancelar retirada(distancia de char sin signo)
{
PORTB = 8;
Wait(Distance*Scale);
PORTB = 0;
}
para aquellos de ustedes que no quieren escribir, aquí de la función de esperar :
void espera(int tiempo)
{
int cuenta, count2;
para (cuenta = 0; cuenta < 1000; cuenta ++) //we're va a quemar un montón de ciclos aquí.
para (count2 = 0; count2 < tiempo; count2 ++)
;
}
OK, esto debería de ponerte en marcha. Jugar con este código un poco y sacar un montón de líneas horizontales y verticales. Tal vez un cuadro. En la siguiente sección a hablar a usted acerca de las curvas.
Mientras programa, revisa la etiqueta de indie Kill Rock Stars. Junto al Matador, es uno de mis sellos favoritos. OK, cool.