Din egen laser etsare. Billigt. (5 / 13 steg)
Steg 5: Kod förklaring.
Basic avställning av koden, hoppa över detta om du vill, det innehåller inga steg av de faktiska bygga.Koden inleds precis som de flesta andra, med variabeldeklarationen. De flesta av dessa bör vara ifred, men tre är användbara för att förändra för att kalibrera din setup. Dessa är:
flyta del = 2;
flyta movedel = 2;
flyta printdel = 5;
"del" är fördröjningen mellan stegen i rörelse. Detta är (omvänt) den faktiska hastigheten på lasern. Om detta är för låg, kan det orsaka problem i etsning eller "motor fart", som jag kallar det, där motorn gör ett högt surr för cirka en halv en sekund. Eftersom motorn kontrollerar laser, är detta ett problem. De andra två variablerna används för att motverka detta.
movedel är hur länge programmet väntar mellan emot nummer från den seriella porten. Detta är nödvändigt, eftersom utan det, siffrorna ibland förändras drastiskt från vad skickades, som utgör ett betydande problem.
printdel är hur länge programmet vänta mellan skicka "1" och "2" till bearbetning. Jag ska diskutera detta mer i nästa steg.
Efter inrättandet av variablerna, finns det en udda två linjer
"TCCR1B = TCCR1B & 0b11111000 | 0x01;
TCCR2B = TCCR2B & 0b11111000 | 0x01;"
Dessa linjer öka hastigheten på PWM på utdata stiften. Om detta inte sker, högtalarna kommer att svänga med pwm, vilket är normalt vid ca 500Hz (500 svängningar per sekund). Dessa linjer öka som över 20KHz (20000 svängningar per sekund).
Majoriteten av koden är bara räkna ut vilken ståndpunkt skickades, och förvandla det till ett värde arduino kan använda. Riktiga koden startar i slutet av "ymove".
Här, vinkel värdena för X och Y (ib och iby) skalas för att kompensera för skillnaden i avstånd per att occours, som skulle sträcka sig bilden den längre från centrum (X och Y av 100). Det figurerar då, hur långt varje steg av laser måste vara. Det gör siffror det första hur långt varje axel måste resa:
MX = abs (ib - distx).
min = abs (iby - disty);
sedan tar det högsta värdet mellan två och delar upp dem båda genom detta värde:
Maxx = max(mx,my);
min = min/maxx;
MX = mx/maxx;
Detta resulterar i ett värde (min eller mx) är en, och den andra en decimal.
Nästa del använder dessa, som nästa medan uttalande upprepas tomrummet "pos()," hur många gånger den behöver till för att flytta varje axel avståndet måste.
POS(); bara detrmines om värdet går ut till högtalarna måste gå upp eller ned, sedan lägger till eller subtraherar mx eller min, sedan skriver det analoga PIN-koden ska det högtalaren till det nya, förändrade värdet, efter att fördröja den tid som anges i början i "del".
Därefter går tillbaka, och gör det igen. hundratals
gånger varje sekund.