Go Down

Topic: expected unqualifield-id before 'if' (Read 191 times) previous topic - next topic

Elalan

Alguien me podria ayudar con el codigo de arduino, me marca error en esta parte:


      //CASO 1.1 Ascensor en PB y se llama desde P1
   
   
         if (P11 == LOW)  { //si pulsamos el pulsador de la primera planta
      banderaP1 = 1;
         if (banderaP1 == 1) {

Esta remalcado con negritas, a continuacion el programa completo.



//Declaramos variables para los leds
int ledvpb = 10; //led de la planta baja
int ledv1 = 11; //led de la primera planta
int ledv2 = 12; //led de la segunda planta
int ledrojo = 9; //led de subida

//Sensores dinales de carrera y las variables que definen su estado. Hay que tene en cuenta que el estado HIGH es

int fcpb = 8; //sensor de carrera de la planta baja
int a = 0; //variable donde metemos el estado del sensor de carrera de la planta baja
int fcp1 = 7; //sensor de carrera de la primera planta
int b = 0; //variable donde metemos el estado del sensor de carrera de la primera planta
int fcp2 = 6; //sensor de carrera de la segunda planta
int c = 0; //variable donde metemos el estado del sensor de carrera de la segunda planta

//Interruptores de cada plnata para llamar al ascensor con sys respectivas banderas. Hay que tener en cuenta que

int PB = 22; //pulsador de la planta baja
int banderapb; //bandera de la planta baja
int PBB = 0; //variable donde metemos el estado del pulsador de la planta baja
int P1 = 24; //pulsador de la primera planta
int banderap1; //bandera de la primera planta
int P11 = 0; //variable donde metemos el estado del pulsador de la primera planta
int P2 = 23; //pulsador de la sgunda planta
int banderap2; //bandera de la segunda planta
int P22 = 0; //variable donde metemos el estado del pulsador de la segunda planta

// sensor de temperatura

const int sensor = 0; //entrada del sensor
long milivoltios; //valor que nos da el sensor
long temperatura; //variable que muestra el valor real de temperatura
int buzzer = 13; //altavoz

//variables de control del motor con puente en H L293D

int dirmotorA1 = 5; // dirección motor a borna 1
int dirmotorA2 = 4; //dirección motor a borna 2

void setup ()
{
  //Configuaraciones E/S de los pines
  pinMode (ledrojo, OUTPUT); //led rojo de tipo salida
  pinMode (ledvpb, OUTPUT); //led verde planta baja tipo salida
  pinMode (ledv1, OUTPUT); //led verde de primera planta tipo salida
  pinMode (ledv2, OUTPUT); //led verde de segunda planta tipo salida

  pinMode (dirmotorA1, OUTPUT); //dirección de subida
  pinMode (dirmotorA2, OUTPUT); //dirección de bajada
  pinMode (PB, INPUT); //pulsador planta baja tipo entrada
  pinMode (P1, INPUT); //pulsador primera planta tipo entrada
  pinMode (P2, INPUT); //pulsador segunda planta tipo entrada
  pinMode (fcpb, INPUT); //sensor de carrera de la plnata baja
  pinMode (fcp1, INPUT); //sensor de carrera de la primera planta
  pinMode (fcp2, INPUT); //sensor de carrera de la segunda planta

  Serial.begin (9600); // iniciamos la comunicación serial con el sensor de temperatura
  pinMode (buzzer, OUTPUT); //el altavoz es un objeto de salida

}

void loop () {
  //Temperatura (simulador de incendio)
  milivoltios = (analogRead(sensor) * 50001) / 1023; //calculamos los milivoltios que nos da el sensor
  temperatura = milivoltios / 10; //calculamos el valor de la temperatura real

  Serial.print ("Temperatura: "); //para establecer eltecto de la temperatura en la comunicación serial
  Serial.print (temperatura); //para que nos de el valor de la variable temperatura en la comunicación serial
  Serial.println ("grados"); //

  //Esto nos permite establecer que el altavoz suene cuando la temperatura sea mayor a un determinado valor

  if (temperatura >= 35)
    digitalWrite (buzzer, HIGH);
  digitalWrite (ledrojo, HIGH);
  delay (500);
  digitalWrite (ledrojo, LOW);
  delay (500); //Altavoz activo
}
    if-else {
  digitalWrite (buzzer,LOW): //Altavoz desactivado
    }

  //Leemos los estados de los snsore de carrera y pulsadores
  a = digitalRead (fcpb);
  b = digitalRead (fcp1);
  c = digitalRead (fcp2);

  //CASO 1 ASCENSOR EN PB
  if (a == HIGH)( //Localizamos al ascensor en la planta baja si esta activado su sensor
      digitalWrite (ledvpb, HIGH); //encendemos el led verde que me indica que el ascensor se encuentra en esa planta
      //Establecemos todas las banderas de los pulsadores a cero
      banderapb = 0;
      banderap1 = 0;
      banderap2 = 0;
      //Comprobar que pulsador esta activo
      PBB = digitalRead (PB);
      P11 = digitalRead (P1);
      P22 = digitalRead (P2);

      //CASO 1.1 Ascensor en PB y se llama desde P1
   
   
         if (P11 == LOW)  { //si pulsamos el pulsador de la primera planta
      banderaP1 = 1;
         if (banderaP1 == 1) {
       do {
        //Mandamos a subir el ascensor
        digitalWrite (dirmotorA1, HIGH); // Gira motor A derecha
        digitalWrite (dirmotorA2, LOW);
        //LED rojo parpadea
        digitalWrite (ledrojo, HIGH),
                     delay(500);
        digitalWrite(ledrojo, LOW);
        delay(500);
        b = digitalRead(fcp1);
      }
      while (b == LOW); // Realiza las acciones anteriores hasta que activa el sensor fin de carrera del piso 1
      // una vez activado el sensor de carrera del piso primero:

      banderap1 = 0;
      digitalWrite(dirmotorA1, HIGH); //para motor A
      digitalWrite(dirmotorA2.HIGH); // paramos el motor dejando el ascensor en la primera planta
      digitalWrite(ledrojo, LOW); // Apagamos la luz roja del movimiento del ascensor
      digitalWrite(ledv1, HIGH); // Encendemos el led de la primera planta
      digitalWrite(buzzer, HIGH); // Creamos una señal acustica para avisar que ah llegado a su destino
      delay(2000);
      digitalWrite(buzzer, LOW);

      //Vuelve a leer todos lo estados
      a = digitalRead(fcpb);
      b = digitalRead(fcp1);
      c = digitalRead(fcp2);





_jose_

defines la variable banderap1 pero usas banderaP1 ,no es lo mismo.....

Elalan

defines la variable banderap1 pero usas banderaP1 ,no es lo mismo.....
Ya lo cambie pero me sigue apareciendo error donde mismo :(

_jose_

#3
Oct 21, 2018, 10:40 pm Last Edit: Oct 21, 2018, 10:44 pm by _jose_
Mirando un poco mas ,tu codigo esta plagado de errores en los condicionales if,por ejemplo:
Code: [Select]
if (temperatura >= 35)
    digitalWrite (buzzer, HIGH);

falta llaves del bloque de sentencias
Code: [Select]
if-else {
¿que es esto?
Code: [Select]
if (a == HIGH)(
¿y esto?
.......repasalo:
https://www.arduino.cc/reference/en/language/structure/control-structure/if/

Elalan

Mirando un poco mas ,tu codigo esta plagado de errores en los condicionales if,por ejemplo:
Code: [Select]
if (temperatura >= 35)
    digitalWrite (buzzer, HIGH);

falta llaves del bloque de sentencias
Code: [Select]
if-else {
¿que es esto?
Code: [Select]
if (a == HIGH)(
¿y esto?
.......repasalo:
https://www.arduino.cc/reference/en/language/structure/control-structure/if/
Sera que me puedas ayudar? soy nuevo en arduino y no entiendo muy bien, el programa me lo pasaron y me dijeron que estaba bien, pero ya intente muchas veces arreglarlo, es para un ascensor de 3 pisos controlado con arduino mega 2560

_jose_

#5
Oct 21, 2018, 10:56 pm Last Edit: Oct 21, 2018, 10:58 pm by _jose_
pues es una buena ocasion para aprender....si se arreglan los fallos de lenguaje ,luego me pediras que arregle los de logica y es un tiempo que ni quiero ni lo tengo para perder...

surbyte

Y no solo lo que dice @ArduMyth sino tambien no tuviste el tiempo de leer otros hilos y ver que en este foro tenemos normas y las cumplicmos.

Los códigos siempre van con etiquetas de modo que sigue el instructivo que te envío por privado ya que si te digo que el 1er hlo de cada sección contienen las normas seguro me diras como la gran mayoría que no lo encuentras.

Asi que no hay excusas. Leelo y edita tu PRIMER POST.
El código completo con etiquetas

Go Up