Páginas

sábado, 23 de novembro de 2013

Player com seletor ultrasonico


A ideia aqui é aproveitar  um tocador que tinha feito para o Android que tocava músicas do pc escolhidas no celular. O que vamos fazer aqui é criar uma interface com sensor ultrasonico sendo utilizado como seletor utilizando o Arduino, e um celular Android, com o afastamento ou aproximação da mão e relação ao  sensor ultrasonico é escolhida e mostrada  a música ou video na tela do celular, e depois ou automaticamente tocada no celular e  com o aperfeiçoamento do projeto enviando para tocar no computador.

Começando primeiramente tocando música somente no Arduino.

Então vamos lá...

Materiais utilizados :

1 Sensor Ultrasonico
1 Arduino UNO
1  Sensor de presença PIR
1 Autofalante de 8 Ohms
1 Laser efeito Visual




1- Pré projeto - Tocando som  no Arduino

Ideia do funcionamento

Este primeiro projeto tem um resultado bastante simples, emite sons dos Speakers conectados ao Arduino. Assim que ligamos o tocador, temos que fazer uma calibração com a mão ou um objeto na frente do sensor ultrassonico afastando (valor máximo)  e aproximando para obter um valor  minimo, neste estagio o laser acende, apagando após o tempo de calibração que é de 5s.
O aparelho só emite som quando tem alguem por perto, isto é quando o sensor de presensa detecta alguem . Quando o sensor não detecta, o laser fica piscando em modo standby. E ainda podemos ligar e desligar o som atraves da porta serial enviando parametros, para ligar e desligar.

Ligação dos componentes com  o Arduino

Através do códogo abaixo que esta bem comentado, podemos ver a ligação dos disppositivos com Arduino, o Laser, o sensor PIR, o sensor ultrasonico usam o 5v e o GND, o Arduino não tem tres pinos 5v, então use uma protobord ou placa para unir os fios 5v e Gnd dos dispositivos.
Quanto ao laser vc tem de usar um resistor para diminuir a voltagem, no meu caso o meu laser usa 3v.
QQ duvida entre em contato estarei disposto a responder as duvidas:
e-mail : porskoll@hotmail.com

O proximo passo é fazer tocar notas musicais, se alguem estiver disposto a ajudar !

Referencias:

http://youtu.be/57S3dylfw3I

http://youtu.be/Q7nZWcOivpA



Segue agora o código :

// tocador simples se som com sensor ultasonico

int valorSensorUltra =0; // inicializa o valor do sensor com zero
int valorMAXSensorUltra =0; // valor maximo lido na calibragem
int valorMINSensorUltra =500; // valor minimo lido na calibragem
int triPin =12; // sensor ultrasonico Trigger pino 12
int echoPin = 13; // sensor ultrasonico  Echo mpino 13
int PirSensorPresenca = 10; // sensor de presença pino 10
int laser = 7; // lus do laser pino 7
int pinSpeaker = 11;  // determina o pino do buzzer usando um pino PWM
int periodo=0; // tempo de leitura do sensor ultrasonico
int Mapeado=0; //  variavel que guarda o valor mapeado por map
int distancia=0; // distancia lida no sensor
int presenca = LOW; // utilizado pelo PIR
void ultrasonico(); // declaracao da funcao
char botao; // recebe parametro da serial para ligar= l  e deligar= d
int estadoBotao = 1; // um ligado 0 desligado

void setup () {

  Serial.begin(9600);
  pinMode(laser,OUTPUT);
  pinMode(triPin,OUTPUT);
  pinMode(echoPin,INPUT);
  calibragem(); 
  Serial.println(valorMINSensorUltra); // manda os valores para a serial 
  Serial.println(valorMAXSensorUltra);
}

void loop ()
{
  presenca = digitalRead(PirSensorPresenca);
  botao = Serial.read();
  Serial.flush();
  Botao(); // liga ou desliga o som
  
    if (presenca == HIGH && estadoBotao == 1)
    {
      ultrasonico(); // executa a funcao
      tocaSom(10,20,4000); //parametros (delay de espera,valor min,valor max)
    }
    
    else 
    {
      Standby(); // entra em estado de espera
    }
}  

//------------------------------------------------------------------------------------------------------------
// funçoes utilizadas 
void ultrasonico() // faz a leitura do sensor ultrasonico e grava na variavel global distancia
  digitalWrite(triPin,LOW);
  digitalWrite(triPin,HIGH);
  delay(10);
  digitalWrite(triPin,LOW);
  periodo = pulseIn(echoPin,HIGH);
  distancia = (periodo / 58);// em centimetros
}

void calibragem() // funcao calibragem
{
  digitalWrite(laser,HIGH); // liga o laser

  while (millis() < 5000 ) // faz a calibragem entre o menor e maior valor do sensor
  {
    ultrasonico();
    if (distancia  > valorMAXSensorUltra) 
    {
      valorMAXSensorUltra = distancia;
    }
    if (distancia  < valorMINSensorUltra) 
    {
      valorMINSensorUltra = distancia;
    }
  }
  digitalWrite(laser,LOW);  // desliga o laser
}

void tocaSom(int espera,int mapMin,int mapMax) // funcao para tocar o som
  valorSensorUltra = distancia; // grava o valor lido na funcao ultrasonico
  int mapeado = map(valorSensorUltra, valorMINSensorUltra,valorMAXSensorUltra,mapMin,mapMax); // mapeia o o valor maximo e minino feito na calibragem  entre a maior e menor frequencia
  tone(pinSpeaker,mapeado,20); // toca um som no pino com a frequencia do mapeamento por 20 mili segundos
  delay(espera);
}

void Standby()
{
  digitalWrite(laser,HIGH);
  delay(300);
  digitalWrite(laser,LOW);
  delay(300);
}

void Botao()
{
  if (botao == 'd')
  {
    estadoBotao = 0;
  }
  
  if (botao == 'l')
  {
    estadoBotao = 1;
  } 
}

Nenhum comentário:

Postar um comentário