This commit is contained in:
commit
c37359359d
1 changed files with 461 additions and 0 deletions
461
laser alphabet.pde
Normal file
461
laser alphabet.pde
Normal file
|
|
@ -0,0 +1,461 @@
|
||||||
|
|
||||||
|
|
||||||
|
int delayone = 2;
|
||||||
|
int delaytwo = 1;
|
||||||
|
int delaythree = 1;
|
||||||
|
int delayfour = 1;
|
||||||
|
|
||||||
|
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(0,0,0);
|
||||||
|
for (int megaletter = int('a'); megaletter < (int('z')+1); megaletter++){
|
||||||
|
drawletter(char(megaletter), 9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawletter(char alphabeat, int loops)
|
||||||
|
{for (int passes = 0; passes <loops; passes++) {
|
||||||
|
switch(alphabeat){
|
||||||
|
case 'a':
|
||||||
|
|
||||||
|
directmove(0,0,0);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(250,500,0);
|
||||||
|
directmove(250,0,1);
|
||||||
|
//directmove(250,500,1);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
|
||||||
|
directmove(0,0,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(490,50,1);
|
||||||
|
directmove(480,200,1);
|
||||||
|
directmove(450,250,1);
|
||||||
|
directmove(400,500,1);
|
||||||
|
directmove(350,400,1);
|
||||||
|
directmove(300,200,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(200,250,1);
|
||||||
|
directmove(100,500,1);
|
||||||
|
directmove(50,450,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
directmove(400,500,0);
|
||||||
|
directmove(450,400,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(450,0,1);
|
||||||
|
directmove(50,0,1);
|
||||||
|
directmove(0,250,1);
|
||||||
|
directmove(50,500,1);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(100,350,1);
|
||||||
|
directmove(250,500,1);
|
||||||
|
directmove(400,250,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'e':
|
||||||
|
directmove(500,500,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(250,450,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
break;
|
||||||
|
case 'f':
|
||||||
|
directmove(500,500,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(300,0,1);
|
||||||
|
directmove(300,250,1);
|
||||||
|
directmove(300,0,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'g':
|
||||||
|
directmove(400,500,0);
|
||||||
|
directmove(450,400,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(450,0,1);
|
||||||
|
directmove(50,0,1);
|
||||||
|
directmove(0,250,1);
|
||||||
|
directmove(0,450,1);
|
||||||
|
directmove(150,450,1);
|
||||||
|
directmove(150,300,1);
|
||||||
|
directmove(150,500,1);
|
||||||
|
directmove(150,300,1);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'h':
|
||||||
|
directmove(0,0,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(500,500,0);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(250,500,0);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(250,500,1);
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'i':
|
||||||
|
directmove(500,200,0);
|
||||||
|
directmove(500,200,1);
|
||||||
|
directmove(500,300,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(0,250,1);
|
||||||
|
directmove(0,200,1);
|
||||||
|
directmove(0,300,1);
|
||||||
|
directmove(0,250,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'j':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(500,500,1);
|
||||||
|
directmove(200,500,1);
|
||||||
|
directmove(0,250,1);
|
||||||
|
//directmove(100,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'k':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(400,500,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(100,500,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'l':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(0,300,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'm':
|
||||||
|
|
||||||
|
directmove(500,120,1);
|
||||||
|
directmove(250,240,1);
|
||||||
|
directmove(500,360,1);
|
||||||
|
directmove(0,480,1);
|
||||||
|
directmove(500,360,1);
|
||||||
|
directmove(250,240,1);
|
||||||
|
directmove(500,120,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
directmove(0,0,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'o':
|
||||||
|
directmove(50,50,0);
|
||||||
|
directmove(450,50,1);
|
||||||
|
directmove(450,450,1);
|
||||||
|
directmove(50,450,1);
|
||||||
|
directmove(50,50,1);
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
directmove(0,0,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(500,450,1);
|
||||||
|
directmove(300,450,1);
|
||||||
|
directmove(300,0,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
break;
|
||||||
|
case 'q':
|
||||||
|
directmove(50,50,0);
|
||||||
|
directmove(450,50,1);
|
||||||
|
directmove(450,450,1);
|
||||||
|
directmove(50,450,1);
|
||||||
|
directmove(100,300,0);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(50,450,1);
|
||||||
|
directmove(50,50,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'r':
|
||||||
|
directmove(0,0,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(500,450,1);
|
||||||
|
directmove(450,500,1);
|
||||||
|
directmove(300,450,1);
|
||||||
|
directmove(300,0,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(300,0,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
directmove(500,500,0);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(250,0,1);
|
||||||
|
directmove(250,500,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(500,500,0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 't':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(500,500,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(0,250,1);
|
||||||
|
directmove(500,250,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'u':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
directmove(500,0,0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,250,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'w':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,100,1);
|
||||||
|
directmove(300,250,1);
|
||||||
|
directmove(0,400,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'x':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(0,500,1);
|
||||||
|
directmove(500,500,0);
|
||||||
|
directmove(0,0,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case 'y':
|
||||||
|
directmove(0,250,0);
|
||||||
|
directmove(250,250,1);
|
||||||
|
directmove(500,0,1);
|
||||||
|
directmove(250,250,1);
|
||||||
|
directmove(500,500,1);
|
||||||
|
directmove(250,250,1);
|
||||||
|
directmove(0,250,0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'z':
|
||||||
|
directmove(500,0,0);
|
||||||
|
directmove(500,500,1);
|
||||||
|
directmove(0,0,1);
|
||||||
|
directmove(0,500,1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ' ':
|
||||||
|
directmove(0,0,0);
|
||||||
|
default:
|
||||||
|
directmove(0,0,0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}}}
|
||||||
|
|
||||||
|
|
||||||
|
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(delayone);
|
||||||
|
laser(1);
|
||||||
|
delay(delaytwo);
|
||||||
|
}
|
||||||
|
for (int thisstep = 0; thisstep<numsteps; thisstep++)
|
||||||
|
{
|
||||||
|
truexposn = truexposn + xincrement;
|
||||||
|
trueyposn = trueyposn + yincrement;
|
||||||
|
lasermove(int(truexposn), int(trueyposn));
|
||||||
|
}
|
||||||
|
currentX = targetx;
|
||||||
|
currentY = targety;
|
||||||
|
//delay(delaythree);
|
||||||
|
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(delayfour);
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue