Aloha! Depois de muito tempo (muito²!) venho continuando a série Arduino com uma “evolução” do Colorino: o Colorino V2!

Essencialmente peguei o projeto anterior do Colorino e substituí os resistores deslizantes por sensores sônicos de distância. A minha idéia inicial (e que deu certo) é a de controlar a intensidade de cada cor do led RGB aproximando ou distanciando a palma da mão do respectivo sensor sônico.

Como é de praxe, adquiri esse sensor de distância no DealExtreme. Seguem os componentes usados:

  • 1 Arduino Duemilanove ATMega328 (“Brasileirino”) [Arduino Uno];
  • 1 Led RGB 5W 70 Lumen [Deal Extreme];
  • 3 Sensores sônicos de distância HC-SR04 [Deal Extreme];
  • 3 Transistores NPN Tip122 [Wiki];
  • 1 Bateria 4V de alta descarga (pode ser uma bateria de 3,7V de celular)*;
  • 1 Bateria 9V convencional para alimentar o Arduino (“opcional”) [Google Images];
  • Muitos fios.

Na esquemática a seguir deixei apenas 1 sensor de distância para simplificar.

Nessa montagem e testes tive muitos problemas com variações loucas nas leituras dos sensores de distância. Mexi muito em código até perceber que o problema era nas variações de corrente no circuito.

Provavelmente eu deveria ter incluído resistores em algum ponto, pois, usando a alimentação de uma USB normal, com fornecimento limitado de corrente, as leituras dos sensores constantemente ficam estranhas.

Utilizando uma bateria 9V para alimentar o Arduino o problema some (demorei pra descobrir isso…).

Agora o código. Para testes, gerei uns 3 códigos diferentes até mesmo utilizando um lib para controle de sensores sônicos de distância. Mas deixo aqui apenas o primeiro código.

Analisando o código é possível começar a entender o funcionamento do sensor ultrassônico. No método processDistance um sinal é enviado a um dos sensores fazendo-o disparar um pulso de som. Assim que o mesmo sensor obtém o eco desse pulso, ele responde com um sinal para a porta do Arduino.

O tempo transcorrido nesse processo, pode ser usado para calcular a distância e, consequentemente, pode ser convertido para a intensidade que o led RGB deve acender.

Bem… esse foi um post que queria ter feito já faz tempo pra poder desmontar o projeto e poder fazer outra coisa… =P

Na verdade queria ter postado muitas outras coisas sobre Java, mas o tempo passou, e fiquei sem postar nada em 2013… o_O

Fui!