Está en la página 1de 18

Programación de

módulos
electrónicos

Tema 8: Fundamentos de C en Arduino – Interrupciones y temporizadores


Escuela de Ingeniería
Logro de Aprendizaje Nº 08:
Utiliza las interrupciones y
temporizadores en la detección de
pulsadores
Fundamentos de C en Arduino – Interrupciones
y temporizadores

SUBTEMAS:
 Funciones
 attachInterrupt()
 millis()
 microseconds()
 Aplicaciones con pulsadores
 Aplicación: Turbo Timer
Programación de módulos electrónicos

Funciones
Una función es un bloque de código que tiene un nombre y un
conjunto de instrucciones que son ejecutadas cuando se llama a
la función.
Este código está separado del código principal del programa,
realiza una tarea específica y regresa a la zona del programa
donde fue llamada.

 Las funciones pueden ser llamadas desde cualquier parte del


código.
 Estas se ejecutaran cuando son llamadas realizando las
acciones que tienen internamente.
 Cuando termine de ejecutar las acciones, este volver al
mismo punto donde fue llamada
Programación de módulos electrónicos

Funciones
Una función al igual que una variable se debe crear fuera de los bloques “void loop” y “void setup”.
Estas deben llevar una nombre y un tipo. Los nombres de funciones no deben repetirse.

Para utilizar una función esta debe ser “llamada”, se llamara a la función escribiendo el
Nombre_De_Funcion seguido de los paréntesis “(“ y “)”

Ejemplo tipo Nombre_De_Funcion(){


// Procesos que se
• EncenderMotor();
// cumplirán o realizaran
• LeerSensor(); // cuando se llame a la
// función
• EnviarMensaje();
}

Nombre_De_Funcion();
Programación de módulos electrónicos

Funciones: Ejemplo

void setup(){
pinMode(13,OUTPUT);
}
void loop(){
ParpadearLED();
}

void ParpadearLED(){
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
Las funciones de tipo “void” son funciones que solo }
ejecutan los procesos
Programación de módulos electrónicos

Funciones con parámetros

• Una función puede recibir parámetros que serán utilizados


en las acciones de una función.
• La estructura de parámetros debe ser indicada al momento
de la creación separadas por comas, pueden ser de
diferente tipo

tipo Nombre_De_Funcion(tipo parámetro_1, tipo parámetros_2){


...
}
Programación de módulos electrónicos

Funciones con parámetros: Ejemplo


• Se crea una función e indican los #define LED 13
parámetros que se utilizaran void setup(){
pinMode(LED,OUTPUT);
}
void loop(){
• Al momento de llamar a la función se ParpadearLED(2,100);
indican los valores que tendrán los }
parámetros void ParpadearLED(int Cantidad, int Pausa){
for(int x=0;x<Cantidad;x++){
digitalWrite(LED,HIGH);
delay(Pausa);
• Estos parámetros se utilizaran dentro digitalWrite(LED,LOW);
de la ejecución del programa de la delay(Pausa);
función }
delay(50000);
}
Programación de módulos electrónicos

Interrupciones
Las interrupciones con Arduino nos permitirán reaccionar a eventos externos a la placa de una forma
rápida. Cuando se detecta una señal, una interrupción, interrumpe el proceso que se está ejecutando.
Esto nos va a permitir dos cosas. Por un lado, ejecutar rápidamente un trozo de código, y por otro lado
parar la ejecución del código que se estaba ejecutando.
Programación de módulos electrónicos

Interrupciones
attachInterrupt(pin, ISR, modo)
Esta función nos va a permitir definir o configurar uno de los pines como un puerto de interrupción. Los tres
parámetros que admite son:
• Pin Indica que pin vamos a utilizar como interrupción.
• ISR: es una abreviatura de Interrupt Service Routine y no es más que la función que se llama cuando se
produce la interrupción.
• modo: define cuando debe ser disparada la interrupción. Puede tomar cuatro valores constantes
dependiendo de lo que queramos hacer:
• LOW
PINES
• CHANGE PLACA
INTERRUPCIONES
• RISING Uno, Nano, Mini 2, 3
• FALLING Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21
• HIGH
Programación de módulos electrónicos

Interrupciones: Ejemplo
SIM1

AREF

13
13
12

ARDUINO
RESET 12
11
~11
10
5V ~10
9
~9
8

SIMULINO
8

POWER
GND

ATMEGA328P
7
7

DIGITAL (PWM~)
6
~6

ATMEL
A0 5

ANALOG IN
A0 ~5
A1
A1 4
4 START
A2 3
A2 ~3
A3 2
A3 2
A4 1
A4 TX > 1
A5
A5 RX < 0
0 STOP
www.arduino.cc
blogembarcado.blogspot.com
SIMULINO UNO

RXD

TXD

RTS

CTS
Programación de módulos electrónicos

Funciones de temporización
millis();
Se usa para medir tiempo. Está instrucción te da el tiempo en
milisegundos desde que se encendió la tarjeta Arduino. Una de los
principales usos es el determinar el tiempo que ha pasado entre dos o
más procesos del programa principal.

micros();
Devuelve el número de microsegundos desde que la placa Arduino
comenzó a ejecutar el programa actual. Este número se desbordará
(volverá a cero) después de aproximadamente 70 minutos.
Programación de módulos electrónicos

TurboTimer
El propósito principal de un temporizador de este tipo es mantener encendido el motor al ralentí (mínimo) por
un lapso de tiempo determinado o configurable después de haber quitado la llave de encendido, de esta forma
podremos cerrar el vehículo y el temporizador se encargara de apagar el motor según los segundos o minutos
programados.
Programación de módulos electrónicos

TurboTimer
Programación de módulos electrónicos

TurboTimer +24v

SIM1 12V

IO13 2N2222

AREF
10k
13 IO13
13
12
ARDUINO

RESET 12
11
~11
10
5V ~10
9
~9
8
SIMULINO

8
POWER

GND
ATMEGA328P

7 ENCENDER APAGAR
7
DIGITAL (PWM~)

6
~6
ATMEL

A0 5 IO2 IO3
ANALOG IN

A0 ~5 SW-SPST SW-SPST
A1 4
A1 4
A2 3 R5 R7
A2 ~3 IO3 10k 10k
A3 2 IO2
A3 2
A4 1
A4 TX > 1
A5 0
A5 RX < 0
www.arduino.cc
blogembarcado.blogspot.com
SIMULINO UNO
Actividad Virtual
Programación de módulos electrónicos

Actividad Virtual
Muestre empleando el monitor serial la cuenta regresiva para el apagado del motor.
Gracias

También podría gustarte