#include <ESP32Servo.h>
#include <AccelStepper.h>
// Definovanie pinov
#define LED_PIN 15
#define POT_PIN 34 // Pin pre potenciometer (analógový vstup)
// Servo motor
Servo servo;
#define SERVO_PIN 26
// Krokový motor (Stepper motor)
#define STEPS_PER_REV 200 // Počet krokov pre jednu otáčku
AccelStepper stepper(AccelStepper::FULL4WIRE, 18, 19, 21, 22); // Piny pre krokový motor
// Globálne premenné
int prevServoAngle = 0; // Predchádzajúce natočenie serva
void setup() {
// Nastavenie serva
servo.attach(SERVO_PIN);
// Nastavenie LED diódy
pinMode(LED_PIN, OUTPUT);
// Nastavenie komunikácie cez Serial
Serial.begin(115200);
// Inicializácia krokového motora
stepper.setMaxSpeed(1000); // Maximálna rýchlosť krokového motora
stepper.setAcceleration(500); // Akcelerácia krokového motora
}
void loop() {
// Čítanie hodnoty potenciometra
int potValue = analogRead(POT_PIN);
// Mapovanie hodnoty potenciometra na uhol serva (0 - 180 stupňov)
int servoAngle = map(potValue, 0, 4095, 0, 180);
// Mapovanie hodnoty potenciometra na jas LED (0 - 255)
int ledBrightness = map(potValue, 0, 4095, 0, 255);
// Mapovanie hodnoty potenciometra na rozsah 0 - 100 pre Serial
int scaledValue = map(potValue, 0, 4095, 0, 100);
// Aktualizácia LED jasu
analogWrite(LED_PIN, ledBrightness);
// Natáčanie servo motora
servo.write(servoAngle);
// Výpočet počtu krokov pre krokový motor
int stepDifference = servoAngle - prevServoAngle;
stepper.move(stepDifference); // Nastavenie počtu krokov
stepper.run(); // Spustenie krokového motora
// Uloženie aktuálneho natočenia serva
prevServoAngle = servoAngle;
// Vypisovanie hodnoty do Serial konzoly
Serial.print("Hodnota potenciometra: ");
Serial.println(scaledValue);
// Malé oneskorenie na stabilizáciu
delay(50);
}
Loading
esp32-devkit-v1
esp32-devkit-v1