Me aparece el error expected unqualified-id before 'if, aquí esta mi código:
int RELE = 2;
boolean activado, detectado;
void setup() {
pinMode(A1, INPUT); // Pin fotoresistencia
pinMode(10, OUTPUT); // Pin buzzer
pinMode(8, OUTPUT); // Pin laser
activado = false;
detectado = false;
}
void loop()
{
tone(10,200,100);
delay(1000);
tone(10,200,100);
delay(1000);
tone(10,200,100);
digitalWrite(8,HIGH);
delay(10000234567);
}
int ldr = analogRead(A1);
if (ldr > 500) {
detectado = true;
sonido();
digitalWrite(2, LOW);
}
void sonido(){
for(int i = 200;i<500;i++){
tone(10,i,10000);
}
}
b707
July 5, 2023, 5:06am
2
j-a-r-b-g:
void loop()
{
tone(10,200,100);
delay(1000);
tone(10,200,100);
delay(1000);
tone(10,200,100);
digitalWrite(8,HIGH);
delay(10000234567);
} // < ==loop final
Su función loop()
termina aquí, el resto del código se encuentra fuera de cualquier procedimiento y función, lo cual no está permitido en C++
delay(10000234567);
Al margen, ese valor excede la capacidad del tipo de dato unsigned long que admite delay() pero si fuese un valor válido ejecutaría un delay de 177 días y algunas horas.
¿No es mucho?
b707
July 5, 2023, 7:37am
4
MaximoEsfuerzo:
¿No es mucho?
Como dijiste correctamente, es más grande que 32 bits, por lo que se truncará cuando se pase a la función.
En cambio, solo quedarán 16 días
Bueno, imaginemos que queremos que el código se active 1 vez y no se reinicie.
Este es el código que usaría.
Sin embargo, cada que se activa, se reinicia una y otra vez, no se queda estático.
Solo con ese gran delay de 177 días que mencionaste, no hay otra manera de que no se reinicie?
void setup() {
pinMode(A1, INPUT); // Pin fotoresistencia
pinMode(10, OUTPUT); // Pin buzzer
pinMode(8, OUTPUT); // Pin laser
}
void loop()
{
tone(10,200,100);
delay(1000);
tone(10,200,100);
delay(1000);
tone(10,200,100);
digitalWrite(8,HIGH);
delay(10000234567);
}
b707
July 5, 2023, 8:47pm
7
Poner todo el código en el setup()
void setup() {
pinMode(A1, INPUT); // Pin fotoresistencia
pinMode(10, OUTPUT); // Pin buzzer
pinMode(8, OUTPUT); // Pin laser
tone(10,200,100);
delay(1000);
tone(10,200,100);
delay(1000);
tone(10,200,100);
digitalWrite(8,HIGH);
}
void loop()
{ }
Me ha funcionado, gracias.
Regresando al tema principal, configurando todo nuevamente, ahora me aparece: sonido' was not declared in this scope
int RELE = 2;
boolean activado, detectado;
void setup() {
pinMode(A1, INPUT); // Pin fotoresistencia
pinMode(10, OUTPUT); // Pin buzzer
pinMode(8, OUTPUT); // Pin laser
tone(10,200,100);
delay(1000);
tone(10,200,100);
delay(1000);
tone(10,200,100);
digitalWrite(8,HIGH);
activado = false;
detectado = false;
}
void loop(){
int ldr = analogRead(A1);
if (ldr > 500) {
detectado = true;
sonido();
digitalWrite(2, LOW);
}
void sonido()
{
for(int i = 200;i<500;i++){
tone(10,i,10000);
}
}
}
b707
July 5, 2023, 9:10pm
10
Use autoformato (CTRL-T) en el Arduino IDE y verá que su función sonido()
está dentro de la función loop()
.
Ya escribí sobre ello en el post #2 .
Parece que no entendiste, delay() no acepta un valor mayor a 10 millones de milisegundos como has puesto, porque excede la capacidad del tipo unsigned long , en el mejor caso el valor se trunca y entonces rondaría los 16 días.
De todos modos es poco menos que ridículo usar un delay de 16 días.
Vale, ya he cambiado el código, gracias
system
Closed
January 1, 2024, 9:30pm
13
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.