Академический Документы
Профессиональный Документы
Культура Документы
Introducción:
El objetivo de este tutorial es conocer la forma de configurar la placa Arduino para leer el estado de un botón.
Una vez armado el circuito se procede a programar dos opciones, las cuales implican el uso de procedimientos
que permiten leer las entradas.
Lista de materiales.
1. Placa arduino.
2. Cable usb.
3. Computador con Arduino instalado.
4. Botón.
5. Led.
6. Resistencia de 10 kOhm
Procedimiento.
3-1
3. Sobre los switch y botones
Abierto. Cerrado.
Es ta s d o s p a tita s e s tá n c o ne c ta d a s .
Po r lo q ue s o n d o s p a tita s .
Ab ie rto c ua nd o no Ce rra d o c ua nd o
e s ta p re s io na d o . e s ta p re s io na d o .
3-2
4. Montaje de elementos
5. Esquema de elementos
3-3
6. Botón simple
Cuando el pulsador está abierto el pin está conectado a tierra (a través de la resistencia pull-down) y
leemos un LOW (bajo ó 0). Cuando el botón se cierra (pulsado), se establece la unión entre sus dos
extremos, conectando el pin a 5 voltios, por lo que leemos un HIGH (alto ó 1). También se puede cablear
el circuito en sentido contrario, con una resistencia "pull-up" que mantenga la entrada en HIGH, y que pase
a LOW cuando se pulse el botón. Así, el comportamiento del programa (sketch) se invertirá, con el LED
normalmente encendido y apagado cuando se pulsa el botón.
código
/*
Button
se enciende o apaga el led del pin 13 cuando se presiona o se suelta el botón
The circuit:
* LED attached from pin 13 to ground
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
by DojoDave <http://www.0j0.org>
modified 28 Oct 2010
by Tom Igoe
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Button
*/
void setup() {
// inicializa el pin del led como salida
pinMode(ledPin, OUTPUT);
// inicializa el pin del botón como entrada:
pinMode(buttonPin, INPUT);
}
void loop(){
// lee el estado del botón
buttonState = digitalRead(buttonPin);
3-4
7. Detección de cambio de estado (detección de extremos)
En algunas aplicaciones se requiere que la acción se gatille cuando el botón ha cambiado de estado, por
lo que se necesita saber cuando se produce ese cambio. Esto se conoce como detección de cambio de
estado o detección de extremos. El código lee constantemente el estado del botón y lo compara con el
estado anterior. Si el estado cambia entonces cambia el estado del pin donde está el led.
código
/* se encuentra en ejemplos Files > Ejemplos > 2. Digital
*/
void setup() {
// inicializa el pin del botón como entrada:
pinMode(buttonPin, INPUT);
// inicializa el pin del LED como salida:
pinMode(ledPin, OUTPUT);
// inicia la comunicación serial:
Serial.begin(9600);
}
void loop() {
// le el pin del botón:
buttonState = digitalRead(buttonPin);
3-5
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
Serial
Se utiliza para la comunicación entre la placa Arduino y un ordenador u otros dispositivos. Todas las
placas Arduino tienen al menos un puerto serie (también conocido como UART o USART): Serial.
Se comunica a través de los pines digitales 0 (RX) y 1 (TX), y por USB al PC. Por lo tanto, si se utiliza
estas funciones, no deben usarse los pines 0 y 1 como entrada o salida digital.
Puede utilizarse el monitor del puerto serie incorporado en el entorno Arduino para comunicarse con la
placa Arduino. Haga clic en el botón del monitor de puerto serie en la barra de herramientas y seleccione
la misma velocidad en baudios utilizada en la llamada a begin().
3-6
La placa Arduino Mega tiene tres puertos adicionales de serie, para ver la forma de usarlo, referirse al sitio
de arduino.
begin() : Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos en
serie. Para comunicarse con el computador, utilice una de estas velocidades: 300, 1200, 2400, 4800,
9600, 14400, 19200, 28800, 38400, 57600 o 115200. Sin embargo, puedes especificar otras velocidades -
por ejemplo, para comunicarte a través de los pines 0 y 1 con un componente que requiere una velocidad
de transmisión en particular.
print() : Imprime los datos al puerto serie como texto ASCII. Este comando puede tomar muchas formas.
Los números son impresos mediante un juego de caracteres ASCII para cada dígito. Los valores de tipo
"float" son impresos en forma de dígitos ASCII con dos decimales por defecto. Los valores tipo "byte" se
envían como un único carácter. Los caracteres y las cadenas se envían tal cual.
println() : Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro (ASCII 13, o
'\r') y un carácter de avance de línea (ASCII 10, o '\n'). Este comando tiene la misma forma
que Serial.print ().
% (módulo)
Calcula el resto de la división entre dos enteros. Es útil para mantener una variable dentro de un
rango particular (por ejemplo el tamaño de un array)
Sintaxis
el resto de la división
Ejemplo
x = 7 % 5; // x ahora contiene 2
x = 9 % 5; // x ahora contiene 4
x = 5 % 5; // x ahora contiene 0
x = 4 % 5; // x ahora contiene 4
3-7
9. Tarea
Escriba dos sketch que realicen las siguientes tareas:
• Al presionar el botón cambia el estado del led, si estaba encendido lo apaga, si estaba apagado lo
enciende.
• Mida el tiempo de reacción y lo muestre en el monitor serial.
10. Resumen
En este tutorial se examinó el sketch para ver los valores del botón. También se vieron dos funciones:
Serial para comunicaciones y la función matemática resto (%) y el procedimiento digitalRead(pin) que
permite leer el valor de un pin.
11. Referencias.
http://arduino.cc/es/Tutorial/HomePage
http://arduino.cc/es/Reference/HomePage
http://www.ladyada.net/learn/arduino/lesson2.html
http://wiki.webdearde.com/index.php?title=Tutorial:_Comenzando_con_Arduino
http://www.ladyada.net/learn/sensors/tilt.html
3-8