int contador, pos_actual, nueva_pos, repet, i, primera_vez, enviar_mensajes;
void setup() {
#define SW_IN 8
#define SW_OUT 7
#define A498_ENABLE 12
#define A498_DIR 11
#define A498_STEP 10
pinMode(SW_IN, INPUT);
pinMode(SW_OUT, INPUT);
pinMode(A498_ENABLE, OUTPUT);
pinMode(A498_DIR, OUTPUT);
pinMode(A498_STEP, OUTPUT);
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Presione P para iniciar simulación");
contador = 0;
while(Serial.read() != 'P');
Serial.println("Busco el sensor de sujección...");
digitalWrite(A498_DIR, HIGH);
while(digitalRead(SW_IN)==LOW){
digitalWrite(A498_STEP, HIGH);
delay(1);
digitalWrite(A498_STEP, LOW);
delay(1);
}
Serial.println("Busco el sensor de no sujección...");
digitalWrite(A498_DIR, LOW);
while(digitalRead(SW_OUT)==LOW){
digitalWrite(A498_STEP, HIGH);
delay(1);
digitalWrite(A498_STEP, LOW);
delay(1);
contador++;
}
Serial.print("Stepper_callb = ");
Serial.println(contador);
Serial.println("Posición del motor actual: 0");
pos_actual = 0;
primera_vez = 1;
enviar_mensajes = 0;
}
String str;
void loop() {
// put your main code here, to run repeatedly:
if(primera_vez==1 || enviar_mensajes==1){
Serial.print("Ingrese una nueva posición: [0 : ");
Serial.print(contador);
Serial.println("]");
primera_vez = 0;
}
if(Serial.available()>0){
str = Serial.readStringUntil('\n');
nueva_pos = str.toInt();
}
i = 0;
if(nueva_pos >= pos_actual){
digitalWrite(A498_DIR, HIGH);
repet = nueva_pos - pos_actual;
while(i < repet){
digitalWrite(A498_STEP, HIGH);
delay(1);
digitalWrite(A498_STEP, LOW);
delay(1);
i++;
}
}
else{
digitalWrite(A498_DIR, LOW);
repet = pos_actual - nueva_pos;
while(i < repet){
digitalWrite(A498_STEP, HIGH);
delay(1);
digitalWrite(A498_STEP, LOW);
delay(1);
i++;
}
}
enviar_mensajes = 0;
if(pos_actual != nueva_pos){
pos_actual = nueva_pos;
Serial.print("Posición motor de pasos actual: ");
Serial.println(pos_actual);
enviar_mensajes = 1;
}
delay(10); // this speeds up the simulation
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1
SW_IN
SW_OUT