Micro lasershow med en CD objektiv mekanism (7 / 9 steg)
Steg 7: Anslut signalkällan
Hålla ledningarna kommer från objektivet huvudet i ingångarna 8,9,10 och 11 på Arduino.
Det är viktigt att sätta par kablar anslutna till en spole i ingångarna 8 och 9 och trådarna från andra par i sockets 10 och 11.
Dessa väljs eftersom stiften 9,10 och 11 på Arduino har PWM kapacitet, används av kommandot analogWrite i koden.
Tillämpa makt och förhoppningsvis din spegel kommer glatt vicka runt!
Första testet behöver du inte fixa Arduino till bostäder. Du bör göra trådarna tillräckligt länge för det att sitta bekvämt bredvid rutan.
Om du har använt Arduino, kan du lägga ett 9V batteri som visas här till göra din enhet transportabel. Du kan säkert driva det från datorns USB-ström om du inte har ett batteri.
Arduino källkoden följer:
/ * LASER Taggar - CD LENS MICRO LASERSHOW (Copyleft) 2006 av radmatning @ Ljudmila.org GRL * / int t = 0; int inc = 4; int paus = 1000; int x, y, x 0, y0, x 1, y1, int pt, fas, loopcnt, int nshapes = 6; int form = 0; int former [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 - vertikal / / 10,11-horisontella void setup(void) {/ / initiera in-/ utgångar pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); digitalWrite(8,LOW); digitalWrite(10,LOW);} void setPos (int x, int y) {om (x > = 0) {digitalWrite(10,LOW); analogWrite(11,x);} annat {digitalWrite(11,LOW); analogWrite(10,-x);} om (y > = 0) {digitalWrite(8,LOW); analogWrite(9,y);} annat {digitalWrite(8,HIGH); analogWrite(9,255+y);}} void loop(void) {//next forma om (loopcnt > 100) {form = (form + 1) % nshapes, loopcnt = 0;} //tick fas fas += inc, //next peka om (fas > = 100) {fas = 0; pt = pt ++; //loop pekar i form om (pt > shapes[shape+1]) {pt = former [form]; t = pt * 100; loopcnt ++;} x0 = x1; y0 = y1; x1 = ptsx [pt]; y1 = ptsy [pt];} //current samordna x=((x0*(100-phase))+(x1*phase))/100; y=((y0*(100-phase))+(y1*phase))/100; setPos (x y); delayMicroseconds(pause); }