Salve,
sono un nuovo utente che si sta affacciando al mondo di Arduino, non con poche difficoltà.
Io vorrei creare uno sketch dove Arduino legge un segnale elettrico da un potenziometro come feebdack e muovere un motore passo passo tra due valori di voltaggio del potenziomentro…
Io ho provato a scrivere questo sketch, ma c’è qualcosa che non mi torna.
Grazie,
Marco
#include <FlexyStepper.h>
const int MOTOR_STEP_PIN = 8;
const int MOTOR_DIRECTION_PIN = 9;
FlexyStepper stepper;
double rotation = 10000;
int stato = 0;
void setup()
{
Serial.begin(9600);
stepper.connectToPins(MOTOR_STEP_PIN, MOTOR_DIRECTION_PIN);
stepper.setSpeedInStepsPerSecond(50);
stepper.setAccelerationInStepsPerSecondPerSecond(300);
// stepper.setTargetPositionInSteps(5000000);
}
void loop() {
switch (stato) {
case 0:
homing();
// stato = 1;
break;
case 1:
stepper.setCurrentPositionInSteps(0);
cycles();
// Serial.println(voltage);
// Serial.println(stato);
// stepper.setTargetPositionInSteps(0);
break;
case 2:
alt();
break;
}
}
void homing() {
stepper.processMovement();
int sensorValue = analogRead(A3);
double voltage = sensorValue * (5.0 / 1023.0);
if (voltage < 2.49) {
stepper.setTargetPositionInSteps(rotation);
Serial.println(stepper.getCurrentPositionInSteps());
Serial.println(voltage);
Serial.println(stato);
delay(10);
}
else if (voltage > 2.51)
{
stepper.setTargetPositionInSteps(-rotation);
Serial.println(stepper.getCurrentPositionInSteps());
Serial.println(voltage);
Serial.println(stato);
delay(10);
}
else {
Serial.println(voltage);
Serial.println(stato);
delay(3000);
// stepper.setCurrentPositionInSteps(0);
// bool stopFlag = false;
stato = 1;
}
}
void cycles() {
stepper.processMovement();
int sensorValue = analogRead(A3);
double voltage = sensorValue * (5.0 / 1023.0);
if (voltage < 1) {
stepper.setTargetPositionInSteps(rotation);
Serial.println(stepper.getCurrentPositionInSteps());
Serial.println(voltage);
Serial.println(stato);
delay(500);
}
else if (voltage > 4)
{
stepper.setTargetPositionInSteps(-rotation);
Serial.println(stepper.getCurrentPositionInSteps());
Serial.println(voltage);
Serial.println(stato);
delay(500);
}
else {
Serial.println(stepper.getCurrentPositionInSteps());
Serial.println(voltage);
Serial.println(stato);
// stato = 2;
}
}
void alt() {
Serial.println(stato);
}