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 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); } }