Arduino - Programa 07: Interrupção (Parte 2)
Eletrônica

Arduino - Programa 07: Interrupção (Parte 2)


Prosseguindo o tutorial 7 vou apresentar o segundo modo de interrupção. Este modo permite que ao interrompermos o programa e acionarmos o botão novamente, o hardware inicie de onde parou, ou seja, é realizado uma pausa no programa.

Para este programa será utilizado o mesmo código anterior com acréscimo de algumas instruções que apresentarei no decorrer deste tutorial. O programa é este abaixo.


// 07 Programa Arduino Interrupção parte 2
volatile int state = HIGH;
int ledArray[]= {8,9,10,11,12};
int count = 0;
int timer  = 75;
int pause = 500;
void setup(){
  for(count=0; count<5; count++){
    pinMode(ledArray[count], OUTPUT);
  }
  attachInterrupt(0, ledOnOff, FALLING);
}
void loop(){
  if(state){
    for(count=0; count<5; count++){
      digitalWrite(ledArray[count], HIGH);
      delay(timer);
      if(!state){
        break;
      }
    }
    delay(pause);
    if(state){
      for(count=0; count<5; count++){
        digitalWrite(ledArray[count], LOW);
      }
      delay(pause);
    }
  }
}
void ledOnOff(){
  static unsigned long lastMillis = 0;
  unsigned long newMillis = millis();
  if(newMillis - lastMillis < 50){
  }
  else{
    state = !state;
    lastMillis = newMillis;
  }
}

Como pode ser observado este programa é o mesmo, exceto pelo acréscimo do comando break, então analisarei somente as modificações feitas a fim de acelerar o tutorial visto que a análise deste programa pode ser vista aqui. 

A instrução break será utilizada posteriormente com o comando switch. Mas aqui neste exemplo ele tem a função de fazer com que quando o botão for pressionado, saia do loop e mantenha os LEDs acesos, ou seja, funciona como uma pausa mantendo a rotina do programa intacta. E quando o botão for pressionado novamente ele retorna o programa de onde parou.


Para montarmos este exemplo será necessários os seguintes componentes:

  • Arduino Uno;
  • 5 LEDs;
  • 5 resistores de 150 Ohm;
  • 1 botão de pressão;
  • Fios ou jumpers.
O esquema para conectar o hardware é este abaixo.
Figura 1 - Esquema do hardware
Logo abaixo algumas fotos da minha montagem.
Figura 2 - Minha montagem 
Figura 3 - Minha montagem
Como pode ser visto pelas fotos a montagem é a mesma. Em seguida trago um vídeo demonstrando o funcionamento deste programa.



Você também pode baixar este e outros programas neste link.

Se você gostou, ajude o blog Eletrônica de Garagem compartilhando em suas redes sociais ou curtindo nossa fan page.

Até o próximo tutorial ! 



loading...

- Dica Tv Electronia 20nt Chassis 11ak30
Defeito--Não liga. Led vermelho aceso. Ao tentar ligar, o led passa a verde mas, no               mesmo instante, o led volta para vermelho e a fonte da tv não arma.Valores         ...

- Dica Tvs Panasonic Tx-25xd3e Chassis Euro 2m
Defeito--Este  tv estava em protecção, trazia o transístor de saída de linhas (2SD1577-               LB) em curto. Depois de o substituir, o tv arrancou apresentando o seguinte       ...

- Tv Panasonic Tx-14s1tc Chassis Z5
Defeito--Sem imagem e sem som. Apenas linhas de retorno. Seguindo a linha dos 33V, verifiquei que ao                                          ...

- Número Aleatório Por Xor-shift
Apresento a sub-rotina de geração de número pseudoaleatório que foi usada na minha parte do demo Mission Highly Improbable.  Anteriormente mostrei a sub-rotina de Phantom Club para a mesma finalidade, porém a qualidade da sequência gerada...

- Outra Rotina De Detecção De Ram 48/128k
Eu publiquei nesta postagem, uma rotina que faz a detecção no TK90X da configuração com ou sem a TKMEM-128 (128 ou 48K de RAM). Modifiquei-a e consegui fazer com que ficasse menor ainda (25 bytes).  Esta rotina testa se ocorre chaveamento entre...



Eletrônica








.