Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Interrupções no Arduino: Como Utilizar e Exemplos Práticos

As interrupções são uma ferramenta poderosa no desenvolvimento de projetos com Arduino, permitindo que o microcontrolador responda imediatamente a eventos externos, sem a necessidade de verificar constantemente o estado de um pino. Isso é especialmente útil em aplicações onde a resposta rápida é crucial, como em sistemas de controle, robótica e automação residencial. Neste artigo, vamos explorar como configurar e utilizar interrupções no Arduino, apresentando um projeto prático como exemplo.

Project: Neste projeto, vamos criar um sistema simples de contagem de pulsos usando um botão. O objetivo é demonstrar como as interrupções podem ser usadas para contar eventos de maneira eficiente e precisa. Quando o botão é pressionado, o Arduino incrementa um contador e exibe o valor no monitor serial. Este projeto é ideal para entender o funcionamento básico das interrupções e como elas podem ser aplicadas em situações reais.

Components List:

  • 1x Arduino Uno
  • 1x Botão (push-button)
  • 1x Resistor de 10kΩ
  • 1x Protoboard
  • Fios de conexão

Examples:

// Definição do pino do botão
const int botaoPin = 2; // O botão está conectado ao pino digital 2
volatile int contador = 0; // Variável que será incrementada pela interrupção

// Função de interrupção
void incrementoContador() {
  contador++;
}

void setup() {
  // Configuração do pino do botão como entrada
  pinMode(botaoPin, INPUT_PULLUP);

  // Configuração da interrupção
  // attachInterrupt(digitalPinToInterrupt(pin), função, modo);
  // digitalPinToInterrupt(botaoPin) converte o pino digital para o número de interrupção
  // RISING indica que a interrupção será acionada na borda de subida do sinal
  attachInterrupt(digitalPinToInterrupt(botaoPin), incrementoContador, RISING);

  // Inicializa a comunicação serial
  Serial.begin(9600);
}

void loop() {
  // Exibe o valor do contador no monitor serial
  Serial.print("Contagem de pulsos: ");
  Serial.println(contador);

  // Pequena pausa para evitar sobrecarregar o monitor serial
  delay(500);
}

Comentário do código:

  • const int botaoPin = 2;: Define o pino digital 2 para o botão.
  • volatile int contador = 0;: Declara uma variável "contador" que será modificada dentro da interrupção. A palavra-chave volatile é usada para informar ao compilador que essa variável pode ser alterada fora do fluxo normal do programa.
  • void incrementoContador() { contador++; }: Função chamada pela interrupção, que incrementa o contador.
  • pinMode(botaoPin, INPUT_PULLUP);: Configura o pino do botão como entrada com resistor pull-up interno.
  • attachInterrupt(digitalPinToInterrupt(botaoPin), incrementoContador, RISING);: Configura a interrupção para o pino do botão, chamando a função incrementoContador na borda de subida do sinal.
  • Serial.begin(9600);: Inicializa a comunicação serial a 9600 bps.
  • Serial.print("Contagem de pulsos: "); Serial.println(contador);: Exibe o valor do contador no monitor serial.
  • delay(500);: Pausa de 500 ms para evitar sobrecarregar o monitor serial.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.