Isi kandungan:

Jukebox + Arduino: 5 Langkah
Jukebox + Arduino: 5 Langkah

Video: Jukebox + Arduino: 5 Langkah

Video: Jukebox + Arduino: 5 Langkah
Video: DIY Powerful Ultra Bass Amplifier Laptop Charger , No IC , Simple Circuit 2024, November
Anonim
Jukebox + Arduino
Jukebox + Arduino

Este proyecto constió en crear una Rocola Digital través de una programación de Arduino. Su función es muy simple y no es muy difícil de crear. La Rocola tiene mostas funciones interesantes, y una de ellas es que a través de una pantalla LCD se muestra el nombre de la canción que se esta reproduciendo, y que para cada canción se muestra un color distinto a través de un led RGB. Así mismo, través de dos pulsadores puedes cambiar de canción (de izquierda a derecha o viceversa). Aquí te mostraré paso a paso en como crear uno de una forma sencilla y creativa.

Langkah 1: ¿Como Funciona?

Langkah 2: Bahan Circuito Armado Y Sus

Circuito Armado Y Sus Bahan
Circuito Armado Y Sus Bahan

¡Es necesario que tengas estos materiales para hacer que tu Rocola funcione!

- Arduino UNO

- Pantalla LCD 16x2 + Interfaz I2C

- Protoboard + Protoboard Mini

- Mengetuai RGB

- Buzzer Pasif

- Jumpers Para Protoboard

- 2 Pulsadores Eléctricos

- Caja para el Circuito

Langkah 3: Diagrama Esquemático Del Circuito Electrónico

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

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

Como te comentaba, el crear una Rocola no es tan difícil como aparenta. Saya boleh berani tidak ada kaitannya dengan cara untuk poder hacer que tu Rocola funcione.

- Bahan nada ces consigas es necesario que se muestra en "Langkah 2"

- Es necesario que tengas un "Arduino UNO", al igual que la aplicación para poder hacer que la programación funcione.

- "Langkah 2".

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

- Oleh último, 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 a tu criterio.

Langkah 5: Código De La Rocola

// Creado por: Jorge Aragón

// Incluir librerias para la pantalla LCD con interfaz 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 bajar; ///////////////////////////// MELODIAS //////////////////// /////////// # tentukan NOTE_B0 31 #tentukan NOTE_C1 33 # tentukan NOTE_CS1 35 # tentukan NOTE_D1 37 # tentukan NOTE_DS1 39 # tentukan NOTE_E1 41 # tentukan NOTE_F1 44 # tentukan NOTE_FS1 46 # tentukan NOTE_G1 52 #tentukan NOTE_A1 55 #tentukan NOTE_AS1 58 #tentukan NOTE_B1 62 #tentukan NOTE_C2 65 #tentukan NOTE_CS2 69 #tentukan NOTE_D2 73 # tentukan NOTE_DS2 78 # tentukan NOTE_E2 82 # tentukan NOTE_F2 87 #tentukan #NYA_NYA_NYA # 104_tentukan definisikan NOTE_A2 110 #tentukan NOTE_AS2 117 #tentukan NOTE_B2 123 #tentukan NOTE_C3 131 #tentukan NOTE_CS3 139 #tentukan NOTE_D3 147 #tentukan NOTE_DS3 156 #tentukan NOTE_E3 165 #tentukan NOTE_F3 175_tentukan_Berminat_f3 175_tentukan_fine 185Berikan_fine 220 #tentukan NOTE_AS3 233 # tentukan NOTE_B3 247 # tentukan NOTE_C4 262 #tentukan NOTE_CS4 277 #tentukan NOTE_D4 294 #tentukan NOTE_DS4 311 # tentukan NOTE_E4 330 # tentukan NOTE_F4 349 #tentukan_Berminat_4_4_4_4_tentukan_4_4_4_4_tentukan A4 440 # tentukan NOTE_AS4 466 # tentukan NOTE_B4 494 # tentukan NOTE_C5 523 # tentukan NOTE_CS5 554 # tentukan NOTE_D5 587 # tentukan NOTE_DS5 622 # tentukan NOTE_E5 659 # tentukan CATATAN_F5 698 #tentukan_Berminat_f5Berminkan_f8_betulkan #tentukan NOTE_AS5 932 #tentukan NOTE_B5 988 #tentukan NOTE_C6 1047 #tentukan NOTE_CS6 1109 #tentukan NOTE_D6 1175 #tentukan NOTE_DS6 1245 # tentukan NOTE_E6 1319 # tentukan NOTE_E6 1319 # tentukan NOTE_F6 1397 # tentukan_Berminat_fine 16Fine_fine_fine NOTE_AS6 1865 # tentukan NOTE_B6 1976 # tentukan NOTE_C7 2093 # tentukan NOTE_CS7 2217 #tentukan NOTE_D7 2349 # tentukan NOTE_DS7 2489 # tentukan NOTE_E7 2637 # tentukan NOTE_E7 2637 # tentukan NOTE_F7 2794 # tentukan NOTE_Fine7Betulkan_357_betulkankanlah #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define REST 0 ///////////////////////// Angin 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_C6, 8, 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_F6, 8, NOTE_F6, 8, NOTE_F6, 8 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_G5, 4, NOTE_G5, 4, 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}; ////////////////////////// Lagu Badai ///////////////////// /////// 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_F5, 12, NOT_5, 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 di 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_D 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_C5, 8, NOTE_C5, 8, 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, NOT_B4, 8, 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_B4, 8, NOTE_B4, 8, NOTE_B4, 8, 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_FS 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_D5, 8, NOTE_D5, 8, NOT_5 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_F_5, 8, CATATAN, 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, NOT_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_FS, NOTE_G4, -2,}; // Tempo de las pembatalan int note = sizeof (WindWaker_melody1) / sizeof (WindWaker_melody1 [0]) / 2; int note2 = sizeof (SongOfStorms_melody2) / sizeof (SongOfStorms_melody2 [0]) / 2; int note3 = 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; // Inicializacion del boton, pantalla LCD, setup LED void RGB () {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); } gelung void () {if (contador == 0) {// Definir el color con el que se verá pembuat angin analogWrite (R, 0); analogWrite (G, 255); analogWrite (B, 255); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("WIND MAKER"); untuk (int thisNote = 0; thisNote 0) {noteDuration = (wholenote) / pembahagi; } lain jika (pembahagi <0) {// nota bertitik diwakili dengan jangka masa negatif !! noteDuration = (wholenote) / abs (pembahagi); noteDuration * = 1.5; // meningkatkan tempoh pada separuh untuk nota bertitik} nada (buzzer, WindWaker_melody1 [thisNote], noteDuration * 0.9); // Tunggu tempoh kepastian sebelum memainkan nota seterusnya. subir = digitalRead (4); bajar = digitalRead (7); kelewatan (noteDuration); noTone (bel); jika (subir == RENDAH) {contador = 1; } jika (bajar == RENDAH) {contador = 2; } jika (contador! = 0) {rehat; }}} lain jika (contador == 1) {// Definir el color con el que se verá song of storms analogWrite (R, 255); analogWrite (G, 0); analogWrite (B, 255); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("LAGU KISAH"); untuk (int thisNote = 0; thisNote 0) {// nota biasa, teruskan noteDuration = (wholenote2) / pembahagi; } lain jika (pembahagi <0) {noteDuration = (wholenote2) / abs (pembahagi); noteDuration * = 1.5; // meningkatkan tempoh pada separuh untuk nota bertitik} nada (bel, pgm_read_word_near (SongOfStorms_melody2 + thisNote), noteDuration * 0.9); subir = digitalRead (4); bajar = digitalRead (7); kelewatan (noteDuration); noTone (bel); jika (subir == RENDAH) {contador = 2; } jika (bajar == RENDAH) {contador = 0; } jika (contador! = 1) {rehat; }}} lain jika (contador == 2) {// Definir el color con el que se verá Minuet analogWrite (R, 255); analogWrite (G, 255); analogWrite (B, 0); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("MINUET DALAM G"); lcd.setCursor (0, 1); lcd.print ("PETZOLD"); untuk (int thisNote = 0; thisNote 0) {noteDuration = (wholenote3) / pembahagi; } lain jika (pembahagi <0) {noteDuration = (wholenote3) / abs (pembahagi); noteDuration * = 1.5; // meningkatkan tempoh pada separuh untuk nota bertitik} nada (buzzer, Minuet_melody3 [thisNote], noteDuration * 0.9); subir = digitalRead (4); bajar = digitalRead (7); kelewatan (noteDuration); noTone (bel); jika (subir == RENDAH) {contador = 0; } subir = digitalRead (4); bajar = digitalRead (7); jika (bajar == RENDAH) {contador = 1; } jika (contador! = 2) {rehat; }}}}

Disyorkan: