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.
- 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...