Mostrando postagens com marcador iniciantes. Mostrar todas as postagens
Mostrando postagens com marcador iniciantes. Mostrar todas as postagens

Trabalhando com Sensores de Infravermelho

Dentre todas as radiações que somos expostos diariamente, somente uma pequena porção (espectro visível) que se manifesta atraves da emissão de luz é possivel ser observada pelo olho humano. Na figura 1 um espectro eletromagnético é apresentado onde podemos observar que há varias outras radiações invisível com comprimento de onde especifico e bem conhecidos.

Figura 1.   Espectro eletromagnético - créditos Shutterstock.com 



Dentre as ondas eletromagneticas não visiveis, podemos citar o Infravermelho (IR) cujo nome significa "abaixo do vermelho" e seu comprimento de onda varia de 750 nm a 1mm.
Devido da facilidade de trabalhar com o infravermelho, nos anos 40 (2ª Guerra mundial) apareceram os primeiros controles remotos que usavam o infravermelho para enviar uma sequencia de pulsos para um receptor que interpretava esse sinal e executar alguma função, nesse casos especifico, o controle remoto detonava bombas a distancia. Até os dias de hoje o controle remoto trabalha da mesma maneira o que nos permite usa-lo para realizar algum tipo de automação.

Para realizar nosso projeto com controle remoto, você poderá comprar qualquer sensor de IR (por exemplo Hx1838) assim como qualquer controle remoto IR.......


Identificando cada botão do controle:

No principio de funcionamento do controle, cada botão corresponde um código específico, gerado por um microprocessador que fará o emissor IR piscar numa determinada sequencia binária. Quando essa sequencia pulsada chega ao receptor, o microcontrolador do receptor irá processar essa sequencia bits e realizar uma ação. 
Como você comprou qualquer controle e não conhece a codificação de cada botão, será preciso criar um circuito simples para "mapear" seu controle. Na figura 2 temos um circuito simples usando um sensor IR ligando a saída do seu Arduino. Quando qualquer botão do controle for apertado o Arduino irá receber o sinal via porta 11.

Figura 2. Circuito simples para receber dados de controle IR

Para verificar o código de cada botão, iremos pressionar um botão qualquer do controle. O sinal emitido pelo controle será capturado pelo Arduino através do sensor IR e repassado para a porta serial.  Na porta serial será possível associar cada botão a um código em Hexadecimal.
Para realizar esse e qualquer outro projeto usando sensores de IR, vamos precisar usar a biblioteca IRremote.h que pode ser facilmente achada na net. (Não sabe o que é uma biblioteca? clique aqui), os comando da biblioteca serão comentados no código abaixo:

Programa usado para códigos de cada botão do controle IR

#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);  // indicando que pino 11 será usado como entrada de dados o sensor IR
decode_results results;

void setup()  
{
    Serial.begin(9600);   // incializa porta Serial
    irrecv.enableIRIn(); // Inicializa o receptor IR
}
 
void loop()  
{
    if (irrecv.decode(&results)) //verifica se algo foi capturado no sensor IR
   {
       Serial.println(results.value, HEX); //Exibir na serial valor em Hexa lido no sensor
       irrecv.resume();  //Le o próximo valor 
   }
}

Se tudo deu certo, agora você sabe qual a codificação de cada botão do controle.
Agora com base no circuito da figura 3, vamos controlar 4 Led's que serão ligados nas portas 4,5,6 e 7. Cada Led será ligado por um botão do controle (1,2,3 e 4) e todos os Leds serão apagados quando o botão 5 for pressionado.
Figura 3. Circuito de controle de Led's por controle IR.
Segue código equivalente  ao problema apresentado acima:

#include <IRremote.h>

int RECV_PIN = 11;
int pino1 = 7;
int pino2 = 6;
int pino3 = 5;
int pino4 = 4;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()  
{
    Serial.begin(9600);   // incializa porta Serial
    pinMode(pino1, OUTPUT);
    pinMode(pino2, OUTPUT);
    pinMode(pino3, OUTPUT);
    pinMode(pino4, OUTPUT);
    irrecv.enableIRIn(); // Inicializa o receptor IR  
}
 
void loop()
{
   if (irrecv.decode(&results))
  {
    Serial.println(results.value, HEX);
    irrecv.resume();
  }

    if (results.value == 0xFD08F7) //Verifica se a tecla 1 foi acionada  
    {
      digitalWrite(pino1, HIGH);  //Acende o led vermelho  
    }
    if (results.value == 0xFD8877) //Verifica se a tecla 2 foi acionada  
    {
      digitalWrite(pino2, HIGH); //Acende o led verde  
    }
    if (results.value == 0xFD48B7) //Verifica se a tecla 3 foi acionada  
    {
      digitalWrite(pino3, HIGH); //Acende o led Amarelo  
    }
    if (results.value == 0xFD28D7) //Verifica se a tecla 4 foi acionada
    {
      digitalWrite(pino4, HIGH); //Acende o led azul  
    }
    if (results.value == 0xFDA857) //Verifica se a tecla 5 foi acionada  
    {
      //Apaga todos os leds  
      digitalWrite(pino1, LOW);
      digitalWrite(pino2, LOW);
      digitalWrite(pino3, LOW);
      digitalWrite(pino4, LOW);
    }
 
}


Agora Pratique:

Exercício 1. Reproduza o mesmo projeto apresentado na figura 3 e adicione mais tres funções ao controle:

      - O botão "play" fará todos os Led's piscarem ao mesmo tempo com intervalo de 0,5s.
   - O botão "avançar" fará com que os Led's acendam de maneira sequencial da direita para a esquerda com intervalos de 0,5s 
    - O botão "retroceder" fará com que os Led's acendam de maneira sequencial da esquerda para a direita com intervalos de 1s
Na figura 4 temos os botões que serão usados nessa automação 
Figura 4. Botões que serão usados

Exercício 2. Reproduza o mesmo projeto apresentado no exercício 1 só que agora a frequência com os Led's irão oscilar pode variar. Neste projeto, cada numero do controle representará uma velocidade (e.g.   botão 1 = 0,1 s - botão 8 = 0,8s, etc)

Desafio:

Desafio 1. Agora que você já domina o uso de controles IR, tente controlar dois motores CC usado uma ponte H e o controle IR. Não sabe controlar motor CC ou usar a ponte H? Acesse nossa postagem sobre assunto clicando aqui.

Desafio 2. Você tem controle de vídeo-game, TV ou celular que possui IR na sua casa? Tente fazer uma automação de maneira semelhante ao vídeo que pode ser acessado clicando na figura abaixo.


 Clique aqui e assista um vídeo sobre o assunto no Youtube.


Ainda ta com duvida, curta nossa pagina no facebook no link abaixo e poste sua duvida lá.


Simulador On-line para Arduino

Ola pessoal, decidi escrever essa postagem para deixar um link bem interessante para os iniciantes no Arduino. Se você deseja comprar o Arduino, mas não tem certeza se gostará (o que acho difícil) ou quer testar antes suas aptidões no desenvolvimento de soluções micro controladas, o site www.tinkercad.com traz um simulador de Arduino muito interessante, vale a pena conferir.  
123dCricuits - Ótima opção para quem quer começar no mundo do Arduino.
Alem dos videos e projetos disponíveis no site, o estudando pode iniciar um projeto escolhendo os próprios componentes e testar o resultado. Apesar do site estar em inglês, tenho certeza que ninguém terá dificuldade em começar seus projetos.

Bons estudos e bom trabalho.....



Meus primeiros exercícios de Algoritmos...

1- Fazer um algoritmo que calcule e exiba a área do quadrado onde o valor do lado do quadrado será digitado via teclado. A fórmula para calcular a área do quadrado é: 

Área= lado x lado


2- Fazer um algoritmo que calcule e exiba a área do retângulo onde os valores dos lados do retângulo serão digitados via teclado.

Área= base x altura


3- Fazer um algoritmo que calcule e exiba no monitor a área de uma circunferência onde o valor do raio será digitado via teclado. A fórmula para calcular a área de uma circunferência é: 

A = π.r²   Sendo que π= 3.14159

Quer entender porque a área do circulo é calculada assim? Assista o vídeo (em espanhol) abaixo:



4- Fazer um algoritmo que calcule e exiba a área do triangulo onde os valores da base e da altura serão digitados via teclado.

Área = (base*altura)/2

5- Fazer um algoritmo que calcule e exiba a área e o perímetro de um retângulo onde os valores dos lados do retângulo serão digitados via teclado.

6- Fazer um algoritmo que receba um número via teclado e exiba o numero anterior e o numero posterior ao numero digitado. 

7- Fazer um algoritmo que recebe um numero inteiro via teclado e mostre o valor desse número elevado ao cubo.

8- Fazer um algoritmo que ajude um estudante de física a calcular a velocidade de um carro utilizando o conceito de Movimento Retilíneo Uniforme.
Neste caso o estudante irá digitar o tempo inicial (t1), o tempo fina (t2) a distancia inicial (s1) e a distancia final (s2) via teclado.

8- Continuando a ajudar nosso aluno de física, faça um algoritmo que mostre força mínima que deve ser feita para levantar um automóvel onde o valor da massa (m) do automóvel será digitada via teclado. Considere g=10.

F=m.g

9- Fazer um algoritmo que calcule e exiba as raízes de uma equação de segundo grau onde os valores de A, B e C serão digitados via teclado.


10- Faça o teste de mesa dos exercícios abaixo e fale o que será exibido na tela do computador.

a)
Algoritmo Não_sei
Var
            A : Real
            B: Real
            C: Real
Inicio
            A=10
            B= 30
            C=A
            A=B
            B=C
            Escreva A
            Escreva B
Fim

b)
Algoritmo Não_sei
Var
            A : Real
            B: Real
            C: Real
Inicio
            A=5
            B= 30
           C=0
            A=A-2
            C=B*5
            Escreva A
            Escreva B
Fim



Regras para declaração de variáveis

Como já mencionado em nossa postagem sobre a importância das variáveis, toda variável deve possuir um nome que chamamos de identificador. Podemos utilizar qualquer nome para identificar uma variável desde que sejam atendidas as seguintes regras:

 - Os nomes sempre devem começar por um caractere alfabético;

- Esses identificadores ser constituídos de caracteres alfabéticos ou numéricos;

- Não devem conter caracteres especiais; (exemplo: * ? } - %)

- Não devem ser utilizados nomes reservados da linguagem de programação que se vai usar. Ou seja, usar um nome já utilizado por uma instrução.

Exemplos de identificadores válidos:

   delta, X, BC4R, K7, notas, media, ABC, PI, ICMS

Exemplos de identificadores inválidos:

   5X,   E(13),   A:B,   X-Y,    Nota/2,    AWq*,    P&AA,   Leia,   inicio


Cuidado na hora de declarar uma variável. Em geral as linguagens de programação são case sensitive, ou seja, se uma variável for declarada como Nota com N maiúsculo em todo nosso programa a variável Nota deve ser escrita com N maiúsculo se não o compilador não compreenderá que estamos falando da mesma variável.

Outras observações importantes:

  - Apesar da liberdade em escolher o nome, procure sempre escolher um nome que irá lembrar a função da variável. Isso irá agilizar o trabalho e ajudar muito o programador......