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
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.
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.
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);
}
}
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.
// 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);
}
}
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