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.
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:
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.
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 !
0 comentários:
Postar um comentário