Você está na página 1de 17

Tratamento de Interrupes com ARDUINO

Professor Victory Fernandes

Neste captulo...

Controle de interrues
interrupt noInterrupts

Tratamento de interrupes externas


attachInterrupt detachInterrupt

Olhe a sua volta...

noInterrupts

Desabilita o tratamento de interrupes Interrupes podem alterar a execuo do cdigo, logo em processos especficos pode ser interessante evitar que outras coisas aconteam enquanto parte do seu cdigo executado Algumas funes no funcionam quando o tratamento de interrupes est desabilitado
Comunicao serial, PWM

interrupts

Habilita o tratamento de interrupes caso este tenha sido desabilitado Por default o tratamento de interrupes iniciado como habilitado
O Arduino disponibiliza funes para tratamento de interrupes externas que possibilitam executar funes sem a necessidade de ler constantemente o estado de um pino!

void setup() {} void loop() { noInterrupts(); // critical, time-sensitive code here interrupts(); // other code here }

attachInterrupt

O Arduino disponibiliza funes para tratamento de interrupes externas que possibilitam executar funes sem a necessidade de ler constantemente o estado de um pino!
Muito til quando queremos nos concentrar em uma atividade e ser interrompidos quando uma determinada condio acontecer

attachInterrupt

Especifica uma funo a ser chamada quando uma interrupo externa for identificada Substitui qualquer funo que tenha sido anexada a interrupo anteriormente
attachInterrupt(interrupt, function, mode)

attachInterrupt(interrupt, function, mode)

Arduino UNO
Interrupo 0 = pino2 Interrupo 1 = pino3

Arduino MEGA
Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo 0 1 2 3 4 5 = = = = = = pino2 pino3 pino21 pino20 pino19 pino18

attachInterrupt(interrupt, function, mode)

Funo a ser chamada quando a interrupo acontecer


No deve ter nenhum parmetro de entrada No deve retornar nada
a funo que efetivamente trata a interrupo! Nela voc vai colocar o cdigo que voc quer executar quando a interrupo acontecer!

attachInterrupt(interrupt, function, mode)

Define quando a interrupo ser disparada


LOW Dispara sempre que o pino estiver baixo CHANGE Dispara a interrupo sempre que o pino mudar de valor RISING Dispara a interrupo sempre que o pino sair de baixo para alto (borda de subida) FALLING Dispara a interrupo sempre que o pino sair de alto para baixo (borda de descida)

int pin = 13; volatile int state = LOW; void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); } void loop() { digitalWrite(pin, state); } void blink() { state = !state; }

detachInterrupt

Desliga o tratamento para a dada interrupo


detachInterrupt(interrupt)

detachInterrupt(interrupt)
Arduino UNO
Interrupo 0 = pino2 Interrupo 1 = pino3

Arduino MEGA
Interrupo Interrupo Interrupo Interrupo Interrupo Interrupo 0 1 2 3 4 5 = = = = = = pino2 pino3 pino21 pino20 pino19 pino18

Implementar a aplicao da sinaleira usando interrupes!

professor Victory Fernandes


www.tkssoftware.com/victory

Você também pode gostar