Din egen laser etsare. Billigt. (4 / 13 steg)
Steg 4: Serial kontrollerade kisel elektron divergens matris (kallas även en arduino)
Arduino laser plotter programvara. Skapas och underhålls av J Duffy (jduffy54 på instructables). Projekt och förklaring
finns där.
ändring 11
int stepporty = 0;
int wd = 1;
flyta ib = 0;
int ib1 = 0;
int ib2 = 0;
int ib3 = 0;
flyta iby = 0;
int iby1 = 0;
int iby2 = 0;
int iby3 = 0;
int val = 30.
int prev8 = 1;
int spy = 0;
int g = 9.
flyta maxx = 1;
float movefract;
flyttal decimal = 0;
flyta stepsd = 0;
flyta stepsw = 0;
flyta stepsdy = 0;
flyta stepswy = 0;
int låt = 0;
int xd = 0;
int yd = 0;
int sp = 1;
int skp = 0;
flyta prevx = 0;
flyta prevy = 0;
float distx;
float disty;
flyta mx = 1;
float min = 1;
flyta tt = 0;
int gå = 0;
flyta del = 3;
flyta movedel = 20;
flyta printdel = 5;
void setup() {
Serial.BEGIN(115200);
TCCR1B & = ~ (1 << CS12);
TCCR1B | = (1 << CS11);
TCCR1B & = ~ (1 << CS10);
/**********************************************************************************/
Pwm resolution inställd på läget 7 (10 bitar)
/**********************************************************************************/
TCCR1B & = ~ (1 << WGM13); Timer B tydlig bit 4
TCCR1B | = (1 << WGM12); ställa in bit 3
TCCR1A | = (1 << WGM11); Timer A set bit 1
TCCR1A | = (1 << WGM10); ställa in bit 0
pinMode (13, OUTPUT);
pinMode (12, OUTPUT);
pinMode (11, OUTPUT);
pinMode (8, ingående);
digitalWrite 8, hög.
Delay(50);
}
void loop() {
digitalWrite 12, låg.
om (digitalRead(8) == 0) {
Delay(100);
digitalWrite (11, låg).
digitalWrite 12, låg.
digitalWrite (10, låg).
prev8 = 0;
loop();
} annat {
om (prev8 == 0) {
prev8 = 1;
}
om (Serial.available() > 0) {
Låt = Serial.read();
om (låt == "X") {
digitalWrite 12, låg.
xmove();
}
om (låt == "Y") {
ymove();
}
om (låt == "G") {
UPD();
}
om (låt == "F") {
skipline();
}
} annat {
Serial.Print(1);
digitalWrite 12, låg.
Delay(printdel);
Serial.Print(2);
}
}
POS();
}
void skipline() {
SKP = Serial.read() - 48.
om (skp = 1) {
Delay(200);
}
loop();
}
void upd() {
om (digitalRead(8) == 0) {
slinga (); / / / nödstopp, slutar och återgår till loop();
}
g = Serial.read() - 48.
Delay(10);
om (g == 1) {
digitalWrite 12, hög.
} annat {
om (digitalRead(8) == 0) {
loop();
}
digitalWrite 12, låg.
}
loop();
}
void xmove() {
Delay(movedel);
Prevx = ib.
IB = Serial.read() - 48.
om (ib == -2) {
decimal = 0,1;
dyn = 1;
IB = Serial.read() - 48.
}
Delay(movedel);
om (Serial.available() > 0) {
IB1 = Serial.read() - 48.
om (ib1 == -2) {
decimal = 1;
IB1 = Serial.read() - 48.
}
}
Delay(movedel);
om (Serial.available() > 0) {
IB2 = Serial.read() - 48.
om (ib2 == -2) {
decimal = 10;
IB2 = Serial.read() - 48.
}
}
Delay(movedel);
om (Serial.available() > 0) {
IB3 = Serial.read() - 48.
om (ib3 == -2) {
decimal = 100;
IB3 = Serial.read() - 48.
}
}
IB = (ib * decimal) + (ib1 * (decimal / 10)) + (ib2 * (decimal / 100)) + (ib3 * (decimal / 1000));
loop();
}
void ymove() {
om (digitalRead(8) == 0) {
slinga (); / / / nödstopp, slutar och återgår till loop();
}
Delay(movedel);
prevy = iby;
iby = Serial.read() - 48.
om (iby == -2) {
decimal = 0,1;
dyn = 1;
iby = Serial.read() - 48.
}
Delay(movedel);
om (Serial.available() > 0) {
iby1 = Serial.read() - 48.
om (ib1 == -2) {
decimal = 1;
iby1 = Serial.read() - 48.
}
}
Delay(movedel);
om (Serial.available() > 0) {
iby2 = Serial.read() - 48.
om (iby2 == -2) {
decimal = 10;
iby2 = Serial.read() - 48.
}
}
Delay(movedel);
om (Serial.available() > 0) {
iby3 = Serial.read() - 48.
om (iby3 == -2) {
decimal = 100;
iby3 = Serial.read() - 48.
}
}
iby = (iby * decimal) + (iby1 * (decimal / 10)) + (iby2 * (decimal / 100)) + (iby3 * (decimal / 1000));
IB = int(ib *4);
iby = int(iby * 4);
gå = 0;
xD = 0;
yd = 0;
MX = abs (ib - distx).
min = abs (iby - disty);
Maxx = max(mx,my);
min = min/maxx;
MX = mx/maxx;
tt = 0;
medan (tt < maxx) {
tt ++;
POS();
}}
void pos() {
om (g == 1) {
digitalWrite 12, hög.
}
om (distx < ib) {
distx = distx + mx;
}
om (distx > ib) {
distx = distx - mx;
}
om (disty < iby) {
disty = disty + min;
}
om (disty > iby) {
disty = disty - min;
}
Delay(del);
analogWrite (10, distx);
analogWrite (9, disty);
}