PADRÃO APRESENTADO SLIDE 1 TÍTULO

VÁ PARA O BLOGGER EDITAR HTML E ENCONTRAR ESTE TEXTO E SUBSTITUIR PELA SUA DESCRIÇÃO DO POST EM DESTAQUE......

PADRÃO APRESENTADO SLIDE 2 TÍTULO

VÁ PARA O BLOGGER EDITAR HTML E ENCONTRAR ESTE TEXTO E SUBSTITUIR PELA SUA DESCRIÇÃO DO POST EM DESTAQUE......

PADRÃO APRESENTADO SLIDE 3 TÍTULO

VÁ PARA O BLOGGER EDITAR HTML E ENCONTRAR ESTE TEXTO E SUBSTITUIR PELA SUA DESCRIÇÃO DO POST EM DESTAQUE......

PADRÃO APRESENTADO SLIDE 4 TÍTULO

VÁ PARA O BLOGGER EDITAR HTML E ENCONTRAR ESTE TEXTO E SUBSTITUIR PELA SUA DESCRIÇÃO DO POST EM DESTAQUE......

PADRÃO APRESENTADO SLIDE 5 TÍTULO

VÁ PARA O BLOGGER EDITAR HTML E ENCONTRAR ESTE TEXTO E SUBSTITUIR PELA SUA DESCRIÇÃO DO POST EM DESTAQUE......

quinta-feira, 1 de outubro de 2015

07 Programa Arduino: Interrupção (Parte 1)

No tutorial de hoje vou falar sobre a interrupção do arduino. Esta função permite interromper uma tarefa que esteja sendo executada pelo arduino a qualquer momento. Uma situação do tipo pode parecer sem lógica, mas em determinado problema pode ser muito útil.

Iremos montar um efeito sequencial de LEDs e interromper o programa de dois modos. Devido a isso este tutorial estará dividido em duas partes (Parte 1 e 2). No primeiro programa a interrupção retornará sempre ao inicio do loop, ou seja, a sequência dos LEDs sempre será reiniciada quando o botão for pressionado novamente.


// 07 Programa Arduino Interrupção parte 1
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);
}
delay(pause);
for(count=0; count<5; count++){
digitalWrite(ledArray[count], LOW);
delay(timer);
}
delay(pause);
}
}
void ledOnOff(){
static unsigned long lastMillis = 0;
unsigned long newMillis = millis();
if(newMillis - lastMillis<50){
}
else{
state = !state;
lastMillis = newMillis;
}
}

Este programa inicia-se declarando a variável state como sendo volatile. Declarar uma variável volatile significa que a variável pode ser alterada ao longo do programa. A aplicação mais comum desta variável é em interrupções como no nosso caso.

No arduino uno, há duas interrupções, uma interrupção feita através da porta digital 2 chamada de interrupção 0 e na porta 3 chamada de interrupção 1, diferente do uno o arduino mega, tem quatro interrupções adicionais: a interrupção 2 ligada ao pino digital 21, a interrupção 3 ligada ao pino 20, a interrupção 4 é ligada ao pino digital 19 e a interrupção 5 é ligada ao pino 18.


Em seguida temos a função attachInterrupt(0, ledOnOff, RISING), ela utiliza três argumentos, 0 significa a interrupção que estamos utilizando, no nosso caso a interrupção 0 ligada a porta 2, podemos também utilizar a interrupção 1, bastando alterá-la na função e a conexão no hardware para a porta 3. Depois chamamos a função ledOnOff que não retorna nenhum dado, ela evita um erro chamado de bounce (ou flutuação), que provoca o falso acionamento do botão. Logo após temos o modo de interrupção, que pode ser de quatro tipos, LOW que interrompe sempre que o pino estiver em baixo; CHANGE interrompe sempre que o pino muda de valor; RISING interrompe sempre que o pino muda de LOW para HIGH; e FALLING interrompe sempre que o pino altera de HIGH para LOW. Atente-se ao modo de interrupção deste programa.


A função void ledOnOff() como comentei anteriormente evita o falso acionamento do botão, a variável lastMillis é declarada como sendo uma variável do tipo static, essa forma faz com que a variável mantenha seu valor durante a chamada da função. A função millis() armazena o tempo transcorrido desde o inicio do programa. Observe a comparação da diferença do tempo em lastMillis e newMillis que caso seja menor do que 50 ms não acontece nada, evitando o bounce. Mas se a diferença for maior, a variável state que armazena LOW muda para HIGH, isso porque temos uma operação lógica sendo efetuada, ou seja, o comando ! significa inversão, ou seja, o inverso de HIGH é LOW e vice-versa.


Quando o botão for pressionado e o tempo de acionamento for maior do que 50 ms o programa instantaneamente será interrompido. Se o botão for pressionado outra vez o programa reinicia e volta a funcionar.

Uma interrupção é considerado por muitos uma técnica avançada, mas se for programada de forma correta não proporcionará possíveis erros inesperados. Outra constatação é que não é possível utilizar a função delay() dentro de uma rotina de interupção.


Por fim, acredito que temos base teórica o suficiente desde os tutoriais passados para fazermos análises mais rápidas dos códigos que aqui apresento.


Para montar este programa necessitamos dos seguintes componentes:

  • Arduino Uno;
  • 5 LEDs;
  • 5 resistores de 150 Ohm;
  • 1 botão de pressão;
  • Fios ou jumpers.
As conexões que devemos fazer estão na imagem abaixo.
Figura 1 - Esquema elaborado com Fritzing
O esquema ainda está meio confuso, mas já estou pegando jeito com o Fritzing (depois escrevo um artigo apresentando-o). Continuando, abaixo apresento algumas imagens da minha montagem.
Figura 2 - Minha montagem
Figura 3 - Minha montagem
Figura 4 - Minha montagem
Depois de feito a montagem do hardware, não pode faltar o vídeo.


Os programas também podem ser baixados, basta clicar aqui e escolher.

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

Até o próximo !
Compartilhar:

terça-feira, 29 de setembro de 2015

07 Programa Arduino: 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 ! 
Compartilhar:

Revistas de Eletrônica CEKIT

Se você é um leitor assíduo do blog Eletrônica de Garagem, certamente deve se recordar do curso de eletrônica básica que postei tempos atrás. Mas se você não o conhece, lhe convido a conhecer o material clicando aqui.

Estas revistas que estarei apresentando, é um material complementar ao curso de eletrônica básica CEKIT. Sendo muito importante pois, apresenta ao leitor alguns projetos simples que o ajudaram a elucidar o conhecimento adquirido. 

Este material foi obtido graças a ajuda de amigos no Facebook que compartilham e não permitem que estas revistas se percam no tempo.

Os projetos possuem esquemas e é tudo ilustrado. Facilitando assim a compreensão. A imagem abaixo apresenta parcialmente o que será apresentado nas revistas, sendo que ela conta com 34 projetos !


Pela imagem acima já podemos ter ideia do que vamos ter contato, ou seja, projetos que além de interessantes, irão ajudar iniciantes na eletrônica, como por exemplo o projeto de uma fonte de alimentação.

Para fazer o download das revistas basta clicar aqui.

Se você gostou, ajude compartilhando o blog Eletrônica de Garagem ou curtindo nossa fan page no Facebook.

Boas montagens ! 
Compartilhar:

quinta-feira, 24 de setembro de 2015

Catálogo de Transistores (Muito útil)

Certamente você já deve ter comprado algum transistor em que precisou o mais urgente possível verificar se ele era compatível para uma determinada montagem ou projeto. 

Devido a isto, estou disponibilizando um pequeno catálogo com os transistores mais comuns que temos contato no mercado. O catálogo, elaborado pelo Senai apresenta não só as especificações mais rotineiras encontradas, como também alguns termos comuns e alguns tipos de encapsulamentos disponíveis. Além disso há informações de alguns transistores de rádio frequência. 

Assim como eu, você provavelmente recorrerá muito a este material que tem muitas informações úteis e de acesso rápido. Uma breve imagem do catálogo é esta.



Para fazer o download clique aqui.

Espero que este material seja muito útil. Boas montagens !
Compartilhar:

sexta-feira, 18 de setembro de 2015

Simulador de Circuitos Digitais LogiSim

O software LogiSim é um simulador de circuitos digitais. Além disso ele é totalmente gratuito, possibilitando ao usuário o uso total das ferramentas oferecidas pelo programa. Este software é bastante difundido no meio educacional, principalmente em cursos de ciência da computação, mas o LogiSim não se restringe só aos alunos de computação, ele pode ser utilizado por qualquer pessoa. Outro fato é que o software está traduzido para português, o que nos permite utilizá-lo com maior compreensão. 

A área de trabalho é esta:




Se observarmos, a área de trabalho é bem simples, mas isso não desmerece a ferramenta, que por sinal é excelente. Caso você não saiba utilizá-lo fique tranquilo, o menu ajuda contém todo material de apoio em português !

Para fazer download do software basta acessar o site.


Espero que o LogiSim seja muito útil à todos !
Compartilhar:

sábado, 12 de setembro de 2015

Tabela de Diodo Zener

Hoje deixo aqui uma tabelinha de diodos do tipo zener para download, onde irá auxiliar tanto projetistas quanto técnicos de manutenção em eletrônica.

O link para download é este aqui:

Espero que gostem, qualquer problema no download comente aí. Até a próxima !
Compartilhar:

sexta-feira, 11 de setembro de 2015

Apostila Arduino Básico Vida de Silício Vol. 2

Leitores frequentes do blog já devem ter notado que fiz um post apresentando a apostila de arduino elaborada pelo blog vida de silício, está apostila que mencionei é o volume 1. Agora já podemos ter acesso ao volume 2 que acabou de sair do forno ! Que igualmente ao volume anterior continua com a didática para leigos. E sem falar das várias novidades. A capa da apostila é esta:



Pela capa já podemos ter ideia do quão elaborado é o material presente. Para fazer o download é preciso preencher alguns dados básicos e pronto,  já podemos salvar a cópia em nosso computador.

Espero que seja útil à todos que estejam aprendendo arduino, boas montagens !
Compartilhar:
Proxima  → Página inicial

Marcadores

Total de visualizações