Introduction: Rocola Arduino

En este proyecto se fabricará una rocola utilizando arduino

Supplies

Arduino (UNO or Mega)

Buzzer pasivo

Jumpers

Protoboard

Resistencia 220 ohm

LCD 16X2

Push button

Switch

MDF o una pequeña caja para la estructura

Opcional

Acceso a cortadora laser

Step 1: Fabricación De Caja De Soporte

Si se cuenta con acceso a cortadora laser, se debe diseñar una caja utilizando la pagina web https://es.makercase.com de 6x6x3 pulgadas. Si no se cuenta con la herramienta de corte laser

se puede utilizar un recipiente plástico.

Step 2: Realizar El Cableado De LCD

Realizar el cableado de la pantalla LCD con el Arduino MEGA como se indica en el diagrama utilizando los jumpers.

Nota: El potenciometro puede ser sustituido por una resistencia de 220 ohm.

Step 3: Cableado De Buzzer

Realizar el cableado del Buzzer como se indica en el diagrama. Cabe mencionar que la entrada del buzzer se puede conectar a cualquier otra entrada siempre que la misma sea PWM.

Step 4: Cargar Código a Arduino

A continuación cargue el siguiente código a la plataforma Arduino

#include
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);

int btn = 8; int op = 1; bool ch = false;

#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_A1 55 #define NOTE_AS1 58 #define 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 #define NOTE_AS2 117 #define NOTE_B2 123 #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_AS3 233 #define NOTE_B3 247 #define 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 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define 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 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 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 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define 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_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define REST 0

int tempo = 85;

int buzzer = 12;

int melody1[] = {

NOTE_G4,8, NOTE_C4,8, NOTE_DS4,16, NOTE_F4,16, NOTE_G4,8, NOTE_C4,8, NOTE_DS4,16, NOTE_F4,16, //1 NOTE_G4,8, NOTE_C4,8, NOTE_DS4,16, NOTE_F4,16, NOTE_G4,8, NOTE_C4,8, NOTE_DS4,16, NOTE_F4,16, NOTE_G4,8, NOTE_C4,8, NOTE_E4,16, NOTE_F4,16, NOTE_G4,8, NOTE_C4,8, NOTE_E4,16, NOTE_F4,16, NOTE_G4,8, NOTE_C4,8, NOTE_E4,16, NOTE_F4,16, NOTE_G4,8, NOTE_C4,8, NOTE_E4,16, NOTE_F4,16, NOTE_G4,-4, NOTE_C4,-4,//5

NOTE_DS4,16, NOTE_F4,16, NOTE_G4,4, NOTE_C4,4, NOTE_DS4,16, NOTE_F4,16, //6 NOTE_D4,-1, //7 and 8 NOTE_F4,-4, NOTE_AS3,-4, NOTE_DS4,16, NOTE_D4,16, NOTE_F4,4, NOTE_AS3,-4, NOTE_DS4,16, NOTE_D4,16, NOTE_C4,-1, //11 and 12

NOTE_G4,-4, NOTE_C4,-4,//5

NOTE_DS4,16, NOTE_F4,16, NOTE_G4,4, NOTE_C4,4, NOTE_DS4,16, NOTE_F4,16, //6 NOTE_D4,-1, //7 and 8 NOTE_F4,-4, NOTE_AS3,-4, NOTE_DS4,16, NOTE_D4,16, NOTE_F4,4, NOTE_AS3,-4, NOTE_DS4,16, NOTE_D4,16, NOTE_C4,-1, //11 and 12 NOTE_G4,-4, NOTE_C4,-4, NOTE_DS4,16, NOTE_F4,16, NOTE_G4,4, NOTE_C4,4, NOTE_DS4,16, NOTE_F4,16,

NOTE_D4,-2,//15 NOTE_F4,-4, NOTE_AS3,-4, NOTE_D4,-8, NOTE_DS4,-8, NOTE_D4,-8, NOTE_AS3,-8, NOTE_C4,-1, NOTE_C5,-2, NOTE_AS4,-2, NOTE_C4,-2, NOTE_G4,-2, NOTE_DS4,-2, NOTE_DS4,-4, NOTE_F4,-4, NOTE_G4,-1, NOTE_C5,-2,//28 NOTE_AS4,-2, NOTE_C4,-2, NOTE_G4,-2, NOTE_DS4,-2, NOTE_DS4,-4, NOTE_D4,-4, NOTE_C5,8, NOTE_G4,8, NOTE_GS4,16, NOTE_AS4,16, NOTE_C5,8, NOTE_G4,8, NOTE_GS4,16, NOTE_AS4,16, NOTE_C5,8, NOTE_G4,8, NOTE_GS4,16, NOTE_AS4,16, NOTE_C5,8, NOTE_G4,8, NOTE_GS4,16, NOTE_AS4,16, REST,4, NOTE_GS5,16, NOTE_AS5,16, NOTE_C6,8, NOTE_G5,8, NOTE_GS5,16, NOTE_AS5,16, NOTE_C6,8, NOTE_G5,16, NOTE_GS5,16, NOTE_AS5,16, NOTE_C6,8, NOTE_G5,8, NOTE_GS5,16, NOTE_AS5,16, };

int melody2[] = {

NOTE_C5,4, //1 NOTE_F5,4, NOTE_F5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,8, NOTE_D5,4, NOTE_D5,4, NOTE_D5,4, NOTE_G5,4, NOTE_G5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,4, NOTE_C5,4, NOTE_C5,4, NOTE_A5,4, NOTE_A5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,4, NOTE_D5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4,

NOTE_F5,2, NOTE_C5,4, //8 NOTE_F5,4, NOTE_F5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,8, NOTE_D5,4, NOTE_D5,4, NOTE_D5,4, NOTE_G5,4, NOTE_G5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,4, NOTE_C5,4, NOTE_C5,4, NOTE_A5,4, NOTE_A5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,4, NOTE_D5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4, NOTE_F5,2, NOTE_C5,4,

NOTE_F5,4, NOTE_F5,4, NOTE_F5,4,//17 NOTE_E5,2, NOTE_E5,4, NOTE_F5,4, NOTE_E5,4, NOTE_D5,4, NOTE_C5,2, NOTE_A5,4, NOTE_AS5,4, NOTE_A5,4, NOTE_G5,4, NOTE_C6,4, NOTE_C5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4, NOTE_F5,2, NOTE_C5,4, NOTE_F5,4, NOTE_F5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,8, NOTE_D5,4, NOTE_D5,4, NOTE_D5,4, NOTE_G5,4, NOTE_G5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, //27 NOTE_E5,4, NOTE_C5,4, NOTE_C5,4, NOTE_A5,4, NOTE_A5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,4, NOTE_D5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4, NOTE_F5,2, NOTE_C5,4, NOTE_F5,4, NOTE_F5,4, NOTE_F5,4, NOTE_E5,2, NOTE_E5,4, NOTE_F5,4, NOTE_E5,4, NOTE_D5,4, NOTE_C5,2, NOTE_A5,4,//36 NOTE_AS5,4, NOTE_A5,4, NOTE_G5,4, NOTE_C6,4, NOTE_C5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4, NOTE_F5,2, NOTE_C5,4, NOTE_F5,4, NOTE_F5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,8, NOTE_D5,4, NOTE_D5,4, NOTE_D5,4, NOTE_G5,4, NOTE_G5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,4, NOTE_C5,4, NOTE_C5,4, NOTE_A5,4, NOTE_A5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8,//45 NOTE_F5,4, NOTE_D5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4, NOTE_F5,2, NOTE_C5,4, NOTE_F5,4, NOTE_F5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,8, NOTE_D5,4, NOTE_D5,4, NOTE_D5,4, NOTE_G5,4, NOTE_G5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_E5,4, NOTE_C5,4, NOTE_C5,4, NOTE_A5,4, NOTE_A5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, //53 NOTE_F5,4, NOTE_D5,4, NOTE_C5,8, NOTE_C5,8, NOTE_D5,4, NOTE_G5,4, NOTE_E5,4, NOTE_F5,2, REST,4 };

int melody[] = { NOTE_AS4,8, NOTE_AS4,8, NOTE_AS4,8,//1 NOTE_F5,2, NOTE_C6,2, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F6,2, NOTE_C6,4, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F6,2, NOTE_C6,4, NOTE_AS5,8, NOTE_A5,8, NOTE_AS5,8, NOTE_G5,2, NOTE_C5,8, NOTE_C5,8, NOTE_C5,8, NOTE_F5,2, NOTE_C6,2, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F6,2, NOTE_C6,4, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F6,2, NOTE_C6,4, //8 NOTE_AS5,8, NOTE_A5,8, NOTE_AS5,8, NOTE_G5,2, NOTE_C5,-8, NOTE_C5,16, NOTE_D5,-4, NOTE_D5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_F5,8, NOTE_G5,8, NOTE_A5,8, NOTE_G5,4, NOTE_D5,8, NOTE_E5,4,NOTE_C5,-8, NOTE_C5,16, NOTE_D5,-4, NOTE_D5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_C6,-8, NOTE_G5,16, NOTE_G5,2, REST,8, NOTE_C5,8,//13 NOTE_D5,-4, NOTE_D5,8, NOTE_AS5,8, NOTE_A5,8, NOTE_G5,8, NOTE_F5,8, NOTE_F5,8, NOTE_G5,8, NOTE_A5,8, NOTE_G5,4, NOTE_D5,8, NOTE_E5,4,NOTE_C6,-8, NOTE_C6,16, NOTE_F6,4, NOTE_DS6,8, NOTE_CS6,4, NOTE_C6,8, NOTE_AS5,4, NOTE_GS5,8, NOTE_G5,4, NOTE_F5,8, NOTE_C6,1 };

int notes = sizeof(melody) / sizeof(melody[0]) / 2;

int wholenote = (60000 * 4) / tempo;

int divider = 0, noteDuration = 0;

void setup() {

lcd.begin(16,2); lcd.print("Star Wars"); }

void loop() { for (int thisNote = 0; (thisNote < notes * 2) && (op == 1); thisNote = thisNote + 2) { divider = melody[thisNote + 1]; if (divider > 0) { noteDuration = (wholenote) / divider; } else if (divider < 0) {

noteDuration = (wholenote) / abs(divider); noteDuration *= 1.5; }

tone(buzzer, melody[thisNote], noteDuration * 0.9);

delay(noteDuration);

noTone(buzzer); botonOp(); }

for (int thisNote = 0; (thisNote < notes * 2) && (op == 2); thisNote = thisNote + 2) {

divider = melody1[thisNote + 1]; if (divider > 0) { noteDuration = (wholenote) / divider; } else if (divider < 0) { noteDuration = (wholenote) / abs(divider); noteDuration *= 1.5; }

tone(buzzer, melody1[thisNote], noteDuration * 0.9);

delay(noteDuration);

noTone(buzzer); botonOp(); }

for (int thisNote = 0; (thisNote < notes * 2) && (op == 3); thisNote = thisNote + 2) { divider = melody2[thisNote + 1]; if (divider > 0) { noteDuration = (wholenote) / divider; } else if (divider < 0) { noteDuration = (wholenote) / abs(divider); noteDuration *= 1.5; }

tone(buzzer, melody2[thisNote], noteDuration * 0.9);

delay(noteDuration);

noTone(buzzer); botonOp(); } }

void botonOp (){

if (digitalRead(btn) == LOW && ch == true){ ch = false; }

if (digitalRead(btn) == HIGH && ch == false){ ch = true; if (op == 1){ op = 2; lcd.clear(); lcd.print("Game of Thrones"); } else if (op == 2){ op = 3; lcd.clear(); lcd.print("Merry Xmas"); } else{ op = 1; lcd.clear(); lcd.print("Star Wars"); } } }