353 lines
6.9 KiB
Text
353 lines
6.9 KiB
Text
|
|
|
|
|
|
int xPinOne = 3;
|
|
int laserPin = 4;
|
|
int xPinTwo = 5;
|
|
int yPinOne = 6;
|
|
int yPinTwo = 9;
|
|
int zPinOne = 10;
|
|
int zPinTwo = 11;
|
|
//int
|
|
int ledPin = 9; // LED connected to digital pin 9
|
|
byte incomingByte;
|
|
|
|
|
|
int currentX = 0;
|
|
int currentY = 0;
|
|
|
|
//byte imager[32768];
|
|
void setup() {
|
|
pinMode(laserPin, OUTPUT);
|
|
lasermove(0,0);
|
|
// nothing happens in setup
|
|
lasermove(currentX,currentY);
|
|
laser(0);
|
|
|
|
//Serial.begin(115200);
|
|
Serial.println("init complete");
|
|
}
|
|
|
|
|
|
void loop() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
directmove(34,31, 0);
|
|
directmove(26,122,1);
|
|
directmove(24,74, 0);
|
|
directmove(75,75,1);
|
|
directmove(69,37, 0);
|
|
directmove(68,122,1);
|
|
directmove(130,43, 0);
|
|
directmove(89,43,1);
|
|
directmove(89,43, 0);
|
|
directmove(89,121,1);
|
|
directmove(89,121, 0);
|
|
directmove(145,121,1);
|
|
directmove(91,71, 0);
|
|
directmove(121,71,1);
|
|
directmove(155,43, 0);
|
|
directmove(158,122,1);
|
|
directmove(156,122, 0);
|
|
directmove(189,121,1);
|
|
directmove(206,38, 0);
|
|
directmove(206,152,1);
|
|
directmove(206,152, 0);
|
|
directmove(282,151,1);
|
|
directmove(328,35, 0);
|
|
directmove(294,94,1);
|
|
directmove(294,93, 0);
|
|
directmove(328,166,1);
|
|
directmove(328,166, 0);
|
|
directmove(359,165,1);
|
|
directmove(359,164, 0);
|
|
directmove(363,45,1);
|
|
directmove(363,45, 0);
|
|
directmove(328,37,1);
|
|
directmove(24,172, 0);
|
|
directmove(46,481,1);
|
|
directmove(46,481, 0);
|
|
directmove(84,246,1);
|
|
directmove(84,246, 0);
|
|
directmove(127,477,1);
|
|
directmove(127,477, 0);
|
|
directmove(164,174,1);
|
|
directmove(233,198, 0);
|
|
directmove(181,201,1);
|
|
directmove(181,201, 0);
|
|
directmove(166,287,1);
|
|
directmove(166,287, 0);
|
|
directmove(162,465,1);
|
|
directmove(162,465, 0);
|
|
directmove(185,465,1);
|
|
directmove(185,465, 0);
|
|
directmove(236,200,1);
|
|
directmove(247,223, 0);
|
|
directmove(210,457,1);
|
|
directmove(248,226, 0);
|
|
directmove(290,213,1);
|
|
directmove(290,213, 0);
|
|
directmove(298,266,1);
|
|
directmove(298,266, 0);
|
|
directmove(240,283,1);
|
|
directmove(259,279, 0);
|
|
directmove(322,491,1);
|
|
directmove(317,215, 0);
|
|
directmove(324,452,1);
|
|
directmove(324,452, 0);
|
|
directmove(373,441,1);
|
|
directmove(388,223, 0);
|
|
directmove(388,472,1);
|
|
directmove(388,472, 0);
|
|
directmove(432,452,1);
|
|
directmove(432,452, 0);
|
|
directmove(393,230,1);
|
|
directmove(449,214, 0);
|
|
directmove(459,385,1);
|
|
directmove(476,207, 0);
|
|
directmove(461,385,1);
|
|
directmove(451,218, 0);
|
|
directmove(477,211,1);
|
|
directmove(466,404, 0);
|
|
directmove(466,404,1);
|
|
directmove(460,404, 0);
|
|
directmove(460,404,1);
|
|
directmove(460,404, 0);
|
|
directmove(460,404,1);
|
|
directmove(462,412, 0);
|
|
directmove(462,412,1);
|
|
directmove(460,412, 0);
|
|
directmove(460,412,1);
|
|
directmove(460,402, 0);
|
|
directmove(460,402,1);
|
|
directmove(464,404, 0);
|
|
directmove(464,404,1);
|
|
directmove(464,414, 0);
|
|
directmove(464,414,1);
|
|
directmove(462,412, 0);
|
|
directmove(462,412,1);
|
|
directmove(457,412, 0);
|
|
directmove(457,412,1);
|
|
directmove(457,409, 0);
|
|
directmove(457,409,1);
|
|
directmove(457,405, 0);
|
|
directmove(457,405,1);
|
|
directmove(463,404, 0);
|
|
directmove(463,404,1);
|
|
directmove(468,410, 0);
|
|
directmove(468,410,1);
|
|
directmove(466,411, 0);
|
|
directmove(466,411,1);
|
|
directmove(462,411, 0);
|
|
directmove(462,411,1);
|
|
directmove(463,409, 0);
|
|
directmove(463,409,1);
|
|
directmove(466,409, 0);
|
|
directmove(466,409,1);
|
|
directmove(470,417, 0);
|
|
directmove(470,417,1);
|
|
directmove(464,410, 0);
|
|
directmove(464,410,1);
|
|
directmove(462,408, 0);
|
|
directmove(462,408,1);
|
|
directmove(466,408, 0);
|
|
directmove(466,409,1);
|
|
directmove(468,409, 0);
|
|
directmove(468,409,1);
|
|
directmove(408,71, 0);
|
|
directmove(421,73,1);
|
|
directmove(451,79, 0);
|
|
directmove(469,75,1);
|
|
directmove(398,98, 0);
|
|
directmove(405,105,1);
|
|
directmove(405,105, 0);
|
|
directmove(422,117,1);
|
|
directmove(422,117, 0);
|
|
directmove(440,118,1);
|
|
directmove(440,118, 0);
|
|
directmove(457,111,1);
|
|
directmove(457,111, 0);
|
|
directmove(469,100,1);
|
|
directmove(420,40, 0);
|
|
directmove(407,54,1);
|
|
directmove(407,54, 0);
|
|
directmove(398,71,1);
|
|
directmove(398,71, 0);
|
|
directmove(390,103,1);
|
|
directmove(390,103, 0);
|
|
directmove(405,139,1);
|
|
directmove(405,139, 0);
|
|
directmove(434,139,1);
|
|
directmove(434,139, 0);
|
|
directmove(463,138,1);
|
|
directmove(463,138, 0);
|
|
directmove(471,128,1);
|
|
directmove(471,128, 0);
|
|
directmove(481,102,1);
|
|
directmove(481,102, 0);
|
|
directmove(481,67,1);
|
|
directmove(481,67, 0);
|
|
directmove(458,44,1);
|
|
directmove(458,44, 0);
|
|
directmove(421,44,1);
|
|
directmove(413,80, 0);
|
|
directmove(414,84,1);
|
|
directmove(463,86, 0);
|
|
directmove(462,90,1);
|
|
directmove(442,89, 0);
|
|
directmove(425,102,1);
|
|
directmove(425,102, 0);
|
|
directmove(440,108,1);
|
|
directmove(411,160, 0);
|
|
directmove(411,160,1);
|
|
|
|
}
|
|
|
|
void directmove(int targetx, int targety, int laserstate)
|
|
{
|
|
int deltax = 0;
|
|
float xincrement = 0;
|
|
int deltay = 0;
|
|
float yincrement = 0;
|
|
int sumdelta = 0;
|
|
int numsteps = 0;
|
|
float truexposn = 0;
|
|
float trueyposn = 0;
|
|
truexposn = float(currentX);
|
|
trueyposn = float(currentY);
|
|
deltax = targetx - currentX;
|
|
deltay = targety - currentY;
|
|
sumdelta = deltax + deltay;
|
|
//Serial.println(deltax);
|
|
//Serial.println(deltay);
|
|
// currentX = startx;
|
|
// currentY = starty;
|
|
// lasermove(currentX, currentY);
|
|
numsteps = max((max(currentX,targetx)-min(currentX,targetx)),(max(currentY,targety)-min(currentY,targety)));
|
|
//Serial.println(numsteps);
|
|
xincrement = float(deltax) / float(numsteps);
|
|
yincrement = float(deltay) / float(numsteps);
|
|
//Serial.println(xincrement);
|
|
//Serial.println(yincrement);
|
|
if (laserstate == 1){
|
|
delay(100);
|
|
laser(1);
|
|
delay(2);
|
|
}
|
|
for (int thisstep = 0; thisstep<numsteps; thisstep++)
|
|
{
|
|
truexposn = truexposn + xincrement;
|
|
trueyposn = trueyposn + yincrement;
|
|
lasermove(int(truexposn), int(trueyposn));
|
|
}
|
|
currentX = targetx;
|
|
currentY = targety;
|
|
laser(0);
|
|
delay(40);
|
|
}
|
|
|
|
|
|
void laser(int onoff)
|
|
{
|
|
if (onoff == 1){
|
|
digitalWrite(laserPin, HIGH);
|
|
}
|
|
else
|
|
{
|
|
digitalWrite(laserPin, LOW);
|
|
}
|
|
}
|
|
|
|
void lasermove(int xcoord, int ycoord)
|
|
{
|
|
xposn(xcoord);
|
|
yposn(ycoord);
|
|
//delay(5);
|
|
delayMicroseconds(35);
|
|
}
|
|
|
|
void xposn(int xcoord) {
|
|
xcoord = 500-xcoord;
|
|
//limit the x movement to max range as determined
|
|
if (xcoord > 500)
|
|
{
|
|
xcoord = 500;
|
|
}
|
|
|
|
if (xcoord <= 255)
|
|
{
|
|
analogWrite(zPinTwo, 0);
|
|
analogWrite(zPinOne, 255-xcoord);
|
|
|
|
}
|
|
else
|
|
{
|
|
analogWrite(zPinOne, 0);
|
|
analogWrite(zPinTwo, xcoord-255);
|
|
}
|
|
}
|
|
|
|
void yposn(int ycoord){
|
|
ycoord = 500 - ycoord;
|
|
if (ycoord > 500)
|
|
{
|
|
ycoord = 500;
|
|
}
|
|
|
|
if (ycoord <= 255)
|
|
{
|
|
analogWrite(yPinTwo, 0);
|
|
analogWrite(yPinOne, 255-ycoord);
|
|
//analogWrite(yPinTwo, 255-ycoord);
|
|
|
|
}
|
|
else
|
|
{
|
|
analogWrite(yPinOne, 0);
|
|
analogWrite(yPinTwo, ycoord-255);
|
|
//analogWrite(yPinOne, ycoord-255);
|
|
}
|
|
}
|
|
|
|
void lefthandedsquare(){
|
|
//right handed square
|
|
for (int i = 0; i<500; i=i+1)
|
|
{lasermove(i,0);
|
|
}
|
|
for (int i = 0; i<500; i=i+1)
|
|
{lasermove(500,i);
|
|
}
|
|
for (int i = 500; i>0; i=i-1)
|
|
{lasermove(i,500);
|
|
}
|
|
for (int i = 500; i>0; i=i-1)
|
|
{lasermove(0,i);
|
|
} }
|
|
|
|
|
|
void righthandedsquare(){
|
|
//left handed square
|
|
for (int i = 0; i<500; i=i+1)
|
|
{lasermove(0,i);
|
|
}
|
|
for (int i = 0; i<500; i=i+1)
|
|
{lasermove(i,500);
|
|
}
|
|
for (int i = 500; i>0; i=i-1)
|
|
{lasermove(500,i);
|
|
}
|
|
for (int i = 500; i>0; i=i-1)
|
|
{lasermove(i,0);
|
|
}
|
|
|
|
}
|
|
|