Sensor de Scanner & Arduino como Lâmpada RGB.

capa

Vez em quando consigo umas coisas bem legais na sucata, alguns já conhecem o meu problema com esse tipo de coisa e fornecem aparelhos para que eu possa assimilar. Algum tempo atrás ganhei de uma professora uma impressora/Scanner Lexmark quebrada, desmontei-a e guardei a eletrônica e algumas partes da mecânica e joguei a carcaça e o o que sobrou fora. Entre os componentes da parte eletrônica estava o sensor do Scanner, que guardei sem imaginar algo bacana pra fazer.

Esses dias estava fazendo scan de umas provas para estudar pra uma final, mas em outra impressora é claro, e reparei quando levantei a tampa que o sensor do scanner emitia uma luz verde, isso me fez pensar que em um hack do Sprite_tm, em ele falava que esses sensores possuem um LED RGB para iluminação além do sensor para scan da imagem, isso em scanners mais modernos, nos antigos o que você vai encontrar é um monte de espelhos e uma lâmpada fluorescente (O que não deixa de ser legal, ainda mais por fornecer um conversor boost de bandeja).

Bacana, só precisava achar agora onde eu havia colocado esse sensor e esperar que fosse desse tipo, já que nem lembrava como era.

Bom, depois de uma boa procura na minha bagunça eu consegui encontrá-lo, mas era bom esperar acabar a última semana de aula pra poder passar um tempo entendendo a pinagem do sensor e coisa do tipo. Depois de encerrado o semestre, descobri com o uso de um multímetro que no encaixe do cabo, quatro dos contatos são ligados diretamente ao LED RGB, nada de resistores, só o LED, que era ânodo comum aliás.

IMG_0763
Jumpers “cuidadosamente” encaixados no conector.

Como o LED RGB contínua sendo um LED, este foi ligado ao Arduino da maneira usual, a diferença é que como este LED é ânodo comum o mesmo deve ser ligado ao 5V e não no GND, e para acender uma das cores o pino relativo aquela cor deve ser colocado em LOW.

IMG_0770
Hardware pronto, software à caminho.

Feito isso, bastava criar um código bacana pra mostrar umas cores bonitas.

Esse código pode ser usado para qualquer LED RGB, desde que ânodo comum, talvez aquele que está jogado na sua maleta seja cátodo comum e algumas pequenas alterações sejam necessárias, mas é coisa pouca. Segue abaixo o código Arduino:

//Escrito por Robson Couto 
//Dezembro de 2014
//www.dragaosemchama.com.br

//definição dos pinos utilizados
#define blue 9
#define red 10
#define green 11
int bluevalue,greenvalue,redvalue,i,j,k; //variáveis a conter o valor
//da onda em cada pino

void setup(){
  pinMode(blue,OUTPUT);//pinos como saída
  pinMode(red,OUTPUT);
  pinMode(green,OUTPUT);
  
  redvalue=128; //primeira cor =vermelho+verde=amarelo
  greenvalue=128;
  bluevalue=0; 
  i=-1;
  j=1;
  k=0;
}
void loop(){
  redvalue=redvalue+i;// mudanças no valor em cada pino a cada ciclo do loop
  greenvalue=greenvalue+j;
  bluevalue=bluevalue+k; 
  
  analogWrite(red,255-redvalue);//atuaização dos valores em cada pino   
  analogWrite(green,255-greenvalue);
  analogWrite(blue,255-bluevalue);
  
  delay(50);//pode ser variado para troca mais rápida ou lenta de cores. 
   if(redvalue==255){ //define se uma cor vai ser aumentada, decrescida ou zerada.
     i=-1;            //confira imagem ilustrativa no post para mais detalhes.
     j=1;
     k=0;
   }
   if(greenvalue==255){
     i=0;
     j=-1;
     k=1; 
   }
   if(bluevalue==255){
     i=1;
     j=0;
     k=-1;
   }
      
}

 

O que esse código faz, em suma, é trocar os valores entre vermelho, verde a azul. Você pode ver como os valores são passados ao LED a partir da função analogWrite() na onda representada na imagem abaixo:

rgb
Valores das cores ao longo do tempo.

Quando as cores são misturadas, essas são origem a novas cores, por exemplo, vermelho e verde resultam na cor amarela, enquanto vermelho e azul resultam em magenta.

fed2dd810208c843
Mistura das cores vermelho, verde e azul.

Abaixo um vídeo da coisa funcionando, as cores vão sendo trocadas lentamente mas você pode deixar ao seu gosta apenas mudando o valor do delay() no loop do código.

Então é isso, obrigado por ler e qualquer dúvida é só deixar nos comentários que a gente ajuda. Não esquece de curtir a página do Dragão no Facebook também. Até outro post sobre tecnologia/ Arduino/DIY/ Sucata/tanto faz.

Robson Couto

Recentemente graduado Engenheiro Eletricista. Gosto de dedicar meu tempo a aprender sobre computadores, eletrônica, programação e engenharia reversa. Documento meus projetos no Dragão quando possível.

4 thoughts to “Sensor de Scanner & Arduino como Lâmpada RGB.”

  1. Olá Robson! Gostei muito do seu tutorial; tenho alguns desses módulos, tirados de impressoras; mas, gostaria de saber uma coisa: qual a voltagem e, principalmente a corrente que esses Leds podem ser submetidos pois, eu liguei um em uma fonte de 5V de 4A e, parece que queimou o Vermelho… Obrigado

    1. Poxa Daniel. Eu fiz esse tutorial há um tempinho e noobei nessa questão dos resistores. Cada terminal (R,G e B) tem que ter um resistor. Como não se tem datasheet desse LED fica difícil saber a corrente que eles precisam e a queda de tensão no mesmo. Sugiro algo em torno de 220 ou 330 ohm.
      Que pena :( Mas pelo menos se as componentes verde e azul ainda funcionam dá pra fazer algo legal.
      Abraço.

      1. Obrigado por me responder Robson!
        Fiz como vc falou: coloquei resistores de 330 ohm e funcionou!
        Outra coisa: vc já tentou tirar a lâmpada (Led) do invólucro de plástico preto? Pois, acho que fica mais fácil de se fazer (montar) algo mais estético não é?
        Abçs

        1. Oi Daniel.
          Eu lembro que abri e era até bem fácil. Mas a parte transparente que difunde a luz ficava presa nesse plástico preto que você vê na imagem. Como já tinha LEDs RGB aqui eu deixei coberto mesmo.
          Abraço.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *