hola muy buenas noches a todos , me e vuelto loco intentando desifrar por que mi codigo esta mal y pido ayuda por favor , resulta que tengo este codigo
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
Servo microservo9g;
#define SS_PIN 10
#define RST_PIN 9
// modulo RC522
MFRC522 mfrc522(SS_PIN, RST_PIN);
// Leds indicadores acesso liberado o negado
int led_liberado = 4;
int led_negado = 7;
int TriggerPin = 6; // declaramos la palabra trigger como un tipo entero y al mismo tiempo reemplaza al pin 9
int EchoPin = 5; // declaramos la palabra echo como un tipo entero y al mismo tiempo reemplaza al pin 8
char st[20];
float distancia;
long tiempo;
void setup()
{
pinMode(led_liberado, OUTPUT);
pinMode(led_negado, OUTPUT);
// Define el puerto 3 para el servo
microservo9g.attach(3);
// Move o servo para a posicao inicial (cancela fechada)
microservo9g.write(80);
// Inicia a serial
Serial.begin(9600);
// Inicia SPI bus
SPI.begin();
// Inicia MFRC522
mfrc522.PCD_Init();
//Mensajes iniciales en el monitor de serie
Serial.println("Aproxime su tarjeta del lector ...");
Serial.println();
pinMode(2,INPUT);
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
// Espera la aproximación de la tarjeta
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Selecciona uno de los cartones
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
// UID de muestra para serial
Serial.print("UID da tag :");
String conteudo= "";
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte*, HEX);*
conteudo.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte*, HEX));*
}
Serial.println();
Serial.print("Mensagem : ");
conteudo.toUpperCase();
// Prueba si se ha leído la tarjeta1
if (conteudo.substring(1) == "21 D5 0F 1A")
{
// Levanta a cancela e acende o led verde
microservo9g.write(-90);
digitalWrite(led_liberado, HIGH);
Serial.println("Tarjeta1 - Acceso liberado!");
Serial.println();
/* SESSSSOR */
digitalWrite(TriggerPin, HIGH); //se envía un pulso para activar el sensor
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
// medimos el pulso de respuesta
tiempo = (pulseIn(EchoPin, HIGH)/2);
// dividido por 2 por que es el
// tiempo que el sonido tarda
// en ir y en volver
// ahora calcularemos la distancia en cm
// sabiendo que el espacio es igual a la velocidad por el tiempo
// y que la velocidad del sonido es de 343m/s y que el tiempo lo
// tenemos en millonesimas de segundo
distancia = float(tiempo * 0.0343);
Serial.print("Distancia: "); // imprime la distancia en el Monitor Serie
Serial.println(distancia);
if (distancia >= 10)
{
microservo9g.write(80);
digitalWrite(led_liberado, LOW);
delay(1500);
}
}
//Prueba si la tarjeta2 se lee
if (conteudo.substring(1) == "5C 70 B9 79")
{
Serial.println("Tarjeta2 - Acceso denegado !!");
Serial.println();
// Pisca o led vermelho
for (int i= 1; i<5 ; i++)
{
digitalWrite(led_negado, HIGH);
delay(200);
digitalWrite(led_negado, LOW);
delay(200);
}
}
delay(1000);
}
pero donde se supone esta la condicion para que mi servomotor baje es esta
if (distancia >= 10)
{
microservo9g.write(80);
digitalWrite(led_liberado, LOW);
delay(1500);
}
aora resultaa cuando lo compilo , nunca se cumple esa condicion y si sube mi servo pero no baja , alguien podria ayudarme por favor