Escolar Documentos
Profissional Documentos
Cultura Documentos
https://portal.vidadesilicio.com.br/usando-a-
interrupcao-externa-no-seu-arduino/
Usando a interrupção externa no seu Arduino
// Esta função "setup" roda uma vez quando a placa e ligada ou resetada
void setup() {
pinMode(led, OUTPUT); // Configura o pino do led (digital) como saída
attachInterrupt(0,interrupcao,RISING); //Configurando a interrupção
}
Função interrupcao()
Função é um bloco de tarefas a serem executadas pelo programa quando
solicitada.
http://labdegaragem.com/profiles/blogs/tutorial
-executando-fun-es-em-intervalos-de-tempo-
fixos-timers
Mas o que são os Timers?
Um timer nada mais é do que um contador que é
incrementado a cada intervalo de tempo (em alguns
microcontroladores intervalo pode ser configurado, o
Arduino é um deles). Os timers funcionam como um relógio
que pode ser usado para contar o tempo, medir a duração
de certos eventos, entre outras aplicações.
O Arduino vem equipado com um microcontrolador
ATmega168 ou ATmega328 (que diferem apenas na
quantidade de memória interna). Esses microcontroladores
possuem e timres: timer0, timer1 and timer2, Timer0 e
timer2 são contadores de 8bits, ou seja, contam de 0 a 255,
e o timer1 é um contador de 16bits, conta de 0 a 65535.
O Arduino Mega vem equipado com o ATmega1280 ou
ATmega2560 (que diferem apenas na quantidade de
memória). Eles possuem 6 timers: timer0, timer1, timer2,
timer3, timer4, timer5. Os timers 0, 1 e 2 são idênticos aos
do ATmega168/328, e os timers 3, 4 e 5 são ambos de
16bits.
Timer0:
O timer0 é utilizado pelo Arduino para funções
como delay(), millis() e micros(). Então não se deve utilizar esse timer para
evitar comprometer essa funções.
Timer1:
No Arduino UNO esse é o timer utilizado pela biblioteca de controle
de servos. Caso você não esteja utilizando essa biblioteca, esse timer está
livre para ser utilizado para outros propósitos. No Arduino Mega
esse timer só será utilizado para controlar os servos se você estiver usando
mais de 12 servos.
Timer2:
Esse timer é utilizado pela função tone(). Então se você não precisar da
função tone() esse timer está livre para outras aplicações.
Timer3 e Timer4:
Esses timers só estão presentes no Arduino Mega e eles só serão utilizados
pela biblioteca do Arduino caso vocês esteja utilizando mais de 24 servos.
De 25 a 36 servos o timer3 será utilizado e de 37 a 48 servos o timer4 será
utilizado.
Timer5:
No Arduino Mega esse é o timer padrão para o controle de servos, ou seja, se
você estiver utilizando de 1 a 12 servos, apenas esse timer será utilizado
pela biblioteca.
Configurando os timers
• A configuração "manual" dos timers é bem chata e trabalhosa pois
exige a manipulação de vários registradores do microcontrolador,
mas felizmente existem algumas bibliotecas que permitem fazer
isso de forma bem simples.
void setup()
{
pinMode(rele, OUTPUT);
pinMode(vermelho, OUTPUT);
Timer1.initialize(500000); // Inicializa o Timer1 e configura para um período de 0,5 segundos
Timer1.attachInterrupt(callback); // Configura a função callback() como a função para ser
chamada a cada interrupção do Timer1
}
void callback()
{
digitalWrite(vermelho, digitalRead(vermelho) ^ 1);
}
void loop()
{
digitalWrite(rele, HIGH); // turn the LED on (HIGH is the voltage level)
delay(3000); // wait for a second
digitalWrite(rele, LOW); // turn the LED off by making the voltage LOW
delay(3000); // wait for a second
}
Consideração Final
• Para usar os outros timers basta substituir o #include <TimerOne.h>
por #include <TimerTree.h>, #include <TimerFour.h> ou #include
<TimerFive.h> e no resto do código substitua Timer1 por Timer3,
Timer4, ou Timer5.