Hola a Todos
En el código adjunto, me notifica el siguiente error en la utilización de goto.(en la función: void fin_carrera() )
El resto del código funciona bien.
copia de mensaje de error:
...../Arduino:1.8.3 (Windows 10), Tarjeta:"Arduino/Genuino Uno"
C:\DATOS INICIO\DATOS\ARDU-ARCHIVOS\A PROGRAMAS CREADOS\M_CONSULTA_FORO\M_CONSULTA_FORO.ino: In function 'void fin_carrera()':
M_CONSULTA_FORO:187: error: label 'EtiquetaGOTO' used but not defined
-
goto EtiquetaGOTO; * -
^*
exit status 1
label 'EtiquetaGOTO' used but not defined
Este reporte podría tener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias...../
/......
.
.
Podéis aclarar su utilización ???
Un saludo !!!!
![]()
.
.
.
/*
*
* MOTOR PAP IF - SWITCH - FIN DE CARRERA.
*
* Al pulsar (2) INICIA programa
* Se suceden 4 movimientos alternativos del motor con parada intermedia.
* FINAL con un tiempo de REPOSO antes de volver a quedar a la espera de una nueva pulsacion.
*
* Pin (7) solamente enciende mientras actua programa.
* Fin de carrera(4) interrumpe y finaliza programa.
*
*/
// ***************************** ENGRAL agosto 2023 *****************************
const int REPOSO = 2000; // REPOSO final
const int APAGADO = 500; // tiempo apagado final de motor y entre cambios de sentido.
const int INTERMIT = 200; // tiempo intermitente.
const int INTERVALO = 3; // Tiempo de INTERVALO entre pasos en milisegundos (Velocidad del Motor)
int PasosB1 = 100;
int PasosS1 = 100;
int PasosB2 = 100;
int PasosS2 = 100;
int Variable = 0;
void setup()
{
pinMode(12, OUTPUT); // Pin 11 intermitente
pinMode(11, OUTPUT); // Pin 11 conecta a IN4 de CI- ULN200
pinMode(10, OUTPUT); // Pin 10 conecta a IN3
pinMode( 9, OUTPUT); // Pin 9 conecta a IN2
pinMode( 8, OUTPUT); // Pin 8 conecta a IN1
pinMode( 7, OUTPUT); // Pin 7 enciende mientras funciona motor
pinMode( 2, INPUT); // Pin 2 Pulsador
pinMode( 4, INPUT); // Pin 4 Fin Carrera RESET
Serial.begin(9600);
Serial.println("");
Serial.println("======== M_MOTOR_PAP_PULS_FIN_CARRERA =============");
Serial.println("");
}
void loop()
{
if (digitalRead(2) == HIGH) // Pulsador en HIGH activa el programa.
{
IMPRIVARIABLE();
switch(Variable) // -.-.-.-.-.-EMPIEZA SWITCH.-.-.-.-.-.-.-
{
case 0: // ********************************************************
for (int Mot = 0; Mot < PasosB1; Mot++) // FOR: Repite los pasos PasosB1 "X"veces BAJA 1
{
fin_carrera();
digitalWrite(7,HIGH);
BAJA();
}
Variable++;
case 1: // *****************************************************
apagado();
IMPRIVARIABLE();
for (int Mot = 0; Mot < PasosS1; Mot++) // FOR: Repite los pasos PasosS1 "X"veces SUBE 1.
{
fin_carrera();
SUBE();
}
Variable++;
case 2: //*******************************************************
apagado();
IMPRIVARIABLE();
for (int Mot = 0; Mot < PasosB2; Mot++) // FOR: Repite los pasos PasosB2 "X" veces BAJA 2
{
fin_carrera();
BAJA();
}
Variable++;
case 3: // *****************************************************
apagado();
IMPRIVARIABLE();
for (int Mot = 0; Mot < PasosS2; Mot++) // FOR: Repite los pasosS2 "X" veces SUBE 2.
{
fin_carrera();
SUBE();
}
if (Variable >= 3)
{
EtiquetaGOTO: //.................... AQUI ACTUA : GOTO
Variable = 0; // Reinicia "Variable" a "0"
digitalWrite(7,LOW); // Apaga led 7
apagado(); // Apaga todo
Serial.println("=============== FIN DE PROGRAMA ===================");
}
delay (REPOSO ); // Tiempo de REPOSO FINAL.
}
}
else
{
Serial.println("======================== TOCA PULSADOR");
interm();
}
}
// ************************************* FUNCIONES **********************************
void IMPRIVARIABLE()
{
Serial.print("Variable: ");
Serial.println(Variable);
}
void BAJA()
{ // Pasos BAJA
digitalWrite(11, LOW); // Pasos motor
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(INTERVALO);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(INTERVALO);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(INTERVALO);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(INTERVALO);
}
void SUBE()
{ // Pasos SUBE
digitalWrite(11, HIGH); // Pasos motor
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(INTERVALO);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(INTERVALO);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(INTERVALO);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(INTERVALO);
}
void apagado()
{ // Apagado del Motor
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(APAGADO);
}
void interm()
{
digitalWrite(12, HIGH);
delay(INTERMIT);
digitalWrite(12, LOW);
delay(INTERMIT);
}
void fin_carrera()
{
if (digitalRead(4) == LOW)
{
Serial.println("======================= FIN CARRERA !!!");
goto EtiquetaGOTO;
}
}
// ************************************ FIN FUNCIONES ********************************
// ====================================== FIN ====================================