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