Stap 7: Sluit de signaalbron
Plak de draden van het hoofd van de lens binnenkomt sockets 8,9,10 en 11 op de Arduino.
Het is belangrijk om het paar draden verbonden met één spoel in sockets 8 en 9 en de draden van andere paar in sockets 10 en 11.
Deze zijn gekozen omdat de pinnen 9,10 en 11 op de Arduino PWM vermogen, gebruikt door de opdracht van de analogWrite in de code hebben.
De stroomtoevoer en hopelijk zal uw spiegel gelukkig wiggle rond!
Voor de eerste test moet u niet bevestigen de Arduino aan de behuizing. U moet de draden lang genoeg voor het comfortabel zitten naast het vak hebt gemaakt.
Als je de Arduino hebt gebruikt, kunt u een 9V batterij zoals hieronder uw apparaat draagbaar te maken. U kunt het veilig stroom van uw computer USB macht hebt u niet van een batterij.
De broncode van de Arduino volgt:
/* 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); }