Insertar digitalread

Hermano, revisá que no tengas llaves de más o de menos.
Poné un poco de esfuerzo de tu parte.

if (contador > 8) { // 1
  digitalWrite (ledPin, LOW); // Apagar LED
} // -1
else { // 2
  digitalWrite (ledPin, HIGH); // Encender LED
}   // -2
if (digitalRead(ledPin) == HIGH) { // 3
  Serial.println("LED encendido");
} // -3
else { // 4
  Serial.println("LED apagado");
} // -4

4 - 4 = 0, las llaves como mínimo están "balanceadas", tantas abiertas tantas cerradas (falta revisar que estén en los lugares adecuados).
Cada if() tiene su juego de llaves, lo mismo para cada else entonces de aquí el error no proviene.

¿Hace falta que pruebe la otra opción o te alcanza para ver que el error no está en mis códigos?

Y por cierto, postea el código y los errores con el formato correcto.

1 Like

no te creas que no lo intento ,pero me lio bastante con estas cosas,lo que no entiendo es que haya llaves de mas o de menos si lo que hago es copiar y pegar ,algo se me escapa.

Hola @mancamba

Sin que sirva de precedente, (todos hemos sido novatos alguna vez), te envío el código mas espaciado, completo y revisado.
A mi me funciona correctamente.
Sigue los comentarios que he añadido.

Verás que he cambiado la instrucción del LED, para que inicialmente este apagado, mientras no llega el contador a "8".
A cada LOOP se vuelve a apagar.

Tu puedes hacer las copias que quieras, con las transformaciones que creas conveniente.
Sobre todo, estudia mas Arduino!!! :rofl:

Un saludo !!! ...:cocktail:... :cocktail:

..

/*
   
     CONTADOR DE REVOLUCIONES DEL FORO

     El LED 13 se encuentra normalmente apagado.
     Cuando el contador supera "8", se enciende el LED.
     Cuando se reinicia el LOOP ... se apaga otra vez.

    https://forum.arduino.cc/t/insertar-digitalread/1324669/17

  ******************** ENGRAL *******************************

*/

volatile unsigned long contador = 0; // Variable entera que se almacena en la RAM del Micro
const byte ledPin = 13; // LED 13 que se encuentra en la placa UNO.
const byte isrPin = 3; // INPUT

void interrupcion1() // Funcion que se ejecuta durante cada interrupion
{
  contador++; // Se incrementa en uno el contador
}
void setup()
{
  Serial.begin(57600);
  Serial.println(" A_REVOLUCIONES_MS_3_FORO");
  pinMode(ledPin, OUTPUT); // El pin 13 es una salida digital
}

void loop()
{
  contador = 0;
  // -------- sección crítica --------
  attachInterrupt(digitalPinToInterrupt(isrPin), interrupcion1, RISING);
  delay(1000);
  detachInterrupt(digitalPinToInterrupt(isrPin));
  // ----------------------------------
  //contador = contador / 1 * 1; // SUPRIMIDA DE MOMENTO
  Serial.print(contador);
  Serial.println(" RPM");

  if (contador > 8) // Si contador supera a 8...
  {
    digitalWrite (ledPin, HIGH); // Encender LED
  }
  else               //SI NO........
  {    
    digitalWrite (ledPin, LOW);  // Apagar LED
  }
  if (digitalRead(ledPin) == HIGH) // Si LED 13 esta HIGH...
  {
    Serial.println("LED encendido");  // Imprime en MONITOR
  }
  else
  {
    Serial.println("LED apagado");
  }

} // 2ªLLAVE-LOOP

//**************  FIN  *****************

Pues por lo visto lo has hecho mal.
Además no adjuntas ninguno de los dos códigos que te dieron error al compilar, así que no podemos ver cual es el error porque no somos adivinos.

Por otro lado, entiendo que se te complique controlar las llaves pero ¿también se te complica editar tus post?

Tienes suerte que @ENGRAL haya tenido ganas de corregir tu código mal posteado, yo no pensaba hacerlo hasta que cumplieras las normas.

Saludos

1 Like

Pues lo intenté editar para ponerlo bien y no lo entiendo porque no sale, pero gracias igualmente. No lo hago por molestar ,igual necesito mas horas de practica las cuales no tengo.

bueno ,me hice algo de lio con las ediciones lo probaré pero ya la semana que viene que tenga el arduino conmigo. Gracias

Hola @MaximoEsfuerzo

Eres muy duro, ja, ja, pero tienes razón !!!

Como he dicho:

Saludos !! :cocktail: :champagne:

..

El problema es que recurrí a esto de forma puntual para solucionar una carencia y lei y lei vi videos pero no lo controlo y no lo practico habitualmente .

1 Like

..

Pues si practicas, sera algo que no podrás dejar fácilmente , Ja, Ja, Ja.

Crea habito !!!!

Un saludo !!! .... :cocktail:.. :cocktail:

..

1 Like

30 post para algo que está resuelto en el #5.

2 Likes

Moderador
Por favor edita el post#17 con etiquetas.

1 Like

Bueno amigos.
Despues de mucha idas y venidas y rompederos de cabeza mios y vuestros ,el sistema ya funciona. Paso a describr con detalle la aplicacion por si a alguien le sirve.
Esto es (capricho) por haber instalado sensores de aparcamiento en un coche antiguo.
Los traseros van de maravilla porque solo se activan con la marcha atrás,pero los delanteros ,a pesar de ser activados con la señal de pedal de freno ,daban lecturas indeseadas sobre todo en rotondas.
Solución ? coger la señal del captador de velocidad del vehiculo (impulsos convertidos=a rpm ,y decirle al sensor de parking que a partir de x velocidad no funcione (de serie en todos ya hace años) ...
Solo 2 recomendaciones : Poner un optoacoplador a la entrada y un transistor a la salida ,para no mezclar ni sobrecargar lo cuel lleva a efectos indeseados.
Gracias y aunque es un tema muy particular ,lo dejo aquí y estoy a disposicion por si a alguien le interesa algun detalle.

volatile unsigned long contador = 0;   // Variable entera que se almacena en la RAM del Micro
const byte ledPin = 6;                // LED que se encuentra en el pin 6
const byte isrPin = 3;                 // INPUT

void interrupcion1() {                  // Funcion que se ejecuta durante cada interrupion
  contador++;                           // Se incrementa en uno el contador
}

void setup() {
  Serial.begin(57600);
  pinMode(ledPin, OUTPUT);              // El p1n 6 será una salida digital
}

void loop() {
  
  contador = 0;
  // -------- sección crítica --------
  attachInterrupt(digitalPinToInterrupt(isrPin), interrupcion1, RISING);
  delay(1000);
  detachInterrupt(digitalPinToInterrupt(isrPin));
  // ----------------------------------
  contador = contador / 1 * 1;
  Serial.print(contador); Serial.println(" RPM");

  if (contador > 8) {                     //setpoint del contador
    digitalWrite (ledPin, LOW);          // Apagar LED
  } else {
    digitalWrite (ledPin, HIGH);           // Encender LED
  if (digitalRead(ledPin) == HIGH) {
  Serial.println("LED encendido"); 
} else {
  Serial.println("LED apagado");
}
  }
}