Interrupção

Imagine que você esteja fazendo seu bolo e no meio da receita seu telefone toque. Possivelmente você irá parar o que está fazendo e irá atender o telefone, assim que encerrar a chamada você irá retornar ao ponto que parou em sua receita.

Quando estamos executando um tarefa muitas vezes temos que a interromper para resolver outra tarefa importante para só depois retornar do ponto que se parou. Isso se chama interrupção e é usada com freqüência na programação de microcontroladores.

Uma interrupção tem dois pontos chaves, são eles:

É a condição que indica uma interrupção. Ela avisa ao programa que é a hora de executar uma tarefa extraordinária. No nosso exemplo, essa condição é o toque do

telefone.

Quando algo indica a interrupção, temos que executar uma lista de instruções referentes a essa interrupção. No exemplo dado, temos que parar de fazer o bolo e ir atender ao telefone. A função atender telefone é uma função extraordinária que só é executada pelo fato de ter ocorrido a condição de interrupção, o toque do telefone.

Para aprender como implementar uma interrupção, vamos fazer a experiência 5. Nela você poderá entender melhor esse conceito de interrupção em um microcontrolador.

Experiência 6 – Implementando uma interrupção

Ingredientes

Compre nosso kit básico de arduino para fazer essa experiencia e muitas outras, Loja.SeuRobo.com.br Clique aqui

Misturando os ingredientes

Agora vamos conectar os componentes do projeto. Para isso, monte seu circuito conforme a figura a seguir.

Garanta que seu Arduino esteja desligado durante a montagem e que o seu LED esteja conectado corretamente, com a perna mais longa (Anodo) conectado ao resistor e a perna menor (catodo) ao GND.

Circuito da experiência 6

Levando ao forno

Conecte seu Arduino ao computador e abra a IDE Arduino. No menu Ferramentas (Tools), certifique-se que a porta serial (serial port) está selecionada e que a placa configurada é a que você está usando (board).

Preparando a cobertura

Crie um programa (sketch) e salve com o nome de “programa_interrupcao”. Com o seu programa salvo, escreva nele o código conforme escrito abaixo.

// Existe um LED conectado no pino 13 da maioria dos Arduinos
// Daremos um nome a este pino:
int led = 13;
void interrupção(){
digitalWrite(led, HIGH); // Liga o LED (HIGH = nível lógico alto)
delay(5000);
}
// 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 que se repete infinitamente quando a placa é ligada
void loop() {
digitalWrite(led, HIGH); // Liga o LED (HIGH = nível lógico alto)
delay(1000); // Espera um segundo
digitalWrite(led, LOW); // Desliga o LED (LOW = nível lógico baixo)
delay(1000); // Espera um segundo
}

void interrupção(){ //Função executada quando ocorre a interrupção externa
digitalWrite(led, HIGH); // Liga o LED (HIGH = nível lógico alto)
delay(5000);
}

Depois de escrever o código, clique em Upload para que o programa seja transferido para seu Arduino.

Experimentando o prato

Caso tenha ocorrido tudo como esperado, o LED deve piscar intermitentemente. Quando você apertar o botão, o LED da protoboard permanecerá aceso por 5 segundos. Caso você não pressione o botão novamente, ele voltará a piscar.

Entendendo o Hardware

As placas Arduino possuem pinos que podem desempenhar a função de entrada de sinal para interrupção externa. No Arduino UNO são as portas digitais 2 e 3, que para tal função são nomeadas de INT0 e INT1, respectivamente. Veja a tabela a seguir com os pinos de cada placa Arduino que possuem essa qualidade.

Dessa forma, para que seja possível o uso da interrupção externa, escolhemos o pino digital 2 (INT0), no qual conectamos o botão.

Entendendo o programa

Com o conhecimento adquirido até agora, você já pode entender a maioria dos programas. Dessa forma, iremos nos ater as novidades.

Configurando a interrupção

Para que o Arduino leia uma interrupção, devemos configurá-lo. Para tal usaremos o comando attachInterrupt().

attachInterrupt(INT,FUNÇÂO,MODO); //Configurando a interrupção

Como explicado anteriormente, numa interrupção temos dois pontos chaves: a condição da interrupção e a função que será executada. Dessa forma, o comando attachInterrupt é usado para informar ao programa esses dados. São eles:

INT: Número da porta usada para a interrupção. No Arduino UNO INT 0 corresponde à porta digital 2 e INT 1 corresponde à porta digital 3;

FUNÇÃO: Nome da função que será chamada quando ocorre a interrupção;

MODO: Define em qual tipo de variação do sinal a interrupção será disparada.

As opções são:

Em nosso programa, usaremos esse comando da seguinte forma:

attachInterrupt(0,interrupcao,RISING); //Configurando a interrupção

Portanto, temos como condição de interrupção a mudança de estado de 0V (0) para 5V(1) no pino digital 2 (INT 0) e a função a ser executa se chama interrupção.

Função interrupcao()

Como já explicado no etapa 2, função é um bloco de tarefas a serem executadas pelo programa quando solicitada.

void interrupção(){ //Função executada quando ocorre a interrupção externa
digitalWrite(led, HIGH); // Liga o LED (HIGH = nível lógico alto)
delay(5000);
}

No nosso caso, a função será solicitada quando ocorrer a interrupção. As tarefas a serem executadas serão: acender o LED e esperar 5 segundos.

 

Finalização

Já parou pensar o que aconteceria se todos soubessem como criar robôs? Todos compartilhando seus conhecimentos e ajudando outras pessoas em seus projetos, projetos inovadores sendo criados a todo instante. Tudo isso sendo feito por um único propósito, mudar o mundo.

Essa revolução já vem acontecendo e a internet tem unido as pessoas de forma nunca vista antes. O conhecimento nunca foi tão acessível como tem sido agora e a pessoas têm cada vez mais aderido à filosofia do Open Source.

O Seu Robô quer fazer parte de tudo isso ajudando as outras pessoas a construírem um mundo melhor. Tem muita coisa para ser criada ou melhorada, como por exemplo, a robótica de reabilitação, área que ainda tem muito para evoluir.

Para isso, montamos uma loja onde oferecemos a maior variedade possível de itens para confecção de projetos de robótica, eletrônica e automação, com preços amigáveis.

Além disso, temos esse blog com tutoriais bacanas e didáticos para que todos possam aprender a usar um Arduino e outras placas de desenvolvimento, de forma simples e prática.

Conheça nossa loja (Loja.SeuRobo.com.br), ficaremos felizes em lhe receber!

Parabéns por concluir o curso!

Nosso curso acabou. 🙁

Postaremos mais cursos de arduino ao longo do ano, assine nossa lista de email para ficar por dentro das novidades, é só digitar seu email na barra da direita no campo “Assine nossa Newsletter”. 🙂

Atenciosamente,

Equipe Seu Robô


⇒ Acesse nossa loja virtual de robótica: LOJA

⇒ Veja os serviços que fazemos para facilitar a vida para você: SERVIÇOS

⇒ Quer um tutorial de um projeto ou de robô, gratuitamente? É só preencher o formulário que iremos analisar

⇒ Conseguiu melhorar o código fonte de algum projeto nosso? Então nós envie a melhoria para ajudar outras pessoas