Paso 5: Explicación del código.
Basic bajan del código, saltatelo si quieres, que no contiene se los pasos de la construcción real.El código empieza como la mayoría de los otros, con la declaración de variables. La mayoría de ellas debe ser dejado solo, pero tres son útiles para alterar para calibrar su configuración. Estos son:
flotador del = 2;
Float movedel = 2;
Float printdel = 5;
«del» es la demora entre los pasos del movimiento. (inversamente) es la velocidad real del láser. Si se establece demasiado bajo, puede provocar problemas en grabado o "motor pedo", como llaman, donde el motor hace un zumbido fuerte aproximadamente medio segundo. Puesto que el motor controla el láser, se trata de un problema. Las otras dos variables se utilizan para ayudar a contrarrestar esto.
movedel es el tiempo que el programa espera entre recepción de números del puerto serial. Esto es necesario, como sin ella, los números de vez en cuando cambian drásticamente de lo que fue enviado, que plantea un problema importante.
printdel es cuánto tiempo esperar el programa entre el envío de un "1" y "2" al proceso. Trataré esto más en el siguiente paso.
Después de configurar las variables, hay dos líneas de un extraño
"TCCR1B = TCCR1B & 0b11111000 | 0 x 01;
TCCR2B = TCCR2B & 0b11111000 | 0 x 01;"
Estas líneas aumentan la velocidad de lo PWM en los pines de salida. Si esto no se hace, los altavoces oscilará con pwm, que es normalmente a alrededor de 500Hz (500 oscilaciones por segundo). Estas líneas que aumentan por encima de 20kHz (20000 oscilaciones por segundo).
La mayoría del código es simplemente averiguar qué posición fue enviado, y convertir en un valor de arduino puede utilizar. El código real se inicia al final de "ymove".
Aquí, los valores para X e Y (ib y iby) se escalan para compensar la diferencia de distancia por ángulo eso occours, que estiraría la imagen del más allá es desde el centro (X y Y de 100). Entonces, las cifras hasta qué punto cada paso del láser tiene que ser. Para ello, calcula primero cuánto debe viajar cada eje:
MX = abs (ib - distx);
mi = abs (iby - disty);
entonces toma el valor máximo entre los dos y los dos divide a por ese valor:
Maxx = max(mx,my);
mi = mi/maxx;
MX = mx/maxx;
Esto se traduce en uno de los valores (mi o mx) siendo uno y el otro decimal.
La siguiente parte utiliza éstos, como la próxima mientras que la Declaración reitera el vacío "pos();" el número de veces que se necesita hasta para mover cada eje la distancia que necesita.
POS(); detrmines sólo si el valor de salir a los altavoces tiene que ir hacia arriba o hacia abajo, luego agrega o resta mx o mi, luego escribe el pin analógico va a ese altavoz al valor nuevo, alterado, después de retrasar el tiempo especificado al principio en "del".
Entonces vuelve y hace todo nuevo. cientos
de veces cada segundo.