Input Pull-up Serial

Este ejemplo demuestra el uso de INPUT_PULLUP con pinMode (). Se monitorea el estado de un interruptor mediante el establecimiento de la comunicación serie entre la placa Arduino y el ordenador a través de USB.
Además, cuando la entrada es HIGH, el LED integrado conectado al pin 13 se encenderá; cuando haya un nivel LOW, el LED se apagará.

Hardware necesario

  • Una placaArduino
  • Un interruptor o un pulsador
  • Un Protoboard
  • cable para conexionado

Circuito


Conectar dos cables a la placa Arduino. El cable negro se conecta desde masa a un terminal del pulsador. El segundo cable va desde el pin digital 2 al otro terminal del pulsador.
Los pulsadores o interruptores conectan dos puntos de un circuito cuando se los presiona. Cuando el pulsador está abierto (sin pulsar) no hay conexión entre los dos terminales del pulsador. Debido a que la resistencia interna de pull-up en el pin 2 está activa y conectada a 5 V, leemos HIGH cuando el pulsador está abierto. Cuando el pulsador está cerrado, el Arduino lee LOW porque se ha completado una conexión a tierra.

Esquema


Código

En el siguiente programa, lo primero cosa que se hace en void.setup es iniciar la comunicación serie, a 9600 bits de datos por segundo, entre la placa Arduino y el ordenador con la línea:
Serial.begin (9600);
A continuación, se inicializa el pin digital 2 como una entrada con la resistencia pull-up interna activada:
pinMode (2, INPUT_PULLUP);
La siguiente línea se configura el pin 13, con el LED integrado, como una salida:
pinMode (13, OUTPUT);
Ahora que la configuración se ha completado, nos movemos por el bucle principal del código. Cuando el pulsador  no está presionado, la resistencia interna pull-up se conecta a 5 voltios. Esto hace que el Arduino informe "1" o HIGH. Cuando se pulsa el pulsador, el pin 2 del Arduino se lleva a masa, haciendo que el Arduino informe de un "0", o LOW.
Lo primero que hay que hacer en el bucle principal del programa es establecer una variable para contener la información que viene del pulsador. Dado que la información que llega desde el pulsador será o un "1" o un "0", se puede utilizar un  tipo de datos int. Llamar a esta variable sensorValue y hacerlo igual a la lectura  en el pin digital de 2. Esto se puede hacer con una sola línea de código:
int = sensorValue digitalRead (2);
Una vez que el Arduino ha leído la entrada, hacer que imprima esta información al ordenador como un decimal (DEC). Usted puede hacer esto con el comando Serial.println () en la última línea de código:
Serial.println (sensorValue, DEC);
Ahora, cuando se abre el monitor serie en el entorno Arduino, verá un flujo de "0" s si el pulsador está cerrado, o "1" s si el pulsador está abierto.
El LED en el pin 13 se enciende cuando el pulsador está a nivel HIGH, y se apaga cuando está a nivel LOW.

Programa
/ * 
Pullup entrada serie  Este ejemplo demuestra el uso de pinMode (INPUT_PULLUP). Lee una  entrada digital en el pin 2 e imprime los resultados al monitor de serie.  
Circuito 
* Interruptor momentáneo adjunto de la clavija 2 a tierra  
* Built-in LED en el pin 13  
A diferencia de pinMode (INPUT), no existe una resistencia pull-down necesario. Un interno de  resistencia de 20K ohmios se tira a 5V. Esta configuración hace que la entrada para  leer ALTA cuando el interruptor está abierto, y LOW cuando está cerrado.  
Creada el 14 de de marzo de 2012  por Scott Fitzgerald  http://www.arduino.cc/en/Tutorial/InputPullupSerial  
Este código de ejemplo es de dominio público* / 
void setup() {
  // inicia la comunicación serie
  Serial.begin(9600);
  //configura el pin 2 como entrada y habilita la resistencia interna pull-up
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}
void loop() {
  // lee el valor del pulsador
  int sensorVal = digitalRead(2);
  // imprime el valor del pulsador
  Serial.println(sensorVal);
 // Tenga en cuenta el pull-up significa el pulsador
// La lógica se invierte. Pasa a nivel HIGH cuando está abierto,
// y a nivel LOW cuando se pulsa. Activa el pin13 cuando el
// pulsador esta activado, y lo desactiva cuando no lo esta:

  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  } else {
    digitalWrite(13, HIGH);
  }
}

1 comentario:

  1. En mi proyecto voy a utilizar 5 botones en modo INPUT_PULLUP con pinMode (). ¿Causará algún problema en el Arduino el hecho que 5 resistencias internas queden conectadas simultaneamente durante la mayoría del tiempo (que no presione ningun pulsador?

    ResponderEliminar