You are on page 1of 7

05_ENTRADAS /SALIDAS DIGITALES

1/7
5.- ENTRADAS/SALIDAS DIGITALES

Estos pines son los pines del 0 al 13 de Arduino y se llaman
digitales porque slo pueden manejar valores 0 o 1. Si quieres usar
un pin digital, lo primero que tienes que hacer es configurar el modo
de trabajo del pin. sto se hace siempre en la funcin setup().

Las instrucciones que se emplean para los pines digitales son:

pinMode(pin,[INPUT,OUTPUT])

Configura el modo de trabajo de pin digital, donde "pin" es una
variable con el valor correspondiente al nmero del pin a utilizar y se
elige el modo de trabajo. Un pin digital tiene slo dos modos, OUTPUT
(salida) e INPUT (entrada).

Si declaras un pin como OUTPUT, slo podrs usarlo para
activarlo, aplicando 5V en el pin, o para desactivarlo, aplicando 0V en
el pin. Si configuras el pin como INPUT, slo podrs usarlo para leer
si hay 5V 0V en el pin:

digitalWrite(pin,valor)

Se usa para activar o desactivar un pin digital. Entre parntesis
se debe indicar qu pin modificar, y qu valor darle.

Ejemplo: digitalWrite(pin, HIGH);

sto pondr el pin en su estado HIGH, proporcionando 5V en l.
Si escribes LOW apagars el pin, dejando el pin a 0V. Ten en cuenta
que hasta que se define el estado del pin como HIGH su valor por
defecto ser LOW.

Si miras la placa Arduino, vers que los pines digitales 0 y 1
estn marcados como RX y TX. Estos pines estn reservados para la
comunicacin serie y no deben ser usados, ya que pondrn a Arduino
en modo de espera hasta que se reciba una seal.

digitalRead(pin);

La instruccin digitalRead(pin) lee el estado de un pin y
devuelve HIGH si est a 5V o LOW si hay 0V en l.

Para poder usar el valor del estado para algn fin debes
guardarlo en una variable:

05_ENTRADAS /SALIDAS DIGITALES

2/7
miVariable = digitalRead(pin);

Si quieres realizar una comparacin puedes escribir el comando
directamente en la sentencia:

if (digitalRead(pin)==LOW){
sentencia1;
sentencia2;

}

Aunque LOW equivale siempre a 0V en una salida digital, en
una entrada digital cualquier valor entre 0V y 1.5V se considerar
LOW en el comando digitalRead(). Del mismo modo todos los valores
entre 3.3V y 5v se considerarn como un valor HIGH.

Programa de aplicacin de pines configurados como salida
digital.

Programa02

Realiza una secuencia de encendido y apagado de led
conectados en los pines digitales 3-4-5, el circuito es el siguiente


05_ENTRADAS /SALIDAS DIGITALES

3/7



//prog02_secuencia_v1

//"Curso de Robotica Educativa"
//CEP de ALBACETE
// Manuel Hidalgo Diaz
//Enero 2012
//Programa para realizar una secuencia luminosa con 3 diodos leds

//Adjuntar etiqueta con numero de pin digital de Arduino
#define ledVerde 3
#define ledAmarillo 4
#define ledRojo 5

//Declaracion de variables
int retardo; //tiempo de encendido del led en milisegundos

void setup()
{
//configuracion de los pines digitales como salida
pinMode(ledVerde, OUTPUT);
pinMode(ledAmarillo, OUTPUT);
pinMode(ledRojo, OUTPUT);

//inicialmente todos los leds apagados
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, LOW);

//asignacion del tiempo de encendio del led
retardo = 2500;
}

void loop()
{
//se enciende el led verde durante el tiempo asignado en retardo
digitalWrite(ledVerde, HIGH);
delay(retardo);
//se apaga el led verde y se enciende el led amarillo
//durante el tiempo asignado en retardo
digitalWrite(ledVerde, LOW);
digitalWrite(ledAmarillo, HIGH);
delay(retardo);
//se apaga el led amarillo y se enciende el led rojo
//durante el tiempo asignado en retardo
digitalWrite(ledAmarillo, LOW);
digitalWrite(ledRojo, HIGH);
delay(retardo);
//se apaga el led rojo
digitalWrite(ledRojo, LOW);
}

05_ENTRADAS /SALIDAS DIGITALES

4/7
Programa 03

Programa que realiza una lectura digital por el pin 2 y enciende
un led conectado al pin 3.

Esquema del circuito:


05_ENTRADAS /SALIDAS DIGITALES

5/7

//"Curso de Robotica Educativa"
//CEP de ALBACETE
// Manuel Hidalgo Diaz
//Enero 2012
//Aqui se utiliza el pin digital 3 en vez del pin digital 13

// La constante no cambia el valor de las variables
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 3; // the number of the LED pin

// variables que cambia de valor:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

05_ENTRADAS /SALIDAS DIGITALES

6/7
Programa 04

Se utiliza el mismo circuito que el programa 03. El programa
realiza una lectura digital del pin D2 y cada cuatro pulsaciones
enciende el led conectado en el pin D3.

/*
State change detection (edge detection)
*/
// this constant won't change:
const int buttonPin = 2; // the pin that the pushbutton is attached to
const int ledPin = 3; // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button

void setup() {
// initialize the button pin as a input:
pinMode(buttonPin, INPUT);
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
}

void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
// compare the buttonState to its previous state
if (buttonState != lastButtonState) {
// if the state has changed, increment the counter
if (buttonState == HIGH) {
// if the current state is HIGH then the button
// wend from off to on:
buttonPushCounter++;
Serial.println("on");
Serial.print("number of button pushes: ");
Serial.println(buttonPushCounter);
}
else {
// if the current state is LOW then the button
// wend from on to off:
Serial.println("off");
}
}
// save the current state as the last state, for next time through the loop
lastButtonState = buttonState;




05_ENTRADAS /SALIDAS DIGITALES

7/7
// turns on the LED every four button pushes by checking the modulo of the
//button push counter.
// the modulo function gives you the remainder of the division of two numbers:
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}

}

You might also like