[SOLUCIONADO] Leer estado de una salida Digital

Buenas.

Estoy con un código de mi MDC al cual tengo un receptor RF de 433 MHz y me indica el estado cuando recibe datos.
Básicamente un diodo LED conectado al pin 13 se enciende y se apaga según recibe.
Eñ problema es que cuando el LED esta apagado no me indica nada en consola, estoy hecho un lio, lo he probado de mil formas y necesito una ayudita.
Es el este código;

int estado  =0;
int estado2 =0;


#define LED_PIN  13
#define ALTO 1
#define BAJO 0

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
}


void loop() {
  digitalWrite(LED_PIN, HIGH);   
  delay(5000);             
  digitalWrite(LED_PIN, LOW);   
  delay(2000);  
  
 estado = digitalRead(LED_PIN);
   ALTO == estado;
   if (estado = ALTO) {

      Serial.println ("El led esta encendido");
   }
   else {
   estado2 = digitalRead(LED_PIN); 
   BAJO == estado2;
   if (estado2 == BAJO); {
      Serial.println ("Ahora esta apagado");
     }
   }
}

Has tenido un momento de amnesia? Jajaja
A ver.... no se por donde comenzar.
A ver que te parece..

#define LED_PIN  13
#define ALTO      1
#define BAJO      0

bool estado       = 0;
bool estadoAnt    = 0;
unsigned long start  = 0;
byte estadoLED = 0;

void setup() {
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {

  switch (estadoLED) { // empieza en 0
      case 0: digitalWrite(LED_PIN, HIGH);    // enciendo led 5 seg
              estadoLED = 1;
              start = millis()+ 5000UL;
              break;
      case 1: if (millis() > start) {
                  digitalWrite(ledPinV, LOW);  // apago led 2 seg
                  start = millis()+ 2000UL;
                  estadoLED = 2;
              }
              break;
      case 2: if (millis() > start) {
              estadoLED = 0;
            }
            break;
    
  }
  estadoAnt = estado;
  estado = digitalRead(LED_PIN);
  if (estadoAnt =! estado)
      if (estado == ALTO) {
          Serial.println ("El led esta encendido");
      else {
          Serial.println ("Ahora esta apagado");
      }
  
}

Hola

Yo tambien tengo amnesia. Quizas es este el sketch??

#define LED_PIN  13
#define ALTO      1
#define BAJO      0

boolean estado       = false;
boolean estadoAnt    = false;
unsigned long start  = 0;
byte estadoLED = 0;

void setup()
{
  Serial.begin(115200);
  pinMode(LED_PIN, OUTPUT);
}

void loop()
{

  switch (estadoLED)   // empieza en 0
  {
      case 0:
        digitalWrite(LED_PIN, HIGH);    // enciendo led 5 seg
        estadoLED = 1;
        start = millis()+ 5000UL;
        break;
      case 1:
        if (millis() > start)
        {
           digitalWrite(LED_PIN, LOW);  // apago led 2 seg
           start = millis()+ 2000UL;
           estadoLED = 2;
        }
        break;
      case 2:
        if (millis() > start) estadoLED = 0;
        break;
    
  }
  estadoAnt = estado;
  estado = digitalRead(LED_PIN);
  if (estadoAnt != estado)
  {
    if(estado) Serial.println ("El led esta encendido");
    else Serial.println ("Ahora esta apagado");
  }  
}

Ahh bueno, copie de un código que acavaba de hacer y no cambie LED_PIN.

Miralo con calma, hay mas cosas,...

Que lo vea el interesado, jaja Thomas, si el tuyo esta bien que sea ese.

Estamos medio dormidos... jajaja,,

Bueno, ya que hay dos respuestas muy completas ya, y desde mis escasos conocimientos de programación, simplemente comentarte para futuros desarrollos que hagas que te fijes bien cuando asignas un valor o haces comparaciones. Hay un par de veces que aparece incorrecto en tu codigo.

int estado  =0;
int estado2 =0;


#define LED_PIN  13
#define ALTO 1
#define BAJO 0

void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
}


void loop() {
digitalWrite(LED_PIN, HIGH);  
delay(5000);            
digitalWrite(LED_PIN, LOW);  
delay(2000);  

estado = digitalRead(LED_PIN);
 [color=red]ALTO == estado;[/color]
 if ([color=blue]estado = ALTO[/color]) {

    Serial.println ("El led esta encendido");
 }
 else {
 estado2 = digitalRead(LED_PIN);
 [color=red]BAJO == estado2;[/color]
 if (estado2 == BAJO); {
    Serial.println ("Ahora esta apagado");
   }
 }
}

Recuerda:

ALTO = estado; Le asignas el valor de estado a ALTO

ALTO == estado; Estas solamente comparando valores.

Hola N3XUS

Una puntualizacion, ALTO = estado NO asigna nada, ALTO es un valor definido constante y no una variable,
Por otro lado ALTO == estado, no hace nada, pero probablemente tampoco dé error de compilacion

Bienvenido

Ves que hay dos respuestas usando tag de código, no te llamó la atención como posteamos nosotros y como lo haces tú?
Por favor edita tu código.
Usa el tag </> Ve a More, luego Modify y estas en modo Edición. Seleccionas todo y click en </>
Listo

Cierto Alfaville, no me habia fijado que era una constante :smiley: , por un código sencillo en el que puedo decir algo......jejejejejeje.

Corregido el formato tambien :wink:

Hola N3XUS

Disculpa por la puntualizacion pero si este foro sirve para aprender, al menos que sea correcto :smiley: :smiley:

Saludos

Probado y no funciona. Ahora no indica cuando esta el LED encendido. Solo cuando esta apagado. A ver si hoy estoy mas despejado y lo soluciono

Rectifico, si que funciona en el serial cuando se apaga y enciende el LED. Pone su estado.

Hola.

No conocioa tu proyecto y me he recreado ojeando y viendo lo que has colgado del mismo.

Tengo que decirte una cosa, solo una,... CHAPÓ !!!!

Eso es un proyecto. Gracias por compartir

Por cierto aqui tienes repuestos por si acaso, y a buen precio jejeje

Placa receptor FM RDA5807M

Se me olvidaba: Placas PCB para prototipos
Tambien buen precio.

Buenas de nuevo.

En mi mensaje anterior puse que no funcionaba el código. Nada tengo que decir que Alfaville acertó en mi demanda. El código funciona correcto.

A todo ello he de comentar que este mismo lo usaré en mi nuevo proyecto y no es que tenga problema de amnesia sino que llevo unos días de los buenos, bueno algunas semanas ... y quien tiene la culpa de todo es TFTLCDCyg que me ha enredado en estas pantallas FT8xx :slight_smile: :slight_smile: :slight_smile:

Ya sé que es un código sencillo, sin embargo estaba al borde del colapso :o en fin gracias.
Por cierto el señor moderador sufre de nerviosismo? :slight_smile: :slight_smile: :slight_smile: ( broma, broma...)

Aquí un adelanto de mi nuevo proyecto conde incluiré el código;

Video MDC (Modulo RF)

Bueno agradecido estoy.
P.S. Buenos precios esos enlaces que has publicado Alfaville, de hecho uso esos PCB´s como has visto en mi proyecto Radio.

Nada tengo que decir que Alfaville acertó en mi demanda

De nada!!