Go Down

Topic: Problema con entradas/salidas high/low (Read 111 times) previous topic - next topic

karlosti

Apr 22, 2018, 12:03 am Last Edit: Apr 22, 2018, 04:06 am by surbyte
Buenas,

Estoy tratando de activar un rele en función del estado de un pin, y me doy cuenta que el rele se activa/desactiva muchas veces cuando le viene en gana, después de realizar muchas pruebas sin llegar a nada, he probado el siguiente código que básicamente lo que hace es mostrarme por el serial monitor el estado en el que está el pin, y cual es mi ingrata sorpresa, cuando descubro que el valor de este cambia aletaoriamente sin tener nada conectado a la placa.


Code: [Select]

int pin = 2;
int value = 0;

void setup() {
  Serial.begin(9600);  
  pinMode(pin, INPUT);  
}

void loop(){
  value = digitalRead(pin);  //lectura digital de pin

  if (value == HIGH) {
      Serial.println("Encendido");
  }
  else {
      Serial.println("Apagado");
  }
  delay(1000);
}


Y este es el resultado que obtengo por el monitor serie :



Os agradezco cualquier ayuda.
Saludos!

Moderador: tag de código editado correctamente

surbyte

Si defines esto
Code: [Select]
pinMode(pin, INPUT); 

En ese pin2 debes tener una resistencia PULL-UP o PULL-DOWN

Ya que esperas esto

Code: [Select]
  if (value == HIGH) {
      Serial.println("Encendido");
  }


Debería ser una resistencia pull-down o sea una R de 10K a GND entre PIN y GND.
De lo contrario lo que lees es puro ruido y por eso el pin fluctúa en sus lecturas.

Hay tutoriales de esto por todos lados.
Como conectar un pulsador o como leer una entrada digital. Es un ejemplo del IDE y de los primeros capítulos de cualqueir libro de Arduino.

En Documentación => Indice de Temas tutoriales => Clases de arduino desde 0 tienes como comenzar y aprender sobre estas cosas.
Al final hay 3 sugerencias de libros y muchos temas mas.

Go Up