Site icon AranaCorp

Usar interrupções com o Arduino

As interrupções permitem que o microcontrolador execute uma função quando um evento ocorre num dos pinos de interrupção. Em vez de ler constantemente o valor de um sensor, o programa só dispara quando o valor do sensor se altera. Isso resolve muitos problemas de disposição de tarefas.

Material

Esquema

Na placa Arduino UNO, existem dois pinos que suportam interrupções: os pinos 2 e 3. Assim, vamos ligar a saída do botão ao pino 2 do Arduino.

Lembrete dos pinos digitais compatíveis com interrupções:

Uno, Nano, Mini, other 328-based2, 3
Uno WiFi Rev.2, Nano Everytodos os pinos digitais
Mega, Mega2560, MegaADK2, 3, 18, 19, 20, 21
Micro, Leonardo, other 32u4-based0, 1, 2, 3, 7
Zerotodos os pinos digitais, exceto o 4
MKR Family boards0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Nano 33 IoT2, 3, 9, 10, 11, 13, 15, A5, A7
Nano 33 BLE, Nano 33 BLE Sensetodos os pinos
Duetodos os pinos digitais
101todos os pinos digitais (Somente os pinos 2, 5, 7, 8, 10, 11, 12, 13 funcionam com CHANGE)

Código para gestão de interrupções

A sintaxe para inicializar uma interrupção é a seguinte:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

Sendo: pin o pino utilizado; ISR, a função a ser ativada quando o evento é detectado; e modo, o modo de detecção utilizado.

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), onEvent, CHANGE);
  Serial.println(F("Système intialisé"));
}

void loop() {
  digitalWrite(ledPin, state);
}

void onEvent() {
  state = !state;
  Serial.print(F("Switch LED 13 : "));
  if(state){
    Serial.println(F("ON"));
  }else{
    Serial.println(F("OFF"));
  }
}

Atenção: Na função onEvent(), as funções millis() e delay(), que dependem de interrupções, não funcionarão.

Funções a saber para ir mais longe na gestão das interrupções:

Resultado

Uma vez carregado o código, o LED do Arduino deverá acender e apagar quando o botão é pressionado.

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Exit mobile version