quarta-feira, 17 de agosto de 2011

Programação Sensor de Toque (Push Button ou Chave Switch)

     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.


Vídeo:


Até mais... espero que tenham entendido mesmo, qualquer duvida já sabem!!!

2 comentários:

Unknown disse...

Olá Eduardo. Poderia me esclarecer uma dúvida? Porque ligar o push button em um resistor? Qual seria a resistência dele? Grato

Eduardo Almeida disse...

Olá Celso, bom o resistor que estou usando é de 100kohm... O resistor serve para limitar a corrente, o circuito precisa de uma carga, e no caso tem um resistor com um valor alto para que não de curto.

Esse circuito é um circuito pull-down, o arduino ficará fazendo uma leitura muito baixa ou zero, caso aperte o botão a corrente que vendo do pino de 5v (que esta conectado do outro lado do botão) irá passar e procurar a menor resistência, sendo que as malhas estão se dividindo e a corrente irá dividir também. Também o resistor do GND é maior que o resistor INPUT para leitura (caso tenha um resistor na porta de leitura) pois caso não tenha, a corrente irá direito para o GND sem que faça a leitura.

Espero que tenha esclarecido a duvida, Grato.

Postar um comentário

 
Blogger Templates