Paso 7: Conecte la fuente de señal
Pegue los cables que salen de la cabeza de la lente en zócalos 8,9,10 y 11 en el Arduino.
Es importante poner el par de cables conectados a una bobina en tomas de 8 y 9 y los cables de otro par de zócalos de 10 y 11.
Estos son elegidos porque los pines 9, 10 y 11 en el Arduino tiene capacidad PWM, utilizado por el comando analogWrite en el código.
Aplicar energía y esperemos que su espejo se mueva felizmente alrededor!
Para la primera prueba no necesita arreglar el Arduino a la vivienda. Usted debe hacer los cables lo suficientemente largos para él sentarse cómodamente al lado de la caja.
Si has usado el Arduino, puede Agregar una batería de 9V como se muestra a continuación para que el dispositivo portátil. Usted puede con seguridad energía de alimentación del USB del ordenador si no tienes una batería.
Sigue el código de Arduino:
/* LASER TAGS - CD LENS MICRO LASERSHOW (Copyleft) 2006 by linefeed @ Ljudmila.org GRL */ int t=0;int inc=4;int pause=1000;int x,y,x0,y0,x1,y1;int pt,phase,loopcnt;int nshapes=6;int shape=0;int shapes[20]={0,4,7,9,11,20, 24};int ptsx[50]={-250,250,250,-250, -250,250,0, -250,250, -250,250, -230, -230 ,-15, -11, 220, -17, -17, -15, 150, -250,250,-250,250 };int ptsy[50]={-250,-250,250,250, -250,-250,250, -250,250, 250,-250, -220, 200, 200, -200, -200, -210, -210, -35, -40, -250,-250,250,250 };//pins // 8,9 - vertical // 10,11-horizontal void setup(void) { // initialize inputs/outputs pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); digitalWrite(8,LOW); digitalWrite(10,LOW); }void setPos(int x, int y) { if (x>=0) { digitalWrite(10,LOW); analogWrite(11,x); } else { digitalWrite(11,LOW); analogWrite(10,-x); } if (y>=0) { digitalWrite(8,LOW); analogWrite(9,y); } else { digitalWrite(8,HIGH); analogWrite(9,255+y); }}void loop(void) { //next shape if (loopcnt>100) { shape=(shape+1)%nshapes; loopcnt=0; } //tick phase phase+=inc; //next point if (phase>=100) { phase=0; pt=pt++; //loop points in shape if (pt>shapes[shape+1]) { pt=shapes[shape]; t=pt*100; loopcnt++; } x0=x1; y0=y1; x1=ptsx[pt]; y1=ptsy[pt]; } //current coordinate x=((x0*(100-phase))+(x1*phase))/100; y=((y0*(100-phase))+(y1*phase))/100; setPos(x,y); delayMicroseconds(pause); }