buscape

http://links.lomadee.com/ls/OFBSUDtfNEJ2d2M3dDsyNzg0NjY1NzswOzEzNTszMzcwNTQ4Nzs7QlI7MTs7MA--.html?kw=geladeira%2C+smart+tv+samsung+42%2C+notebook

terça-feira, 19 de fevereiro de 2013

Sensor de Toque

A programação do Sensor de Toque, praticamente é igual ao do Sensor de Luz, mas é mais pratico usar esse Sensor numa porta Digital do Arduino, porque nesse sensor você só irá ligar e desligar algo, vai ser 0 quando estiver pressionado ou 1 quando não pressionar o botão (ou vice versa dependendo do circuito que você queira), na minha opinião, o mais adequado para isso seria usar o push button. Mas podendo fazer numa porta analógica, ai seria melhor usar a Chave Switch porque podemos controlar um pouco a intensidade do toque no sensor.

     Quando usamos as portas analógicas do Arduino, o arduino irá fazer uma leitura de 0-1023 na porta digital, a leitura vai ser 0-1, mas na programação colocamos HIGH (1) e LOW (0).

     Para quem não conhece o que é um Push Button ou Chave Switch, logo abaixo tem foto desses sensores e para quem não sabe montar o Sistema do Sensor de Toque aqui o link para saber montar.


     Como disse a programação não tem mistério praticamente o idem do Sensor de Luz, mas nesse aqui estou usando o PushButton para controlar os LEDs mas a partir disso dá para usar no sensor de toque, por exemplo o projeto desviar de obstáculos.

     O circuito do PushButton é fácil de montar mas tem que prestar atenção no botão nos terminais, ver onde ficar o NA e o NF (Normalmente Aberto e Fechado). O circuito do RGB é independente do botão os circuitos não se misturam como mostra a imagem a seguir:

Programação:

int led13 = 13;
int R = 11;
int G = 10;
int B = 9;
int botao13 = 2;
int valor13 = 0;
int botaoR = 3;
int valorR = 0;
int botaoG = 4;
int valorG = 0;
int botaoB = 5;
int valorB = 0;
int botaoReset = 6;
int valorReset = 0;
void setup()
{
  pinMode(led13, OUTPUT);
  pinMode(R, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(botao13, INPUT);
  pinMode(botaoR, INPUT);
  pinMode(botaoG, INPUT);
  pinMode(botaoB, INPUT);
  pinMode(botaoReset, INPUT);
}
void loop()
{
  // Liga a Desliga o Led13
  valor13=digitalRead(botao13);
  if(valor13 == HIGH)
  {
    digitalWrite(led13, HIGH);
  }
  else
  {
    digitalWrite(led13, LOW);
  }
  // Liga a Desliga Cores do RGB
  valorR=digitalRead(botaoR);
  valorG=digitalRead(botaoG);
  valorB=digitalRead(botaoB);
  valorReset=digitalRead(botaoReset);
  if(valorR == HIGH)
  {
    digitalWrite(R, HIGH);
    digitalWrite(G, LOW);
    digitalWrite(B, LOW);
  }
  if(valorG == HIGH)
  {
    digitalWrite(R, LOW);
    digitalWrite(G, HIGH);
    digitalWrite(B, LOW);
  }
  if(valorB == HIGH)
  {
    digitalWrite(R, LOW);
    digitalWrite(G, LOW);
    digitalWrite(B, HIGH);
  }
  if(valorReset == HIGH)
  {
    digitalWrite(R, LOW);
    digitalWrite(G, LOW);
    digitalWrite(B, LOW);
  }
}



     Explicando a primeira parte da programação, o 1º botão só vai servir para ligar o LED quando for pressionado, quando não for, o LED fica apagado. Para fazer isso como vimos usei a programação else serve para fazer o contrario (dependendo da programação) do if, o Arduino irá ler assim: "SE (if) botão for igual a 1 (HIGH), o LED acende, DO CONTRARIO (else) caso o botão não fique pressionado o LED apaga. Não colocando o else, o Microcontrolador irá entender que quando pressionar uma vez o LED ficará acesso e não apaga.

     Na programação, devemos sempre colocar até os mínimos detalhes como você quer, quando quer que uma situação (exemplo) o LED acenda e outra situação o LED apague, porque se não pode gerar conflito dependendo da programação.

     Na segunda parte da programação, ai usei 4 botões para isso, cada um vai ligar uma única cor (sem fazer misturas de cores) e o quarto botão vai ser um botão de Reset que vai apagar todas as cores independendo de qual cor esteja acesso.

 Como falei um pouco antes, eu tive que detalhar a programação falando como eu queria que funcionasse, que se eu aperta o botaoR, quero que só a cor vermelha acenda fique HIGH e outras LOW. Caso aperte o botaoG quero que só o verde acenda e os outros apaguem e caso eu aperte o botaoB só o azul fique HIGH e o resto LOW. Mas tipo fazendo isso em qualquer sequencia de quando eu apertar o botão, ai no botaoReset como quero que apague tudo deixei claro que quando eu aperta-se o botão, todos vão se apagar, vão ficar LOW.

Nenhum comentário:

Postar um comentário