Ajuda: Erro:"expected unqualified-id before '{' token"

Boas a todos, / Good to all,
Eu estou a fazer um programa muito importante, e está-me a dar alguns erros no programa um bocado dificeis de explicar, e são os seguintes:

Good to all,
I'm doing a very important program, and is giving me some errors in the program a bit hard to explain, and are as follows:

#include <Servo.h> 
 
{
  Servo myservo_Apf;  // Abrir Porta da Frente 
}
{
  Servo myservo_Fpf; // Fechar Porta da Frente
}
{
  int val = 0;
}
{
  int old_val = 0;
}
{
  int estate = 0;
{
  int pos = 0;
}
{
  int Rj = 0; // Rega do Jardim
}
{
  int Ex = 1; // Luz Exterior
}
{
  int Cr = 2; // Luz Corredor
}
{
  int G1 = 3; // Luz Garagem
}
{
  int Cz = 4; // Luz Cozinha
}
{
  int Q1 = 5; // Luz Quarto 1
}
{
  int R8 = 6; //  Fechar o portão
}
{
  int R7 = 7; // Abrir o portão
}
{
  int R6 = 8; // Fechar a garagem
}
{
  int R5 = 9; // Abrir a garagem
}
{
  int R2 = 12; // Fechar janela da lavandaria
}
{
  int R1 = 13; // Abrir janela da lavandaria
}
{
  int E1 = 14; // Luz de emergência
}
{
  int S1 = 0 // Botão de Emergência
}
{
  int fc1 = 1 // fim-de-curso 1
}
{
  int fc2 = 2 // fim-de-curso 2
}
{
  int fc3 = 3 // fim-de-curso 3
}
{
  int fc4 = 4 // fim-de-curso 4
}
{
  int fc5 = 5 // fim-de-curso 5
}
{
  int fc6 = 6 // fim-de-curso 6
}
{
  int fc7 = 7 // fim-de-curso 7
}
{
int fc8 = 8 // fim-de-curso 8
}
  Servo myservo_Apf;  // Abrir Porta da Frente 
  Servo myservo_Fpf; // Fechar Porta da Frente
  int val = 0;
  int old_val = 0;
  int estate = 0;
  int pos = 0;
  int Rj = 0; // Rega do Jardim
  int Ex = 1; // Luz Exterior
  int Cr = 2; // Luz Corredor
  int G1 = 3; // Luz Garagem
  int Cz = 4; // Luz Cozinha
  int Q1 = 5; // Luz Quarto 1
  int R8 = 6; //  Fechar o portão
  int R7 = 7; // Abrir o portão
  int R6 = 8; // Fechar a garagem
  int R5 = 9; // Abrir a garagem
  int R2 = 12; // Fechar janela da lavandaria
  int R1 = 13; // Abrir janela da lavandaria
  int E1 = 14; // Luz de emergência
  int S1 = 0 // Botão de Emergência
  int fc1 = 1 // fim-de-curso 1
  int fc2 = 2 // fim-de-curso 2
  int fc3 = 3 // fim-de-curso 3
  int fc4 = 4 // fim-de-curso 4
  int fc5 = 5 // fim-de-curso 5
  int fc6 = 6 // fim-de-curso 6
  int fc7 = 7 // fim-de-curso 7
int fc8 = 8 // fim-de-curso 8
}
void setup() { 
myservo_Apf.attach(SERVO);
myservo_Fpf.attach(SERVO);
myservo_Fpf.attach(10); // Definição do pino 10 para fechar a Porta da Frente
myservo_Apf.attach(11);  // Definição do pino 11 para abrir a Porta da Frente
pinMode(Rj, OUTPUT);
pinMode(Ex, OUTPUT);
pinMode(Cr, OUTPUT);
pinMode(G1, OUTPUT);
pinMode(Cz, OUTPUT);
pinMode(Q1, OUTPUT);
pinMode(R8, OUTPUT);
pinMode(R7, OUTPUT);
pinMode(R6, OUTPUT);
pinMode(R5, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(R1, OUTPUT);
pinMode(E1, OUTPUT);
pinMode(S1, INPUT);
pinMode(fc1, INPUT);
pinMode(fc2, INPUT);
pinMode(fc3, INPUT);
pinMode(fc4, INPUT);
pinMode(fc5, INPUT);
pinMode(fc6, INPUT);
pinMode(fc7, INPUT);
pinMode(fc8, INPUT);

  Serial.begin(9600); //begins serial communication
  
} 
  
void loop() {
  if(Serial.available() > 0) {
    int inByte = Serial.read();
  switch(inByte){
    
   digitalWrite(E1, LOW); //a luz de emergencia vai estar desligada
   if( digitalRead(S1) == HIGH){
   digitalWrite(E1, HIGH); // assim que o botão de emergência (S1) for ativado a luz de emergência (E1) vai ligar
   digitalWrite(5, LOW); // desliga a luz do quarto 1
   digitalWrite(4, LOW); // desliga a luz da cozinha
   digitalWrite(3, LOW); // desliga a luz da garagem
   digitalWrite(2, LOW); // desliga a luz do corredor
   digitalWrite(1, LOW); // desliga a luz exterior
   digitalWrite(0, LOW); // desliga o sistema de rega
   digitalWrite(R2, HIGH); //vai ativar o relé 2 que vai ativar o motor da janela
   if( digitalRead(fc1) ==LOW){
   digitalWrite(R2, LOW); // o relé 2 vai ser desativado assim que chega ao fim de curso 1 e o motor irá parar
   myservo_Fpf.write(-90);
   digitalWrite(R8, HIGH); //vai ativar o relé 8 que vai ativar o motor da janela
   if( digitalRead(fc7) ==LOW){
   digitalWrite(R8, LOW); // o relé 8 vai ser desativado assim que chega ao fim de curso 7 e o motor irá parar 
   digitalWrite(R6, HIGH); //vai ativar o relé 6 que vai ativar o motor da janela
   if( digitalRead(fc5) ==LOW){
   digitalWrite(R6, LOW); // o relé 6 vai ser desativado assim que chega ao fim de curso 5 e o motor irá parar  
   }
  
  case'1': // o arduino recebe "1" 
   digitalWrite(5, HIGH); // liga a luz do quarto 1
  break;

  case'2': // o arduino recebe "2" 
   digitalWrite(5, LOW); // desliga a luz do quarto 1
  break;
 
  case'3': // o arduino recebe "3" 
   digitalWrite(4, HIGH); // liga a luz da cozinha
  break;

  case'4': // o arduino recebe "4" 
    digitalWrite(4, LOW); // desliga a luz da cozinha
  break;

  case'5': // o arduino recebe "5" 
    digitalWrite(3, HIGH); // liga a luz da garagem
  break;
  
  case'6': // o arduino recebe "6" 
    digitalWrite(3, LOW); // desliga a luz da garagem
  break;
  
  case'7': // o arduino recebe "7" 
    digitalWrite(2, HIGH); // liga a luz do corredor
  break;

  case'8': // o arduino recebe "8" 
    digitalWrite(2, LOW); // desliga a luz do corredor
  break;

  case'9': // o arduino recebe "9" 
    digitalWrite(1, HIGH); // liga a luz exterior
  break;
  
  case'10': // o arduino recebe "10" 
    digitalWrite(1, LOW); // desliga a luz exterior
  break;
  
  case'17': // o arduino recebe "17"
    digitalWrite(0, HIGH); // liga o sistema de rega
  break;
  
  case'18': // o arduino recebe "18"
    digitalWrite(0, LOW); // desliga o sistema de rega
  break;
  
  case'11': // o arduino recebe "11"
    funabrirporta(); // cria uma função para abrir a porta da frente
  break;
  
  case'12': // o arduino recebe "12"
    funfecharporta(); // cria uma função para fechar a porta da frente  
  break;
  
  case'13': // o arduino recebe "13"
    funabrirjanela(); // cria uma fução para abrir a janela da lavandaria
  break;
  
  case'14': // o arduino recebe "14"
    funfecharjanela(); // cria uma fução para fechar a janela da lavandaria
  break;
  
  case'15': // o arduino recebe "15"
    funabrirportao(); // cria uma fução para abrir o portão
  break;
  
  case'16': // o arduino recebe "16"
    funfecharportao(); // cria uma fução para fechar o portão
  break;
  
  case'19': // o arduino recebe "19"
    funabrirgaragem(); // cria uma fução para abrir a garagem
  break;
  
  case'20': // o arduino recebe "20"
    funfechargaragem(); // cria uma fução para fechar a garagem
  break;
  
    }
  }
}

void funabrirporta();{
   myservo_Apf.write(90);
}

void funfecharporta();{
   myservo_Fpf.write(-90);
}

void funabrirjanela();{
   digitalWrite(R1, HIGH); //vai ativar o relé 1 que vai ativar o motor da janela
   if( digitalRead(fc2) ==LOW){
   digitalWrite(R1, LOW); // o relé 1 vai ser desativado assim que chega ao fim de curso 2 e o motor irá parar
   }
}
   
void funfecharjanela();{
   digitalWrite(R2, HIGH); //vai ativar o relé 2 que vai ativar o motor da janela
   if( digitalRead(fc1) ==LOW){
   digitalWrite(R2, LOW); // o relé 2 vai ser desativado assim que chega ao fim de curso 1 e o motor irá parar   
   }
}
   
void funabrirportao();{
   digitalWrite(R7, HIGH); //vai ativar o relé 7 que vai ativar o motor do portão
   if( digitalRead(fc8) ==LOW){
   digitalWrite(R7, LOW); // o relé 7 vai ser desativado assim que chega ao fim de curso 8 e o motor irá parar  
   }
}
   
void funfecharportao();{
   digitalWrite(R8, HIGH); //vai ativar o relé 8 que vai ativar o motor da janela
   if( digitalRead(fc7) ==LOW){
   digitalWrite(R8, LOW); // o relé 8 vai ser desativado assim que chega ao fim de curso 7 e o motor irá parar  
   }
}

void funabrirgaragem();{
   digitalWrite(R5, HIGH); //vai ativar o relé 5 que vai ativar o motor da janela
   if( digitalRead(fc6) ==LOW){
   digitalWrite(R8, LOW); // o relé 5 vai ser desativado assim que chega ao fim de curso 6 e o motor irá parar  
   }
}

void funfechargaragem();{
   digitalWrite(R6, HIGH); //vai ativar o relé 6 que vai ativar o motor da janela
   if( digitalRead(fc5) ==LOW){
   digitalWrite(R6, LOW); // o relé 6 vai ser desativado assim que chega ao fim de curso 5 e o motor irá parar  
   }
}

E os erros são: / And errors are:
PAP:2: error: expected unqualified-id before '{' token
PAP:5: error: expected unqualified-id before '{' token
PAP:8: error: expected unqualified-id before '{' token
PAP:11: error: expected unqualified-id before '{' token
PAP:14: error: expected unqualified-id before '{' token

Agradecia imenso ajuda o mais rápido possivel / I sure appreciate help as soon as possible
Obrigado / Thanks

Viva!

É um erro bastante simples, mas imagino que seja indetectavel para quem é novo nisto. Retire as chavetas TODAS desta zona do programa e tente de novo:

#include <Servo.h> 
 
{
  Servo myservo_Apf;  // Abrir Porta da Frente 
}
{
  Servo myservo_Fpf; // Fechar Porta da Frente
}
{
  int val = 0;
}
{
  int old_val = 0;
}
{
  int estate = 0;
{
  int pos = 0;
}
{
  int Rj = 0; // Rega do Jardim
}
{
  int Ex = 1; // Luz Exterior
}
{
  int Cr = 2; // Luz Corredor
}
{
  int G1 = 3; // Luz Garagem
}
{
  int Cz = 4; // Luz Cozinha
}
{
  int Q1 = 5; // Luz Quarto 1
}
{
  int R8 = 6; //  Fechar o portão
}
{
  int R7 = 7; // Abrir o portão
}
{
  int R6 = 8; // Fechar a garagem
}
{
  int R5 = 9; // Abrir a garagem
}
{
  int R2 = 12; // Fechar janela da lavandaria
}
{
  int R1 = 13; // Abrir janela da lavandaria
}
{
  int E1 = 14; // Luz de emergência
}
{
  int S1 = 0 // Botão de Emergência
}
{
  int fc1 = 1 // fim-de-curso 1
}
{
  int fc2 = 2 // fim-de-curso 2
}
{
  int fc3 = 3 // fim-de-curso 3
}
{
  int fc4 = 4 // fim-de-curso 4
}
{
  int fc5 = 5 // fim-de-curso 5
}
{
  int fc6 = 6 // fim-de-curso 6
}
{
  int fc7 = 7 // fim-de-curso 7
}
{
int fc8 = 8 // fim-de-curso 8
}
  Servo myservo_Apf;  // Abrir Porta da Frente 
  Servo myservo_Fpf; // Fechar Porta da Frente
  int val = 0;
  int old_val = 0;
  int estate = 0;
  int pos = 0;
  int Rj = 0; // Rega do Jardim
  int Ex = 1; // Luz Exterior
  int Cr = 2; // Luz Corredor
  int G1 = 3; // Luz Garagem
  int Cz = 4; // Luz Cozinha
  int Q1 = 5; // Luz Quarto 1
  int R8 = 6; //  Fechar o portão
  int R7 = 7; // Abrir o portão
  int R6 = 8; // Fechar a garagem
  int R5 = 9; // Abrir a garagem
  int R2 = 12; // Fechar janela da lavandaria
  int R1 = 13; // Abrir janela da lavandaria
  int E1 = 14; // Luz de emergência
  int S1 = 0 // Botão de Emergência
  int fc1 = 1 // fim-de-curso 1
  int fc2 = 2 // fim-de-curso 2
  int fc3 = 3 // fim-de-curso 3
  int fc4 = 4 // fim-de-curso 4
  int fc5 = 5 // fim-de-curso 5
  int fc6 = 6 // fim-de-curso 6
  int fc7 = 7 // fim-de-curso 7
int fc8 = 8 // fim-de-curso 8
}

Como este é o erro mais facilmente detectável, não fui verificar se o resto do programa está correcto.

Cumprimentos e boa sorte para o resto do trabalho.

Porque é que meteste ifs dentro do case? É provavel que funcione, mas não é de todo uma sintaxe muito correcta...

Olá!

Qual é a razão para colocar as variáveis entre chaves?

{
  int val = 0;
}

Abraço.

Fernando Garcia

A partir de

int S1 = 0 // Botão de Emergência

tu nao ta colocando o ";"(ponto-e-virgula) no final da declaração
e não precisa abrir um bloco pra cada declaração...
deixa pra usar quando for realmente necessário...no setup, loop, repetições, if-else

sketch_jan10a:21: error: expected unqualified-id before '?' token

Onde esta este erro?

const int sensor = A0;
int valorSensor = 0;
const int rele = 10;
void setup() {
//Serial.begin(9600);
pinMode(rele, OUTPUT);
}

void loop() {
valorSensor = analogRead(sensor);
//Serial.println(valorSensor);
//delay(400);

if(valorSensor > 100){
digitalWrite(rele, HIGH);
delay(750);
} else{
digitalWrite(rele, LOW);
}

}

Isso é curioso, obtive o mesmo erro. :o

Se apagar e reescrever a última chave do loop o código compila corretamente.

O valor dessa chave na tabela ASCII deveria ser 125, mas é 125 239 187 191.

Veja a imagem.

Possivelmente pode ter sido das definições de linguagem de onde o código foi copiado originalmente que causou isso. Não sabia que havia algo assim para chavetas, mas sei que existe algo semelhante para o caracter ";".

Para quem não sabe existe um caracter que não é codificado por computadores como um normal ponto e virgula que é exactamente igual ao ponto e virgula. O caracter em questão é o ponto de interrogação grego, como podem ver no site em baixo.

Imaginem colocar um desses no final duma instrução... :slight_smile: