Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad: Ingeniería
Escuela: Electrónica
Asignatura: Diseño de sistemas Embebidos
de alto nivel
Objetivos Específicos
Material y Equipo
No Cantidad Descripción
1 1 Una computadora con sistema operativo Windows y con el
programa Arduino IDE instalados
2 1 Cable USB (tipo A hacia tipo B)
3 1 Tarjeta Arduino UNO R2 o R3
4 4 Resistencias de 4.7kΩ
5 4 LEDs
6 4 Botones pulsadores
7 1 Breadboard
8 1 Pinza
9 1 Cortadora
10 Varios Cables UTP
11 10 Potenciometros
Introduccion Teórica
Interrupciones programadas
Normalmente asociadas a la librería
#include <TimerOne.h>
Esto nos crea un objeto llamado Timer1 directamente, sin necesidad de instanciarlos. Lo
siguiente es programar el intervalo de disparo en microsegundos:
Timer1.initialize(150000); // 150 ms
2
Lo siguiente es decirle la función que deberá ejecutarse cada vez que pase el tiempo
configurado:
Timer1.attachInterrupt( ISR_Servicio) ;
Interrupciones externas
Para definir una interrupción en Arduino usamos la función:
Procedimiento
Parte I
#include <TimerOne.h>
const int led = 13; // the pin with a LED
int ledState = LOW; // El LED empieza apagado
volatile int segundos=0,conteo;
volatile unsigned long blinkCount = 0; // La definimos como volatile
Diseño de sistemas Embebidos de alto nivel, Guía 1
3
void setup(void)
{
pinMode(led, OUTPUT);
Timer1.initialize(5000000);
Timer1.attachInterrupt(ISR_Blink); // Activa la interrupcion y la asocia a ISR_Blink
Serial.begin(9600);
}
void ISR_Blink()
{ ledState = !ledState ;
segundos++ ; // Contador veces se enciende el LED
//Serial.print(segundos);
}
void loop(void)
{
unsigned long N; // Haremos copia del blinkCount
digitalWrite(led, ledState); // Asignamos el valor del
// status a la salida
noInterrupts(); // Suspende las interrupciones
N = blinkCount;
Reto:
Utilizando el timer haga un semáforo de 4 leds que siga la secuencia de 18 segundos
en rojo, 3 segundos en amarillo 10 segundos en verde y 4 segundos en cruceizq.
Los tiempos deben ser modificables para que hagan sus pruebas.
Parte II
Arme el siguiente circuito
4
void setup() {
// Inicializamos los pines de los LEDs como salida y a estado bajo
for (int i = 0; i < 5; i++)
{
pinMode(leds[i], OUTPUT);
digitalWrite(leds[i], LOW);
}
void loop() {
// Este primer bucle recorre el array de izquierda a derecha
for (int i = 0; i < 5; i++)
{
// Solo para el segundo pin y consecutivos apagamos el pin anterior
// En el caso de 0 no hace falta ya que por defecto está apagado
// Cuidado que nos salimos del rango del array 0-1=-1 no existe este elemento
if (i > 0)
{
// Apagamos el LED a la izquierda
digitalWrite(leds[i - 1], LOW);
}
__________________________________________________________________
RETO: haga un programa que le permita leer datos de una entrada análoga
Y que por medio de las interrupciones se tenga la función de activar o desactivar la
lectura constante de la entrada análoga.
Bibliografía
Hoja de cotejo: 1
EVALUACION
TOTAL 100
%