Hello,
I'm new to using Arduino. I'm using ElapsedMillis library to control my linear actuator but it's not working properly. Any help would be much appreciated.
I'm trying to move the actuator forward by 300 mm and backward by 100 mm. The speed of the linear actuator is 30mm/s
#include <elapsedMillis.h>
const int relay1 = 2;
const int relay2 = 3;
uint32_t period;
int func_variable;
void setup()
{
int func_variable = 0;
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
Serial.begin(9600);
}
void extendActuator()
{
//Serial.println("extendActuator");
digitalWrite(relay1, HIGH);
digitalWrite(relay2, LOW);
}
void retractActuator()
{
//Serial.println("retractActuator");
digitalWrite(relay1, LOW);
digitalWrite(relay2, HIGH);
}
void stopActuator()
{
//Serial.println("stopActuator");
digitalWrite(relay1, LOW);
digitalWrite(relay2, LOW);
}
void moveFixedDistance(int distance)
{
const int actuator_speed = 30;
const int reqtime = distance/30;
uint32_t period = reqtime * 1000;
elapsedMillis timeElapsed = 0;
while(timeElapsed < period )
{
extendActuator();
}
delay(5000);
}
void moveFixedDistanceDown(int distance)
{
const int actuator_speed = 30;
const int reqtime = distance/30;
uint32_t newperiod = reqtime * 1000;
elapsedMillis newtimeElapsed = 0;
while(newtimeElapsed < newperiod )
{
retractActuator();
}
delay(10000);
}
void singleFunction(int distance)
{
if( distance > 0)
{
moveFixedDistance((distance));
}
else
{
moveFixedDistanceDown(abs(distance));
}
}
void loop()
{
if( func_variable == 0)
{
func_variable++ ;
singleFunction(300);
}
if( func_variable == 1 )
{
func_variable++;
singleFunction(-100);
}
delay(15000);
}