// defines pins
#define DIR 3
#define PUL 4
#define SW_L 5
#define SW_R 6
#define Relay 11
int customDelay, customDelayMapped;
int rt = 1000;
void setup() {
// Sets the two pins as Outputs
pinMode(PUL, OUTPUT);
pinMode(DIR, OUTPUT);
pinMode(Relay, OUTPUT);
digitalWrite(Relay, LOW);
}
void loop() {
speedControl();
if(digitalRead(SW_L) == 0)
{
digitalWrite(Relay, HIGH);
delayMicroseconds(rt);
digitalWrite(DIR, HIGH);
digitalWrite(PUL, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(PUL, LOW);
delayMicroseconds(customDelayMapped);
}
if(digitalRead(SW_L) != 0)
{
delayMicroseconds(rt);
digitalWrite(Relay, LOW);
}
if(digitalRead(SW_R) == 0)
{
digitalWrite(Relay, HIGH);
delayMicroseconds(rt);
digitalWrite(DIR, LOW);
digitalWrite(PUL, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(PUL, LOW);
delayMicroseconds(customDelayMapped);
}
if(digitalRead(SW_R) != 0)
{
delayMicroseconds(rt);
digitalWrite(Relay, LOW);
}
}
// Custom function for reading the potentiometer and mapping its value from 300 to 3000, suitable for the custom delay value in microseconds
void speedControl() {
customDelay = analogRead(A0); // Read the potentiometer value
customDelayMapped = map(customDelay, 0, 1023, 3000, 0); // Convert the analog input from 0 to 1024, to 300 to 3000
}