Hay un error en mi codigo, aparece "was not declared in this scope" en esta seccion aparece el error
if (Serial.print (DERECHA)) {
DERECHA ();
}
Editado por Moderador
Y no se el porque, alguien me puede ayudar. La verdad no se mucho de programacion de arduino asi que si hay otro error y me lo pueden decir tambien me ayudaria mucho
He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español@michelle_0406luna.
En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.
What value do you wish to print. Make the return type the data type of the return value. In the function, return the value, See below for more information,
Lamentablemente el error es lo de menos, todo tu código está mal.
Faltan llaves de cierre de las funciones "}".
Tienes errores de concepto por lo que usas mal las sentencias.
Por ej.
if (Serial.print (DERECHA)) {
Debería imprimir una constante (o variable) de nombre DERECHA que no existe, pero esa impresión no debe ser parámetro un if().
Imagino que lo que quieres hacer es leer el puerto serie y ver si se ingresó el texto "DERECHA" pero así no se hace.
El error "was not declared in this scope" significa que el identificador (en este caso, la función DERECHA) no ha sido declarado en el alcance actual. En tu código, estás tratando de llamar a la función DERECHA antes de definirla.
Aquí hay algunos cambios para corregir ese problema y algunos otros errores menores:
Debes declarar las funciones antes de llamarlas. En el código proporcionado, las funciones DERECHA, IZQUIERDA, ADELANTE y ATRAS se están llamando antes de ser definidas. Debes mover la definición de estas funciones antes del loop().
En lugar de Serial.print, deberías usar Serial.read para leer los datos enviados por el puerto serie y luego compararlos para determinar qué acción tomar.
Necesitas definir stepDelay y steps.
Aquí está tu código corregido:
#define X_STEP_PIN 2
#define X_DIR_PIN 5
#define Y_STEP_PIN 3
#define Y_DIR_PIN 6
#define Z_STEP_PIN 4
#define Z_DIR_PIN 7
#define ENABLE_PIN 8
int stepDelay = 250;
int steps = 1;
void setup() {
Serial.begin(115200);
pinMode(X_STEP_PIN, OUTPUT);
pinMode(X_DIR_PIN, OUTPUT);
pinMode(Y_STEP_PIN, OUTPUT);
pinMode(Y_DIR_PIN, OUTPUT);
pinMode(Z_STEP_PIN, OUTPUT);
pinMode(Z_DIR_PIN, OUTPUT);
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW);
}
void loop() {
if (Serial.available() > 0) {
char command = Serial.read();
switch (command) {
case 'D':
DERECHA();
break;
case 'I':
IZQUIERDA();
break;
case 'A':
ADELANTE();
break;
case 'R':
ATRAS();
break;
default:
// Comando desconocido
break;
}
}
}
void DERECHA() {
digitalWrite(X_DIR_PIN, HIGH);
for (int x = 0; x < steps; x++) {
digitalWrite(X_STEP_PIN, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(X_STEP_PIN, LOW);
delayMicroseconds(stepDelay);
}
}
void IZQUIERDA() {
digitalWrite(X_DIR_PIN, LOW);
for (int x = 0; x < steps; x++) {
digitalWrite(X_STEP_PIN, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(X_STEP_PIN, LOW);
delayMicroseconds(stepDelay);
}
}
void ADELANTE() {
digitalWrite(Y_DIR_PIN, HIGH);
for (int x = 0; x < steps; x++) {
digitalWrite(Y_STEP_PIN, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(Y_STEP_PIN, LOW);
delayMicroseconds(stepDelay);
}
}
void ATRAS() {
digitalWrite(Y_DIR_PIN, LOW);
for (int x = 0; x < steps; x++) {
digitalWrite(Y_STEP_PIN, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(Y_STEP_PIN, LOW);
delayMicroseconds(stepDelay);
}
}
En este código, he corregido los errores y he usado un switch para seleccionar la acción a realizar basada en el comando recibido por el puerto serie. Asegúrate de enviar los comandos correctos (D para derecha, I para izquierda, A para adelante y R para atrás) a través del puerto serie.