Étape 7: Se connecter à la source de signal
Coller les fils venant de la tête de la lentille dans prises 8,9,10 et 11 sur l’Arduino.
Il est important de mettre la paire de fils reliés à une bobine en douilles 8 et 9 et les fils de l’autre paire dans les douilles de 10 et 11.
Ces derniers sont choisis parce que les broches 9, 10 et 11 sur l’Arduino a fonctionnalité de PWM, utilisée par la commande analogWrite dans le code.
Mettre sous tension et j’espère que votre miroir sera heureusement wiggle autour !
Pour le premier test vous n’avez pas besoin de fixer l’Arduino sur le boîtier. Vous aurait dû les fils assez longtemps pour lui de s’asseoir confortablement à côté de la boîte.
Si vous avez utilisé l’Arduino, vous pouvez ajouter une pile de 9V comme montré ici pour rendre votre appareil portable. Vous pouvez en toute sécurité il alimenter d’alimentation USB de votre ordinateur si vous n’avez pas une batterie.
Le code de source Arduino suit :
/* 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); }