172.Zégneto

= Autores =

Lucas Coutinho Tomazetto - 0040961613018

Wagner Felipe Bueno - 0040961613045

João Vitor Rodrigues - 0040961613042

Dispositivos Utilizados Arduíno Nano Numeric Keypad 4x3 Dual-Axis XY Joystick hxj-35 Piezo Elétrico

=Projeto= "Mesa" de mixagem de musica.

=Resumo= Projeto para construir uma mesa de mixagem utilizando o Arduíno, um Numpad, o Joystick e o piezo que alteram a musica escolhida.

=Software/materiais utilizados= =Software:= IDE do arduino. Bibliotecas disponíveis em Bibliotecas para arduino. Classes desenvolvidas para este projeto.

=Metodologia:= A mesa usa o Arduíno em conjunto ao Numpad, Joystick e o Piezo elétrico para executar a remixagem de musicas. Nela é possível alterar musicas pré programadas, assim como fazer sua própria musica utilizando um conjunto de frequências distintas com a ajuda do Numpad. É possível também criar uma trilha sonora completamente aleatória.

=Desenvolvimento (problemas encontrados, como foram resolvidos, programas desenvolvidos)= Nosso grupo começo o projeto com a apenas o piezo em mente, com apenas uma função: A mixagem de musicas. Porem após estudos mais aprofundados, veio a ideia de fazer uso de mais técnicas de alteração musical. Inicialmente planejávamos usar ASCII ART para ser apresentada em junção a musica e utilizar 2 sensores de distância para realizar as mudanças de frequência, porem, não foi possível por certas limitações. No final corrigimos os bugs restantes.

Imagem do Projeto:






=Resultado= Conseguimos com sucessos criar uma plataforma de alteração de musicas pre programadas, assim como CRIAR nossas próprias trilhas sonoras e também criar trilhas sonoras Aleatórias.

code format="c"
 * 1) define piezo 11


 * 1) define pinX A1
 * 2) define pinY A0

//codigos para numpad int keys[6][3] = {{0, 0, 0}, {0, 1, 2}, {3, 7, 8}, {9, 4, 5}, {6, '*', 0}, {'#', 0, 0} };

//ints globais para numpad, eixo de analogico int select = 0; int numpad; int eixoX, eixoY, X, Y, k1, k2; int tempo;

void setup { //pega o tamanho dos analogico e atribui para subtrair mais tarde X = analogRead(pinX); Y = analogRead(pinY); //Pinos ligados aos pinos 4, 5, 6 e 7 do teclado - Linhas pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(piezo, OUTPUT);

//Pinos ligados aos pinos 8, 9, e 10 do teclado - Colunas pinMode(8, INPUT); //Ativacao resistor pull-up digitalWrite(8, HIGH); pinMode(9, INPUT); digitalWrite(9, HIGH); pinMode(10, INPUT); digitalWrite(10, HIGH);

//começa o serial para visualização Serial.begin(9600); Serial.println("Aperte 1, 2 ou 3 para escolher uma musica: "); Serial.println; }

//função para pegar o numpad e ver qual botão foi apertado void loop { for (int porta = 4; porta < 8; porta++) {   //Alterna o estado dos pinos das linhas digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(porta, LOW); //Verifica se alguma tecla da coluna 1 foi pressionada if (digitalRead(8) == LOW) {     k1 = porta - 3; k2 = 1; numpad = keys[k1][k2]; while (digitalRead(8) == LOW) {} if (numpad == 1) {       Serial.println("Voce selecionou musica 1, marcha imperial"); musica_1; }   }

//Verifica se alguma tecla da coluna 2 foi pressionada if (digitalRead(9) == LOW) {     k1 = porta - 3; k2 = 2; numpad = keys[k1][k2]; while (digitalRead(9) == LOW) {};

if (numpad == 2) {       Serial.println("Voce selecionou musica 2, Mario Brothers"); musica_2; }     if (numpad == 0) {       Serial.println("Você entrou no Faca Voce Mesmo"); musica_0; }   }

//Verifica se alguma tecla da coluna 3 foi pressionada if (digitalRead(10) == LOW) {     k1 = porta - 3; k2 = 3; numpad = keys[k1][k2]; while (digitalRead(10) == LOW) {}

if (numpad == 3) {       Serial.println("Voce selecionou musica 3, RANDOM "); musica_3; }   }

delay(10); }

}

void musica_1 { int musica[36] = {2272, 0, 2272, 0,  2272, 0,  2865, 0, 1912, 0,  2272, 0,  2865, 0, 1912, 0, 2272, 0,  1517, 0,  1517, 0,  1517, 0,  1433, 0, 1912, 0,  1276, 0,  1433, 0,  1912, 0, 2272, 0}; int intervalo[36] = {50, 20, 50, 20, 50, 20, 40, 5, 20, 5, 60, 10, 40, 5, 20, 5, 60, 80, 50, 20, 50, 20, 50, 20, 40, 5, 20, 5,  60, 10, 40, 5,  20, 5, 60, 40};

for (int cont = 0; cont < 36; cont++) {   eixoY = analogRead(pinY) - Y;    eixoX = (analogRead(pinX) - X) * 0.1; tone(11, musica[cont] + eixoY); tempo = (intervalo[cont] * 8) + eixoX; delay(tempo); noTone(11); } noTone(11); }

void musica_2 {

int musica[78] = {2637, 2637, 0, 2637, 0, 2093, 2637, 0, 3136, 0, 0, 0, 1568, 0, 0, 0, 2093, 0, 0, 1568, 0, 0, 1319, 0, 0, 1760, 0, 1976, 0, 1865, 1760, 0, 1568, 2637, 3136, 3520, 0, 2794, 3136, 0, 2637, 0, 2093, 2349, 1976, 0, 0, 2093, 0, 0, 1568, 0, 0, 1319, 0, 0, 1760, 0, 1976, 0, 1865, 1760, 0, 1568, 2637, 3136, 3520, 0, 2794, 3136, 0, 2637, 0, 2093, 2349, 1976, 0, 0}; int intervalo[78] = { 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,};

for (int cont = 0; cont < 78; cont++) {

eixoY = analogRead(pinY) - Y;   eixoX = (analogRead(pinX) - X) * 0.1; tone(11, musica[cont] + eixoY); tempo = (intervalo[cont] * 12) + eixoX; delay(tempo); noTone(11); } noTone(11); }

void musica_3 { long qtd, som; long var2 = 0; qtd = random(1, 50); while (var2 < qtd) {   som = random(0, 3400); eixoY = analogRead(pinY) - Y;   eixoX = (analogRead(pinX) - X) * 0.1; tone(11, som + eixoY); delay(144 + eixoX); noTone(11); var2++; } return;

}

void musica_0 { delay(100); long fmv = 0; numpad = 1; while (numpad != 0) {

for (int porta = 4; porta < 8; porta++) {     digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(porta, LOW); if (digitalRead(8) == LOW) {       k1 = porta - 3; k2 = 1; numpad = keys[k1][k2]; while (digitalRead(8) == LOW) {} if (numpad == 1) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 100 + fmv + eixoY); delay(100 + eixoX); noTone(11); }

if (numpad == 4) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 400 + fmv + eixoY); delay(100 + eixoX); noTone(11); }

if (numpad == 7) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 700 + fmv + eixoY); delay(100 + eixoX); noTone(11); }

if (numpad == 42) {

if ( fmv == 0) {           Serial.println("Som abaixo de 0 nao permitido."); }         else {           fmv = fmv - 1000; Serial.print("Frequencia alterada para area dos: "); Serial.println(fmv); }

}     }

if (digitalRead(9) == LOW) {       k1 = porta - 3; k2 = 2; numpad = keys[k1][k2]; while (digitalRead(9) == LOW) {};

if (numpad == 2) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 200 + fmv + eixoY); delay(100 + eixoX); noTone(11); }       if (numpad == 5) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 500 + fmv + eixoY); delay(100 + eixoX); noTone(11); }       if (numpad == 8) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 800 + fmv + eixoY); delay(100 + eixoX); noTone(11); }       if (numpad == 0) {         Serial.println("Voce saiu do faca a sua propria musica"); return; }

}

if (digitalRead(10) == LOW) {       k1 = porta - 3; k2 = 3; numpad = keys[k1][k2]; while (digitalRead(10) == LOW) {}

if (numpad == 3) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 300 + fmv + eixoY); delay(100 + eixoX); noTone(11); }       if (numpad == 6) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 600 + fmv + eixoY); delay(100 + eixoX); noTone(11); }       if (numpad == 9) {         eixoY = analogRead(pinY) - Y;          eixoX = (analogRead(pinX) - X)  * 0.1; tone(11, 900 + fmv + eixoY); delay(100 + eixoX); noTone(11); }       if (numpad == 35) {         if ( fmv == 3000) {           Serial.println("Som muito alto nao permitido."); }         else {           fmv = fmv + 1000; Serial.print("Frequencia alterada para area dos: "); Serial.println(fmv); }       }      }

delay(10); } } } code