Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
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:
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.