Created
December 26, 2013 23:42
-
-
Save pingud98/8140253 to your computer and use it in GitHub Desktop.
Arduino 2 axis laser projector 'Hello World' code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment