#include <ESP32Servo.h>
// Linear Actuator Pins (L298N)
#define ENA_PIN 14
#define IN1_PIN 27
#define IN2_PIN 26
// Servo Pin
#define SERVO_PIN 18
#define Gripper_PIN 19
#define IR_Sensor 34
Servo rotationServo;
// Timing - adjust based on your actuator speed
const int LINEAR_UP_TIME = 20000; // 20 seconds for 100mm up
const int LINEAR_DOWN_TIME = 20000; // 20 seconds for 100mm down
void setup() {
// Setup linear actuator
pinMode(ENA_PIN, OUTPUT);
pinMode(IN1_PIN, OUTPUT);
pinMode(IN2_PIN, OUTPUT);
digitalWrite(ENA_PIN, HIGH);
// Setup servo
rotationServo.attach(SERVO_PIN);
}
void loop() {
// Move linear actuator 100mm UP
moveUp();
delay(1000);
// Rotate servo 90 degrees
rotationServo.write(90);
delay(2000);
// Rotate servo back to 0
rotationServo.write(0);
delay(2000);
// Move linear actuator DOWN
moveDown();
delay(1000);
}
void moveUp() {
digitalWrite(IN1_PIN, HIGH);
digitalWrite(IN2_PIN, LOW);
delay(LINEAR_UP_TIME);
stopActuator();
}
void moveDown() {
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, HIGH);
delay(LINEAR_DOWN_TIME);
stopActuator();
}
void stopActuator() {
digitalWrite(IN1_PIN, LOW);
digitalWrite(IN2_PIN, LOW);
}