Índice:

O Piano Arduino: 3 etapas
O Piano Arduino: 3 etapas
Anonim
O Piano Arduino
O Piano Arduino

Este "Piano" é capaz de tocar uma oitava de um piano real. O pressionamento de botões representará o pressionamento de uma tecla no piano. O som será transmitido por meio de um alto-falante Piezo.

Etapa 1: Materiais

1. Arduino Uno

2. Fio USB

3. 3 breadboards

4. 8 botões

5. 8 resistores de 100 Ohm

6. Alto-falante "Piezo"

7. Muitos fios machos (cerca de 20)

8. Ferro de soldar

Etapa 2: construir a configuração

Construir a configuração
Construir a configuração

Construa 8 botões com cada um indo para 8 pinos diferentes no Arduino, adicionando um resistor a cada um e conectando-os ao aterramento (usando os fios machos).

Conecte o alto-falante ao pino designado do Arduino e o outro lado ao aterramento. Você terá que soldar os fios ao alto-falante para que ele não caia. Certifique-se de que os dois fios soldados ao alto-falante não se toquem.

Etapa 3: Construindo o Código

#define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110_Bdefine 104 #define NOTE_A2 110_Bdefine #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_E3 233 NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 NOTA_F4 440 #define 462 #d efine NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5_Cdefine # 9define # 9define # 9define # 9define # 9define # 9define 947 # 9define 947 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define #define definir NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_Bdefine # 4define_define # 4define # 4define # 39518 # 39define NOTE_A7 NOTE_A7 # 4define NOTE_AS7 3729 #define NOTE_Bdefine # 4define. 4699 #define NOTE_DS8 4978

Estes "# define" são para dizer ao alto-falante qual frequência faz qual nota

const int C = 2; const int D = 3; const int E = 4; const int F = 5; const int G = 6; const int A = 7; const int B = 8; const int C2 = 9; const int piezoPin = 10; int cEstado = 0; int dState = 0; int eState = 0; int fState = 0; int gState = 0; int aState = 0; int bEstado = 0; int c2State = 0;

Designe os pinos do Arduino para os botões. "cState, dState, eState, etc;" são variáveis que salvam se o botão é pressionado. Um 0 significa que não está pressionado, um 1 significa que está pressionado.

void setup () {// coloque seu código de configuração aqui, para executar uma vez: pinMode (10, OUTPUT); Serial.begin (9600); }

void loop () {// coloque seu código principal aqui, para executar repetidamente: cState = digitalRead (C); dState = digitalRead (D); eState = digitalRead (E); fState = digitalRead (F); gState = digitalRead (G); aState = digitalRead (A); bState = digitalRead (B); c2State = digitalRead (C2);

O estado do botão (se está pressionado ou não) é salvo em "cState, dState, eState, etc;"

Um 0 significa que não está pressionado, um 1 significa que está pressionado.

if (cEstado == 1) {tom (piezoPin, 131); } else {noTone (piezoPin);} if (dState == 1) {tone (piezoPin, 147); } else {noTone (piezoPin);} if (eState == 1) {tone (piezoPin, 165); } else {noTone (piezoPin);} if (fState == 1) {tone (piezoPin, 175); } else {noTone (piezoPin);} if (gState == 1) {tone (piezoPin, 196); } else {noTone (piezoPin);} if (aState == 1) {tone (piezoPin, 220); } else {noTone (piezoPin);} if (bState == 1) {tone (piezoPin, 247); } else {noTone (piezoPin);} if (c2State == 1) {tone (piezoPin, 262); } else {noTone (piezoPin);}}

Se um botão for pressionado, ele informa ao servo para tocar a freqüência de certificação (nota). A função

{noTone (piezoPin);} diz a eles que se o botão não for pressionado para reproduzir nada. Portanto, sempre que o botão for pressionado, ele tocará sua nota designada.

Recomendado: