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 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