#include <Servo.h>
#include <Stepper.h>
#include <LiquidCrystal_I2C.h>
int step = 2;
int dir =3;
Servo servo1;
Servo servo2;
int delay_time =0;
int pot = A0;
int steps=0;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// put your setup code here, to run once:
servo1.attach(9);
servo2.attach(10);
servo1.write(0); // Center position
servo2.write(0);
pinMode(step, OUTPUT);
pinMode(dir, OUTPUT);
lcd.init();
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("stepper stats");
}
void loop() {
// put your main code here, to run repeatedly:
delay_time= map(analogRead(pot),0,1023,100,10);
digitalWrite(dir, HIGH);
digitalWrite(step, HIGH);
delay(delay_time);
digitalWrite(step, LOW);
delay(delay_time);
if(steps==200){
steps=0;
}
else{
steps++;
}
if(steps>=0 && steps<=100){
servo1.write(map(steps, 0, 100, 0, 180));
if(steps==100){
servo1.write(0);
}
}
if(steps>=100 && steps<=200){
servo2.write(map(steps, 100, 200, 0, 180));
if(steps==200){
servo2.write(0);
steps=0;
}
}
float stepsPerDegree = 200 / 360.0;
float angle= steps/stepsPerDegree;
lcd.setCursor(0, 1);
lcd.print("speed: ");
lcd.print(map(analogRead(pot),0,1023,10,100));
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("angle: ");
lcd.print(angle);
lcd.setCursor(0, 3);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("steps: ");
lcd.print(steps);
}
1
2