SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Spanish)
This Tutorial is Retired!
This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.
Experimento 5: Leer un pulsador
Introducción
Hasta ahora, nos hemos centrado principalmente en las salidas. Ahora vamos a ver las entradas. En el experimento 2, hemos utilizado una entrada analógica para leer el potenciómetro. En este experimento, vamos a leer una de las entradas más comunes y sencillas, un pulsador, mediante una entrada digital. La usaremos para pasar por los diferentes colores del RGB.
Elementos necesarios
Necesitará los siguientes elementos:
- 1x placa de pruebas
- 1x placa Arduino 101 o Genuino 101
- 1x LED RGB
- 3x resistencia de 100 Ω
- 8x cables puente
- 1x pulsador
- 1x resistencias 10K
¿No tiene el SIK?
Si está realizando este experimento y no dispone del SIK, le sugerimos que use estos elementos:
También necesitará una placa Arduino 101 O Genuino 101.
Lectura sugerida
Antes de continuar con este tutorial, le recomendamos que se familiarice con los conceptos en los siguientes tutoriales:
Presentación del pulsador
Un pulsador momentáneo cierra o completa el circuito solo mientras está pulsado. El pulsador tiene cuatro pines, organizados en dos conjuntos de dos pines. Cuando presiona el pulsador y se escucha un "clic", el pulsador conecta los dos conjuntos de pines y permite que la corriente fluya a través del circuito.
¿Cómo puede saber qué pines están emparejados? Los pulsadores incluidos en este kit solo encajan en la muesca de la placa de pruebas en una dirección. Tras encajar el pulsador firmemente en la placa de pruebas (a través de la muesca), los pines se emparejan horizontalmente. Por un lado, se conectan los pines hacia la parte superior de la placa de pruebas y, por otro lado, se conectan los pines hacia el pulsador de la placa de pruebas.
Nota: no todos los pulsadores comparten este formato de pines. Consulte la hoja de datos de su pulsador específico para determinar qué pines están emparejados.
Conexión del hardware
¿Está preparado para comenzar a conectar todo? Consulte el diagrama de cableado y la tabla de conexión siguientes para ver cómo está conectado todo.
Componentes polarizados | Preste especial atención a las marcas de los componentes que indican cómo colocarlo en la placa de pruebas. Los componentes polarizados solo se pueden conectar a un circuito en una sola dirección. |
Diagrama de cableado del experimento
Entrada digital
Anteriormente hemos utilizado pines analógicos para la entrada; ahora usaremos pines digitales. Ya que los pines digitales solo conocen las señales ALTO y BAJO, son perfectos para conectar pulsadores e interruptores que solo tengan estados de "encendido" y "apagado".
Conectaremos un lado del pulsador a tierra y el otro lado a un pin digital. Cuando presione el pulsador, el pin se conectará a tierra y, por lo tanto, se leerá "BAJO" en la placa Arduino.
Pero, ¿qué sucede cuando no se presiona el pulsador? En este estado, el pin no está conectado a nada, a esto lo denominamos "estado flotante". ¿Cuál será el estado que se leerá en el pin? ¿ALTO o BAJO? Es difícil de decir, porque no hay ninguna conexión sólida ni a la red de 3,3 V ni a tierra. El pin puede tener cualquier de estos dos valores.
Para solucionar este problema, vamos a conectar una pequeña resistencia (10 K o 10.000 ohmios) entre el pin de señal y la línea de 3,3 V. Esta resistencia "pullup" garantizará que cuando NO esté presionando el pulsador, el pin tendrá una débil conexión a la línea de 3,3 voltios y, por tanto, se leerá ALTO.
Avanzado: Cuando se familiarice con las resistencias pullup y sepa cuándo son necesarias, puede activar las resistencias pullup internas en el procesador ATmega en Arduino. Consulte http://arduino.cc/en/Tutorial/DigitalPins para obtener más información.
Abrir el boceto
Abra el software IDE de Arduino en su ordenador. La codificación en el lenguaje de Arduino controlará el circuito. Abra el código del circuito 5; para ello, acceda a "101 SIK Guide Code" (Guía de códigos de SIK 101) que ha descargado y guardado en la carpeta "Examples" (Ejemplos) anteriormente.
Para abrir el código vaya a: File > Examples > 101 SIK Guide Code > Circuit_05 (Archivo > Ejemplos > Guía de códigos de SIK 101 > Circuito_05)
También puede copiar y pegar el siguiente código en el IDE de Arduino. Cárguelo y vea qué es lo que ocurre.
language:cpp
/*
SparkFun Inventor's Kit
Example sketch 05
PUSH BUTTONS
Use pushbuttons for digital input
This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn about the Arduino.
*/
// First we'll set up constants for the pin numbers.
// This will make it easier to follow the code below.
// pushbutton pin
const int buttonPin = 3;
//RGB LED pins
const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;
//create a variable to store a counter and set it to 0
int counter = 0;
void setup()
{
// Set up the pushbutton pins to be an input:
pinMode(buttonPin, INPUT);
// Set up the RGB pins to be an outputs:
pinMode(redPin, OUTPUT);
pinMode(greenPin,OUTPUT);
pinMode(bluePin,OUTPUT);
}
void loop()
{
// local variable to hold the pushbutton states
int buttonState;
//read the digital state of buttonPin with digitalRead() function and store the //value in buttonState variable
buttonState = digitalRead(buttonPin);
//if the button is pressed increment counter and wait a tiny bit to give us some //time to release the button
if (buttonState == LOW) // light the LED
{
counter++;
delay(150);
}
//use the if satement to check the value of counter. If counter is equal to 0 all //pins are off
if(counter == 0)
{
digitalWrite(redPin,LOW);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin,LOW);
}
//else if counter is equal to 1, redPin is HIGH
else if(counter == 1)
{
digitalWrite(redPin,HIGH);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin,LOW);
}
//else if counter is equal to 2 greenPin is HIGH
else if(counter ==2)
{
digitalWrite(redPin,LOW);
digitalWrite(greenPin,HIGH);
digitalWrite(bluePin,LOW);
}
//else if counter is equal to 3 bluePin is HIGH
else if(counter ==3)
{
digitalWrite(redPin,LOW);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin,HIGH);
}
//else reset the counter to 0 (which turns all pins off)
else
{
counter =0;
}
}
Código a tener en cuenta
pinMode(buttonPin, INPUT);
Los pines digitales se pueden utilizar tanto como entradas y salidas. Antes de hacerlo, necesita indicar a la placa Arduino la dirección que se seguirá.
buttonState = digitalRead(buttonPin);
Para leer una entrada digital, utilice la función digitalRead()
. Devolverá el valor ALTO si hay una alimentación de 3,3 V en el pin o BAJO si hay una alimentación de 0 V en el pin.
if (button1State == LOW)
Ya que hemos conectado el pulsador a tierra, se leerá BAJO cuando se presione. Aquí estamos usando el operador de "equivalencia" ("==") para ver si el pulsador está presionado.
Lo que debería ver
Debe ver el LED encendido si presiona cualquier pulsador y apagado si presiona ambos pulsadores. (Vea el código para averiguar el motivo). Si no funciona, asegúrese de que ha montado el circuito correctamente y ha verificado y cargado código en la placa; o consulte la sección Solución de problemas.
Solución de problemas
No se enciende ninguna luz
El pulsador es cuadrado y, debido a esto, es fácil colocarlo de la forma incorrecta. Gire el pulsador 90 grados y observe si funciona.
Demasiado básico
No se preocupe; estos circuitos se han simplificado al máximo para que sea sencillo jugar con los componentes, pero en cuanto los combine todos, el límite es su imaginación.