18-2 Grupo 7

## Autores

* Alexandre Rosa (0040961713009)
* Erick Terra (0040961713022)
* Felipe Feltrin (0040961713033)
* Gabriel Ranieri (0040961713007)
* Henrique Giusti (0040961713034)

## Projeto

> Mini Piano
>
>

## Resumo

> O projeto tem como objetivo permitir a criação de músicas dentro e fora de softwares musicais de forma simples. Por possuir um tamanho reduzido, o Mini Piano pode ser levado para qualquer lugar sem dificuldades.
>
>

## Softwares/Materiais

### Materiais

* Arduino Genuino Uno
* Cabo USB 2.0
* 12 x Botões Push Down
* 1 x Placa Perfurada
* 12 x Teclas de Piano Infantil
* 1 x Alto Falante
* Protoboard
* Conectores
* Fios
* Madeira

## Metodologia

> A ideia para o projeto partiu do principio de criar um piano que fosse fácil de ser transportado, por isso seu tamanho reduzido, mas que atendesse as funcionalidades básicas de um piano maior, para isso usamos o Arduino UNO junto com uma placa com doze botões, essa representando apenas uma oitava do piano convencional, e um alto falante para que se pudesse ouvir as notas fora de um software de música.
>
>

> Também foi pensada a ideia de permitir usar o Mini Piano na criação de músicas dentro de um software de criação de sons, visando à compatibilidade com os principais softwares disponíveis no mercado.
>
>

## Desenvolvimento

> A principio procuramos obter as teclas para a construção do projeto, para isso foi efetuada a compra de um piano infantil, que teve as teclas e o alto falante removidos, após isso, separamos apenas a oitava que precisávamos, já que o piano comprado possuía as teclas em posições irregulares, e em pose de uma placa perfurada, foi criado o circuito do piano, através da soldagem dos botões Push Down na placa, seguindo um exemplo da posição das notas, conectados cada um a um pino, compartilhando apenas a voltagem do pino de 5V do Arduino.
>
>

> Depois do circuito feito, foi montado um case de madeira com as teclas posicionadas sobre os botões.
>
>

> Partimos para programação, utilizando alguns exemplos feitos em aula, definimos dentro do código as notas, os pinos, contidos dentro de um array, que iam representa-las e a frequência de cada uma que seria emitida pelo alto falante, dentro da função loop, chamamos outra função, chamada *OnButtonPressed*, que verifica qual botão foi apertado e manda o alto falante, conectado a um pino PWM, emitir a frequência da nota que aquele botão representa.
>
>

## Código

```
 #define c 261
 #define cs 277
   #define d 293
   #define ds 311
   #define e 329
   #define f 349
   #define fs 369
   #define g 391
   #define gs 415
   #define a 440
   #define as 466
   #define b 493

   #define speaker 3

 #define C 13
 #define Cs 12
 #define D 11
 #define Ds 10
 #define E 9
 #define F 8
 #define Fs 7
 #define G 6
 #define Gs 5
 #define A 4
 #define As 2
 #define B A5

 int btArray[11] = {C, Cs, D, Ds, E, F, Fs, G, Gs, A, As};
 int btAnalog = B;

 void setup()
 {
   pinMode(3, OUTPUT);

  pinMode(13, INPUT);
  digitalWrite(13, LOW);

     pinMode(12, INPUT);
  digitalWrite(12, LOW);

  pinMode(11, INPUT);
  digitalWrite(11, LOW);

  pinMode(10, INPUT);
  digitalWrite(10, LOW);

  pinMode(9, INPUT);
  digitalWrite(9, LOW);

  pinMode(8, INPUT);
  digitalWrite(8, LOW);

  pinMode(7, INPUT);
  digitalWrite(7, LOW);

  pinMode(6, INPUT);
  digitalWrite(6, LOW);

  pinMode(5, INPUT);
  digitalWrite(5, LOW);

  pinMode(4, INPUT);
  digitalWrite(4, LOW);

  pinMode(2, INPUT);
  digitalWrite(2, LOW);

  pinMode(A5, INPUT);
  analogWrite(A5, LOW);

  Serial.begin(57600);
}

void loop()
{
  int bt1 = digitalRead(btArray[0]);
  int bt2 = digitalRead(btArray[1]);
  int bt3 = digitalRead(btArray[2]);
  int bt4 = digitalRead(btArray[3]);
  int bt5 = digitalRead(btArray[4]);
  int bt6 = digitalRead(btArray[5]);
  int bt7 = digitalRead(btArray[6]);
  int bt8 = digitalRead(btArray[7]);
  int bt9 = digitalRead(btArray[8]);
  int bt10 = digitalRead(btArray[9]);
  int bt11 = digitalRead(btArray[10]);
  int bt12 = analogRead(btAnalog);

     OnButtonPressed(bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9, bt10, bt11, bt12);
}

void OnButtonPressed(int bt1, int bt2, int bt3,int bt4,int bt5,int bt6,int bt7,int bt8,int bt9,int bt10,int bt11,int bt12)
{
  if(bt1 == HIGH)
  {
       tone(speaker, c);
    Serial.print("a");
  }

     if(bt2 == HIGH)
  {
       tone(speaker, cs);
    Serial.print("a");
  }

     if(bt3 == HIGH)
  {
       tone(speaker, d);
    Serial.print("a");
  }

     if(bt4 == HIGH)
  {
       tone(speaker, ds);
    Serial.print("a");
  }

     if(bt5 == HIGH)
  {
       tone(speaker, e);
    Serial.print("a");
  }

     if(bt6 == HIGH)
  {
       tone(speaker, f);
    Serial.print("a");
  }

     if(bt7 == HIGH)
  {
       tone(speaker, fs);
    Serial.print("a");
  }

     if(bt8 == HIGH)
  {
       tone(speaker, g);
    Serial.print("a");
  }

     if(bt9 == HIGH)
  {
       tone(speaker, gs);
    Serial.print("a");
  }

     if(bt10 == HIGH)
  {
       tone(speaker, a);
    Serial.print("a");
  }

     if(bt11 == HIGH)
  {
       tone(speaker, as);
    Serial.print("a");
  }

     if(bt12 == HIGH)
  {
       tone(speaker, b);
    Serial.print("a");
  }
   }

```

## Resultados

> Esperávamos ter sucesso na reprodução das notas, mas enfrentamos problemas com o código, onde, após pressionar um botão, um som agudo ficava tocando infinitamente, tentamos resolver o problema, executando testes com outros botões e verificando o nosso circuito, mas infelizmente, o problema persistiu.
>
>

> O objetivo de fazer um piano fácil de transportar, foi alcançado, levamos um tempo para conectar todos os fios no Arduino, mas se deixamos esses fios previamente colocados, onde o usuário apenas pluga no Arduino, o piano se mostra possível de ser levado a qualquer lugar.
>
>

> Devido aos problemas enfrentados, a ideia de usarmos o piano em softwares de música foi deixada de lado, podendo ser implementada no futuro com a de ideia de continuação do projeto.
>
>

## Conclusão

> Mesmo enfrentando problemas e infelizmente não alcançado um dos principais objetivos, fazer o piano tocar, o projeto foi de grande importância para o grupo, o conhecimento adquirido construindo o projeto, testando e corrigindo erros, foi muito bem vindo, já que podemos utilizá-lo em outros projetos envolvendo o Arduino, um dispositivo que pode ser muito usado em nossa área.
>
>

> Surgiu entre o grupo a ideia de continuarmos o projeto, faze-lo se comunicar com softwares de música, o principal objetivo é o de facilitar o trabalho de sonoplastas, que muitas vezes, precisam levar um teclado grande para algum lugar ou utilizar o teclado do próprio computador para fazer música em um software, o que é horrível, já com o nosso piano as coisa ficariam bem mais fáceis para eles.
>
>