Taula de continguts:

Jukebox + Arduino: 5 passos
Jukebox + Arduino: 5 passos

Vídeo: Jukebox + Arduino: 5 passos

Vídeo: Jukebox + Arduino: 5 passos
Vídeo: Using a Raspberry Pi to upgrade a broken jukebox! 2024, De novembre
Anonim
Jukebox + Arduino
Jukebox + Arduino

Aquest projecte va consistir a crear una Rocola Digital a través d’una programació d’Arduino. La seva funció és molt senzilla i no és molt difícil de crear. La Rocola té moltes funcions interessants, i una d’elles és que a través d’una pantalla LCD es mostra el nombre de la cançó que es reprodueix, i que per cada cançó es mostra un color a través d’un led RGB. Així mateix, a través de dos pulsadors es pot canviar de cançó (d’esquerra a la dreta o viceversa). Aquí et mostraré pas a pas en com crear un d’una forma sencilla i creativa.

Pas 1: Com Funciona?

Pas 2: Circuit Armat i Sus Materials

Circuito Armado Y Sus Materiales
Circuito Armado Y Sus Materiales

¡És necessari que tingueu aquests materials per fer que la vostra funció funcioni!

- Arduino UNO

- Pantalla LCD 16x2 + Interfaz I2C

- Protoboard + Mini Protoboard

- Led RGB

- Zumbador passiu

- Jumpers Para Protoboard

- 2 pulsadors elèctrics

- Caixa per al Circuit

Pas 3: Diagrama Esquemàtic del Circuit Electrònic

Diagrama Esquemático Del Circuito Electrónico
Diagrama Esquemático Del Circuito Electrónico

Step 4: Técnicas Para La Construcción De La Lámpara

Com et vaig comentar, crear una Rocola no és tan difícil com apareix. Aquí et dare unes tècniques que seran útils per poder fer que la teva funció de Rocola.

- És necessari que consigui cada material que es mostri a "Step 2"

- És necessari que tingui un "Arduino UNO", igual que l'aplicació per poder fer que la programació funcioni.

- Crea el circuit físic el qual et mestre a "Step 2".

- Luego de tener todo armado copia la programación el cual te mostraré en el último paso.

- Per últim, usa tu creatividad y consigue algo que tengas en tu casa para poder hacer la mejor Rocola de tu vida y no te olvides en decorarla al teu criterio.

Pas 5: Codi De La Rocola

// Creado por: Jorge Aragón

// Inclou llibreries per a la pantalla LCD amb interfície I2C #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); const int buzzer = 11; int contador = 0; int R = 6; int G = 9; int B = 10; int subir; int baixar; /////////////////////////////// MELODIAS //////////////////// /////////// #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 # 104 #define definir NOTE_A2 110 # definir NOTE_AS2 117 # definir NOTE_B2 123 # definir NOTE_C3 131 # definir NOTE_CS3 139 # definir NOTA_D3 147 # definir NOTA_DS3 156 # definir NOTA_E3 165 # definir NOTA_F3 175 # definir NOTA_FS3 185 # definir NOTA_G3 196 # definir NOTA_GS3 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 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 #de1 #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 #de6 NOTA_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 33 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define REST 0 ///////////////////////// Wind Tema Waker /////////////////////////// int WindWaker_melody1 = {NOTE_A5, 4, NOTE_A5, 8, NOTE_A5, 4, NOTE_D6, 8, NOTE_F6, 4, NOTE_E6, 8, NOTE_D6, 4, NOTE_C6, 8, NOTE_D6, 4, NOTE_B5, 8, NOTE_G5, 4, NOTE_C6, 8, NOTE_A5, 8, NOTE_D6, 8, NOTE_B5, 8, NOTE_C6, 4, NOTE_A5, 8, NOTE_G5, 4, NOTE_D6, 8, NOTE_B5, 4, NOTE_C6, 8, NOTE_D6, 4, NOTE_E6, 8, NOTE_F6, 8, NOTE_D6, 8, NOTE_E6, 8, NOTE_A5, 4, NOTE_A5, 8, NOTE_A5, 4, NOTE_D6, 8, NOTE_F6, 4, NOTE_E6, 8, NOTE_D6, 4, NOTE_C6, 8, NOTE_D6, 4, NOTE_B5, 8, NOTE_G5, 4, NOTE_C6, 8, NOTE_A5, 8, NOTE_D6, 8, NOTE_B5, 8, NOTE_C6, 4, NOTE_D6, 8, NOTE_F6, 4, NOTE_A6, 8, NOTE_B6, 8, NOTE_F6, 8, NOTE_C6, 8, NOTE_D6, 2}; ////////////////////////// Cançó de tempestes /////////////////////// /////// const int SongOfStorms_melody2 PROGMEM = {NOTE_D5, 12, NOTE_F5, 12, NOTE_D6, 3, NOTE_D5, 12, NOTE_F5, 12, NOTE_D6, 3, NOTE_E6, 5, NOTE_F6, 10, NOTE_E6, 12, NOTE_F6, 12, NOTE_E6, 12, NOTE_C6, 12, NOTE_A5, 3, NOTE_A5, 6, NOTE_D5, 6, NOTE_F5, 12, NOTE_G5, 12, NOTE_A5, 2, NOTE_A5, 6, NOTE_D5, 6, NOTE_F5, 12, NOTE_G5, 12, NOTE_E5, 2, NOTE_D5, 12, NOTE_F5, 12, NOTE_D6, 3, NOTE_D5, 12, NOTE_F5, 12, NOTE_D6, 3, NOTE_E6, 5, NOTE_F6, 10, NOTE_E6, 12, NOTE_F6, 12, NOTE_E6, 12, NOTE_C6, 12, NOTE_A5, 3, NOTE_A5, 6, NOTE_D5, 6, NOTE_F5, 12, NOTE_G5, 12, NOTE_A5, 2, NOTE_A5, 6, NOTE_D5, 6, NOTE_F5, 12, NOTE_G5, 12, NOTE_E5, 2}; //////////////////////// Minuet en G Petzold ////////////////////// // int Minuet_melody3 = {NOTE_D5, 4, NOTE_G4, 8, NOTE_A4, 8, NOTE_B4, 8, NOTE_C5, 8, NOTE_D5, 4, NOTE_G4, 4, NOTE_G4, 4, NOTE_E5, 4, NOTE_C5, 8, NOTE_D5, 8, NOTE_E5, 8, NOTE_FS5, 8, NOTE_G5, 4, NOTE_G4, 4, NOTE_G4, 4, NOTE_C5, 4, NOTE_D5, 8, NOTE_C5, 8, NOTE_B4, 8, NOTE_A4, 8, NOTE_B4, 4, NOTE_C5, 8, NOTE_B4, 8, NOTE_A4, 8, NOTE_G4, 8, NOTE_FS4, 4, NOTE_G4, 8, NOTE_A4, 8, NOTE_B4, 8, NOTE_G4, 8, NOTE_A4, -2, NOTE_D5, 4, NOTE_G4, 8, NOTE_A4, 8, NOTE_B4, 8, NOTE_C5, 8, NOTE_D5, 4, NOTE_G4, 4, NOTE_G4, 4, NOTE_E5, 4, NOTE_C5, 8, NOTE_D5, 8, NOTE_E5, 8, NOTE_FS5, 8, NOTE_G5, 4, NOTE_G4, 4, NOTE_G4, 4, NOTE_C5, 4, NOTE_D5, 8, NOTE_C5, 8, NOTE_B4, 8, NOTE_A4, 8, NOTE_B4, 4, NOTE_C5, 8, NOTE_B4, 8, NOTE_A4, 8, NOTE_G4, 8, NOTE_A4, 4, NOTE_B4, 8, NOTE_A4, 8, NOTE_G4, 8, NOTE_FS4, 8, NOTE_G4, -2, NOTE_B5, 4, NOTE_G5, 8, NOTE_A5, 8, NOTE_B5, 8, NOTE_G5, 8, NOTE_A5, 4, NOTE_D5, 8, NOTE_E5, 8, NOTE_FS5, 8, NOTE_D5, 8, NOTE_G5, 4, NOTE_E5, 8, NOTE_FS5, 8, NOTE_G5, 8, NOTE_D5, 8, NOTE_CS5, 4, NOTE_B4, 8, NOTE_CS5, 8, NOTE_A4, 4, NOTE_A4, 8, NOTE_B4, 8, NOTE_CS5, 8, NOTE_D5, 8, NOTE_E5, 8, NOTE_FS5, 8, NOTE_G5, 4, NOTE_FS5, 4, NOTE_E5, 4, NOTE_FS5, 4, NOTE_A4, 4, NOTE_CS5, 4, NOTE_D5, -2, NOTE_D5, 4, NOTE_G4, 8, NOTE_FS5, 8, NOTE_G4, 4, NOTE_E5, 4, NOTE_G4, 8, NOTE_FS4, 8, NOTE_G4, 4, NOTE_D5, 4, NOTE_C5, 4, NOTE_B4, 4, NOTE_A4, 8, NOTE_G4, 8, NOTE_FS4, 8, NOTE_G4, 8, NOTE_A4, 4, NOTE_D4, 8, NOTE_E4, 8, NOTE_FS4, 8, NOTE_G4, 8, NOTE_A4, 8, NOTE_B4, 8, NOTE_C5, 4, NOTE_B4, 4, NOTE_A4, 4, NOTE_B4, 8, NOTE_D5, 8, NOTE_G4, 4, NOTE_FS4, 4, NOTA_G4, -2,}; // Tempo de las canciones int notes = sizeof (WindWaker_melody1) / sizeof (WindWaker_melody1 [0]) / 2; int notes2 = sizeof (SongOfStorms_melody2) / sizeof (SongOfStorms_melody2 [0]) / 2; int notes3 = sizeof (Minuet_melody3) / sizeof (Minuet_melody3 [0]) / 2; int tempo = 120; int tempo2 = 160; int tempo3 = 140; int wholenote = (60000 * 4) / tempo; int wholenote2 = (60000 * 4) / tempo2; int wholenote3 = (60000 * 4) / tempo3; int divider = 0, noteDuration = 0; // Inicialització del botó, pantalla LCD, i led RGB void setup () {Wire.begin (); lcd.begin (16, 2); lcd.clear (); lcd.backlight (); pinMode (buzzer, OUTPUT); pinMode (4, INPUT_PULLUP); pinMode (7, INPUT_PULLUP); pinMode (R, OUTPUT); pinMode (G, OUTPUT); pinMode (B, OUTPUT); } void loop () {if (contador == 0) {// Definir el color amb el que es verà wind maker analogWrite (R, 0); analogWrite (G, 255); analogWrite (B, 255); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("WIND MAKER"); for (int thisNote = 0; thisNote 0) {noteDuration = (wholenote) / divisor; } else if (divisor <0) {// les notes amb punts es representen amb durades negatives !! noteDuration = (wholenote) / abs (divisor); notaDuració * = 1,5; // augmenta la durada a la meitat per a les notes punteades} to (brunzidor, WindWaker_melody1 [thisNote], noteDuration * 0,9); // Espereu la durada de l'espècie abans de tocar la següent nota. subir = DigitalRead (4); baixar = Llegir digital (7); retard (notaDuració); noTone (timbre); if (subir == BAIX) {contador = 1; } if (baixar == BAIX) {contador = 2; } if (contador! = 0) {break; }}} else if (contador == 1) {// Definir el color amb el que es veu cançó de tempestes analogWrite (R, 255); analogWrite (G, 0); analogWrite (B, 255); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("CANÇÓ DE TEMPESTES"); per a (int thisNote = 0; thisNote 0) {// nota regular, només cal continuar noteDuration = (wholenote2) / divisor; } else if (divisor <0) {noteDuration = (wholenote2) / abs (divisor); notaDuració * = 1,5; // augmenta la durada a la meitat per a les notes punteades} to (brunzidor, pgm_read_word_near (SongOfStorms_melody2 + thisNote), noteDuration * 0,9); subir = DigitalRead (4); baixar = Llegir digital (7); retard (notaDuració); noTone (timbre); if (subir == BAIX) {contador = 2; } if (baixar == BAIX) {contador = 0; } if (contador! = 1) {break; }}} else if (contador == 2) {// Definir el color amb el que es veu Minuet analogWrite (R, 255); analogWrite (G, 255); analogWrite (B, 0); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("MINUET EN G"); lcd.setCursor (0, 1); lcd.print ("PETZOLD"); for (int thisNote = 0; thisNote 0) {noteDuration = (wholenote3) / divisor; } else if (divisor <0) {noteDuration = (wholenote3) / abs (divisor); notaDuració * = 1,5; // augmenta la durada a la meitat per a les notes punteades} to (timbre, Minuet_melody3 [thisNote], noteDuration * 0,9); subir = DigitalRead (4); baixar = Llegir digital (7); retard (notaDuració); noTone (timbre); if (subir == BAIX) {contador = 0; } subir = digitalRead (4); baixar = Llegir digital (7); if (baixar == BAIX) {contador = 1; } if (contador! = 2) {break; }}}}

Recomanat: