Hola, obtengo este error al intentar subir mi código.
Este es mi código.
int Pir = 5;
int RELE = 2;
int RELE2 = 3;
boolean activado, detectado;
#include <SPI.h> // incluye libreria bus SPI
#include <MFRC522.h> // incluye libreria especifica para MFRC522
#define RST_PIN 6 // constante para referenciar pin de reset
#define SS_PIN 53 // constante para referenciar pin de slave select
MFRC522 mfrc522(SS_PIN, RST_PIN); // crea objeto mfrc522 enviando pines de slave select y reset
byte LecturaUID[4]; // crea array para almacenar el UID leido
byte Usuario1[4]= {0x03, 0xD2, 0x7E, 0x1A} ; // UID de tarjeta leido en programa 1
byte Usuario2[4]= {0x06, 0x76, 0x25, 0xD9} ; // UID de llavero leido en programa 1
void setup() {
pinMode(A1, INPUT); // Pin fotoresistencia
pinMode(10, OUTPUT); // Pin buzzer
pinMode(4, OUTPUT); // Pin laser
pinMode(2, OUTPUT); //Rele 1
pinMode(3, OUTPUT); //Rele 2
pinMode(5, INPUT); //Modulo PIR
Serial.begin(9600); //Iniciamos comunicación
tone(10, 200, 100); //Sonido de Inicio
delay(1000);
tone(10, 200, 100);
delay(1000);
tone(10, 200, 100);
digitalWrite(4, HIGH); //Configuración de los Modulos Rele
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
activado = false;
detectado = false;
{
{
Serial.begin(9600); // inicializa comunicacion por monitor serie a 9600 bps
SPI.begin(); // inicializa bus SPI
mfrc522.PCD_Init(); // inicializa modulo lector
Serial.println("Listo"); // Muestra texto Listo
}
}
}
void loop() {
rfid();
int ldr = analogRead(A1); //Se toma lectura
if (ldr > 500) { //Si es mayor a 500 la lectura
detectado = true;
sonido();
rele();
delay(1000);
rfid();
}
{
if(digitalRead(Pir) == HIGH)
{
digitalWrite(2, LOW);
digitalWrite(3, LOW);
delay(1000);
}
else
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
}
}
void sonido() { //Alarma a sonar
for (int i = 200; i < 500; i++) {
tone(10, i, 10000);
}
}
void rele(){ //Funcionamiento de los Módulos Rele
digitalWrite(2,LOW);
digitalWrite(3,LOW);
delay(80000);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
rfid();
}
void rfid() {
if ( ! mfrc522.PICC_IsNewCardPresent()) // si no hay una tarjeta presente
return; // retorna al loop esperando por una tarjeta
if ( ! mfrc522.PICC_ReadCardSerial()) // si no puede obtener datos de la tarjeta
return; // retorna al loop esperando por otra tarjeta
Serial.print("UID:"); // muestra texto UID:
for (byte i = 0; i < mfrc522.uid.size; i++) { // bucle recorre de a un byte por vez el UID
if (mfrc522.uid.uidByte[i] < 0x10){ // si el byte leido es menor a 0x10
Serial.print(" 0"); // imprime espacio en blanco y numero cero
}
else{ // sino
Serial.print(" "); // imprime un espacio en blanco
}
Serial.print(mfrc522.uid.uidByte[i], HEX); // imprime el byte del UID leido en hexadecimal
LecturaUID[i]=mfrc522.uid.uidByte[i]; // almacena en array el byte del UID leido
}
Serial.print("\t"); // imprime un espacio de tabulacion
if(comparaUID(LecturaUID, Usuario1)) // llama a funcion comparaUID con Usuario1
off();
Serial.println("Bienvenido Usuario 1");// si retorna verdadero muestra texto bienvenido
else if(comparaUID(LecturaUID, Usuario2)) // llama a funcion comparaUID con Usuario2
Serial.println("Bienvenido Usuario 2"); // si retorna verdadero muestra texto bienvenida
else // si retorna falso
Serial.println("No te conozco"); // muestra texto equivalente a acceso denegado
mfrc522.PICC_HaltA(); // detiene comunicacion con tarjeta
}
boolean comparaUID(byte lectura[],byte usuario[]) // funcion comparaUID
{
for (byte i=0; i < mfrc522.uid.size; i++){ // bucle recorre de a un byte por vez el UID
if(lectura[i] != usuario[i]) // si byte de UID leido es distinto a usuario
return(false); // retorna falso
}
return(true); // si los 4 bytes coinciden retorna verdadero
}
void off(){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
}
El error aparece en void rfid()
Serial.print("\t"); // imprime un espacio de tabulacion
if(comparaUID(LecturaUID, Usuario1)) // llama a funcion comparaUID con Usuario1
off();
Serial.println("Bienvenido Usuario 1");// si retorna verdadero muestra texto bienvenido
else if(comparaUID(LecturaUID, Usuario2)) // llama a funcion comparaUID con Usuario2
Serial.println("Bienvenido Usuario 2"); // si retorna verdadero muestra texto bienvenida
else // si retorna falso
Serial.println("No te conozco"); // muestra texto equivalente a acceso denegado
mfrc522.PICC_HaltA(); // detiene comunicacion con tarjeta
Código de Error :
C:\Users\jebot\AppData\Local\Temp\.arduinoIDE-unsaved202379-12276-ari2u3.na0p\sketch_aug9a\sketch_aug9a.ino: In function 'void rfid()':
C:\Users\jebot\AppData\Local\Temp\.arduinoIDE-unsaved202379-12276-ari2u3.na0p\sketch_aug9a\sketch_aug9a.ino:159:11: error: 'else' without a previous 'if'
else if(comparaUID(LecturaUID, Usuario2)) // llama a funcion comparaUID con Usuario2
^~~~
exit status 1
Compilation error: 'else' without a previous 'if'