3d printer stepmotor

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

int CLK=2;
int DT=3;
int SW=4;

int IR=5;

int BUZZ=6;

int ENABLE=7;
int STEP=8;
int DIRECTION=9;

int R=10;
int G=11;
int B=12;

void encoder();
void menu();
void begin_menu();
void motor();
void motor_test();
void emergency();
void heatbed_display();
void heatbed_play();

int old_clk=0;
int old_dt=0;
int old_sw=0;
int dt_in=0;
int clk_in=0;
int sw_in=0;
int encoder_result=0;
int sw_result=0;
int menu_page=0;
float angle=0;
int heatbed=0;
int heatbed_10=0;
int heatbed_1=0;
int heatbed_change=0;
int heatbed_2=0;
int heatbed_20=0;
int heatbed_sw=0;
int ir_sensor=0;
int ir_count=0;
int buzz_count=0;
unsigned int heatbed_timer=0;
unsigned int buzz_timer=0;
unsigned int emergency_timer=0;
int timer_count=0;
int timer=0;

void setup()
{
lcd.init();
pinMode(IR, INPUT_PULLUP);
pinMode(DIRECTION, OUTPUT);
pinMode(ENABLE, OUTPUT);
pinMode(STEP, OUTPUT);
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(CLK, INPUT);
pinMode(DT, INPUT);
pinMode(SW, INPUT);
begin_menu();
}

void loop()
{
ir_sensor=digitalRead(IR);
timer++;
encoder();

if(menu_page==211)
{
angle=angle+(encoder_result*1.8);
if(sw_result==1)motor_test();
}
if(menu_page==200)
{
angle=0;
digitalWrite(STEP,LOW);
}
if(menu_page==311)
{
heatbed=heatbed+encoder_result;
if(heatbed>30)heatbed=30;
if(heatbed<0)heatbed=0;
}
if(menu_page==300)
{
heatbed=0;
heatbed_timer=0;
heatbed_sw=0;
buzz_timer=0;
digitalWrite(R,LOW);
digitalWrite(G,LOW);
digitalWrite(B,LOW);
}
if(heatbed_sw==1)heatbed_play();
if(menu_page==410||menu_page==420)emergency();

heatbed_display();
delay(1);
menu();
}

void motor()
{
digitalWrite(STEP, HIGH);
delayMicroseconds(1000);
digitalWrite(STEP, LOW);
delayMicroseconds(1000);
}

void emergency()
{
emergency_timer++;
if(ir_sensor==1)ir_count++;
else if(ir_sensor==0)ir_count=0;
if(ir_count==0)
{
lcd.print("DANGER");
if(buzz_count<5)
{
if((emergency_timer%20)<11)
{
timer_count=1;
digitalWrite(BUZZ,HIGH);
}
else if((emergency_timer%20)>10)
{
if(timer_count==1)buzz_count++;
digitalWrite(BUZZ,LOW);
timer_count=0;
}
}
else
{
digitalWrite(BUZZ,LOW);
}
digitalWrite(STEP,LOW);
}
else if(ir_count>5)
{
timer_count=0;
digitalWrite(BUZZ,LOW);
lcd.print("STABLE");
motor();
buzz_count=0;
}
}

void heatbed_display()
{
heatbed_10=heatbed/10;
heatbed_1=heatbed%10;
heatbed_20=heatbed_change/10;
heatbed_2=heatbed_change%10;
}

void heatbed_play()
{
if(heatbed_sw==1)
{
heatbed_timer++;
}
if(heatbed_change<heatbed)
{
if(heatbed_timer%30>28)heatbed_change++;
}
if(heatbed_change==heatbed)
{
buzz_timer++;
digitalWrite(DIRECTION,LOW);
motor();
if((buzz_timer%30)<10)
{
digitalWrite(R,HIGH);
digitalWrite(G,LOW);
digitalWrite(B,LOW);
}
if((buzz_timer%30)>=10&&(buzz_timer%30)<20)
{
digitalWrite(R,LOW);
digitalWrite(G,HIGH);
digitalWrite(B,LOW);
}
if((buzz_timer%30)>=20)
{
digitalWrite(R,LOW);
digitalWrite(G,LOW);
digitalWrite(B,HIGH);
}
}
}
void begin_menu()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("3D PRINTER A001");
lcd.setCursor(0,1);
lcd.print("READY TO DRIVE");
delay(5000);
}

void encoder()
{
clk_in=digitalRead(CLK);
dt_in=digitalRead(DT);
sw_in=digitalRead(SW);
if(old_clk==1&&clk_in==0)
{
if(dt_in==1)encoder_result=1;
}
else if(old_dt==1&&dt_in==0)
{
if(clk_in==1)encoder_result=-1;
}
else encoder_result=0;
if(old_sw==1&&sw_in==0)sw_result=1;
else sw_result=0;
old_clk=clk_in;
old_dt=dt_in;
old_sw=sw_in;
}

void motor_test()
{
if(angle>0)
{
digitalWrite(DIRECTION,LOW);
for(int i=0;i<(angle/1.8);i++)
{
motor();
}
}
if(angle<0)
{
digitalWrite(DIRECTION,HIGH);
for(int i=0;i<(-1*angle/1.8);i++)
{
motor();
}
}
}

void menu()
{
switch(menu_page)
{
case 0:
lcd.setCursor(0,0);
lcd.print("X: Y: A001");
lcd.setCursor(0,1);
lcd.print("3D PRINTER READY");
if(sw_result==1)
{
lcd.clear();
menu_page=100;
}
break;

case 100:
lcd.setCursor(0,0);
lcd.print(">EXIT"); 
lcd.setCursor(0,1);
lcd.print(" MOTOR TEST");
if(sw_result==1)
{
  lcd.clear();
  menu_page=0;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=200;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=400;
}
break;

case 200:
lcd.setCursor(0,0);
lcd.print(" EXIT");
lcd.setCursor(0,1);
lcd.print(">MOTOR TEST");
if(sw_result==1)
{
  lcd.clear();
  menu_page=210;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=300;
}    
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=100;
}
break;

case 210:
lcd.setCursor(0,0);
lcd.print(">ANGLE");
lcd.setCursor(9,0);
lcd.print(angle);
lcd.setCursor(0,1);
lcd.print(" RETURN");
if(sw_result==1)
{
  lcd.clear();
  menu_page=211;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=220;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=220;
}
break;

case 211:
lcd.setCursor(0,0);
lcd.print(">ANGLE");
lcd.setCursor(9,0);
lcd.print(angle);
lcd.setCursor(0,1);
lcd.print(" RETURN");
if(sw_result==1)
{
  lcd.clear();
  menu_page=210;
}
break;

case 220:
lcd.setCursor(0,0);
lcd.print(" ANGLE");
lcd.setCursor(9,0);
lcd.print(angle);
lcd.setCursor(0,1);
lcd.print(">RETURN");
if(sw_result==1)
{
  lcd.clear();
  menu_page=200;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=210;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=210;
}
break;

case 300:
lcd.setCursor(0,0);
lcd.print(" MOTORTEST");
lcd.setCursor(0,1);
lcd.print(">HEATING BED");
if(sw_result==1)
{
  lcd.clear();
  menu_page=310;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=400;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=200;
}
break;

case 310:
lcd.setCursor(0,0);
lcd.print(">HEATING: ");
lcd.setCursor(11,0);
lcd.print(heatbed_20);
lcd.setCursor(12,0);
lcd.print(heatbed_2);
lcd.setCursor(13,0);
lcd.print("/");
lcd.setCursor(14,0);
lcd.print(heatbed_10);
lcd.setCursor(15,0);
lcd.print(heatbed_1);
lcd.setCursor(0,1);
lcd.print(" RETURN");
if(sw_result==1)
{
  lcd.clear();
  menu_page=311;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=320;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=320;
}
break;

case 311:
lcd.setCursor(0,0);
lcd.print(">HEATING: ");
lcd.setCursor(11,0);
lcd.print(heatbed_20);
lcd.setCursor(12,0);
lcd.print(heatbed_2);
lcd.setCursor(13,0);
lcd.print("/");
lcd.setCursor(14,0);
lcd.print(heatbed_10);
lcd.setCursor(15,0);
lcd.print(heatbed_1);
lcd.setCursor(0,1);
lcd.print(" RETURN");
if(sw_result==1)
{
  lcd.clear();
  menu_page=310;
  heatbed_sw=1;
}
break;

case 320:
lcd.setCursor(0,0);
lcd.print(" HEATING: ");
lcd.setCursor(11,0);
lcd.print(heatbed_20);
lcd.setCursor(12,0);
lcd.print(heatbed_2);
lcd.setCursor(13,0);
lcd.print("/");
lcd.setCursor(14,0);
lcd.print(heatbed_10);
lcd.setCursor(15,0);
lcd.print(heatbed_1);
lcd.setCursor(0,1);
lcd.print(">RETURN");
if(sw_result==1)
{
  lcd.clear();
  menu_page=300;
  heatbed=0;
  heatbed_change=0;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=310;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=310;
}
break;

case 400:
lcd.setCursor(0,0);
lcd.print(" HEATING BED");
lcd.setCursor(0,1);
lcd.print(">EMERGENCY SET");
if(sw_result==1)
{
  lcd.clear();
  menu_page=410;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=500;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=300;
}
break;

case 410:
digitalWrite(DIRECTION,LOW);
lcd.setCursor(0,0);
lcd.print(">STATE:");
lcd.setCursor(0,1);
lcd.print(" RETURN");
lcd.setCursor(8,0);
if(encoder_result==1)
{
  lcd.clear();
  menu_page=420;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=420;
}
break;

case 420:
digitalWrite(DIRECTION,LOW);
lcd.setCursor(0,0);
lcd.print(" STATE:");
lcd.setCursor(0,1);
lcd.print(">RETURN");
lcd.setCursor(8,0);
if(sw_result==1)
{
  lcd.clear();
  menu_page=400;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=410;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=410;
}
break;

case 500:
lcd.setCursor(0,0);
lcd.print(" EMERGENCY SET");
lcd.setCursor(0,1);
lcd.print(">EXIT");
if(sw_result==1)
{
  lcd.clear();
  menu_page=0;
}
if(encoder_result==1)
{
  lcd.clear();
  menu_page=200;
}
if(encoder_result==-1)
{
  lcd.clear();
  menu_page=400;
}
break;

}
}

Ah.

Of course!

Actually I have several problems, I am not a mind reader nor can I see what you have. We also know you have a problem following directions, did you read the forum guidelines, if so you would have posted that "code" in code tags. Also your problem must be a secret as you have not told us what it is or what it is and is not doing. A simple annotated schematic as wired would help a lot. A frizzy picture is useless. Posting links to Technical information" on the hardware pieces would help us as well. Realize if you help us we can help you. If you do not help then you get to solve it yourself which apparently is not possible.

Please edit your post to add code tags, and a question.