Está en la página 1de 7

05_ENTRADAS /SALIDAS DIGITALES

5.- ENTRADAS/SALIDAS DIGITALES

Estos pines son los pines del 0 al 13 de Arduino y se llaman


digitales porque sólo 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 función 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 número del pin a utilizar y se
elige el modo de trabajo. Un pin digital tiene sólo dos modos, OUTPUT
(salida) e INPUT (entrada).

Si declaras un pin como OUTPUT, sólo podrás usarlo para


activarlo, aplicando 5V en el pin, o para desactivarlo, aplicando 0V en
el pin. Si configuras el pin como INPUT, sólo podrás usarlo para leer
si hay 5V ó 0V en el pin:

digitalWrite(pin,valor)

Se usa para activar o desactivar un pin digital. Entre paréntesis
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 apagarás 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, verás que los pines digitales 0 y 1


están marcados como RX y TX. Estos pines están reservados para la
comunicación serie y no deben ser usados, ya que pondrán a Arduino
en modo de espera hasta que se reciba una señal.

digitalRead(pin);


La instrucción 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 algún fin debes
guardarlo en una variable:

1/7
05_ENTRADAS /SALIDAS DIGITALES

miVariable = digitalRead(pin);

Si quieres realizar una comparación 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 considerarán como un valor HIGH.

Programa de aplicación 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

2/7
05_ENTRADAS /SALIDAS DIGITALES

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

3/7
05_ENTRADAS /SALIDAS DIGITALES

Programa 03

Programa que realiza una lectura digital por el pin 2 y enciende


un led conectado al pin 3.

Esquema del circuito:

4/7
05_ENTRADAS /SALIDAS DIGITALES

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

5/7
05_ENTRADAS /SALIDAS DIGITALES

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;

6/7
05_ENTRADAS /SALIDAS DIGITALES

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

7/7

También podría gustarte