תוכן עניינים:

ג'וקבוקס + ארדואינו: 5 שלבים
ג'וקבוקס + ארדואינו: 5 שלבים

וִידֵאוֹ: ג'וקבוקס + ארדואינו: 5 שלבים

וִידֵאוֹ: ג'וקבוקס + ארדואינו: 5 שלבים
וִידֵאוֹ: DIY Jukebox 2024, יולי
Anonim
ג'וקבוקס + ארדואינו
ג'וקבוקס + ארדואינו

Este proyecto consistió en crear una Rocola Digital a 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 muchas 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, a 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.

שלב 1: ¿Como Funciona?

שלב 2: Circuito Armado Y Sus Materiales

Circuito Armado Y Sus Materiales
Circuito Armado Y Sus Materiales

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

- ארדואינו UNO

- Pantalla LCD 16x2 + Interfaz I2C

- פרוטובארד + מיני פרוטובארד

- LED RGB

- באזר פסיבי

- מגשרים לפרוטובורד

- 2 פולסדורס אלקטריקוס

- Caja para el Circuito

שלב 3: תרשים Esquemático Del Circuito Electrónico

תרשים Esquemático Del Circuito Electrónico
תרשים Esquemático Del Circuito Electrónico

שלב 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. תוכלו ליהנות ממידע זה על מנת להזין את הכרטיסים שלכם.

- Es necesario que consigas cada material que se muestra en "שלב 2"

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

- Crea el circuito físico el cual te muestro en "שלב 2".

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

- For ú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.

שלב 5: Código De La Rocola

// קריאו מאת: חורחה אראגון

// Incluir librerias para la pantalla LCD con interfaz I2C #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); זמזם int int = 11; int contador = 0; int R = 6; int G = 9; int B = 10; int subir; int bajar; ////////////////////////////////// MELODIAS //////////////// /////////// #הגדרת NOTE_B0 31 #הגדרת NOTE_C1 33 #הגדרת NOTE_CS1 35 #הגדרת NOTE_D1 37 #הגדרת NOTE_DS1 39 #הגדרת NOTE_E1 41 #הגדרת NOTE_F1 44 #הגדרת NOTE_FS1 46 #הגדרת NOTE_G1 49 #הגדרת NOTE_GS1 52 #הגדר NOTE_A1 55 #הגדר NOTE_AS1 58 #הגדר NOTE_B1 62 #הגדר NOTE_C2 65 #הגדר NOTE_CS2 69 #הגדר NOTE_D2 73 #הגדר NOTE_DS2 78 #הגדר NOTE_E2 82 #הגדר NOTE_F2 87 #הגדר NOTE_FS2 93 #הגדר NOTE_FS2 93 #2 הגדר NOTE_A2 110 #הגדר NOTE_AS2 117 #הגדר NOTE_B2 123 #הגדר NOTE_C3 131 #הגדר NOTE_CS3 139 #הגדר NOTE_D3 147 #הגדר NOTE_DS3 156 #הגדר NOTE_E3 165 #הגדר NOTE_F3 175 #הגדר NOTE_FS3 185 #הגדר NOTE_DE3 220 #הגדר NOTE_AS3 233 #הגדר NOTE_B3 247 #הגדר NOTE_C4 262 #הגדר NOTE_CS4 277 #הגדר NOTE_D4 294 #הגדר NOTE_DS4 311 #הגדיר NOTE_E4 330 #הגדר NOTE_F4 349 #הגדר NOTE_FS4 370 #הגדר NOTE_DE4 A4 440 #הגדר NOTE_AS4 466 #הגדר NOTE_B4 494 #הגדר NOTE_C5 523 #הגדר NOTE_CS5 554 #הגדר NOTE_D5 587 #הגדר NOTE_DS5 622 #הגדיר NOTE_E5 659 #הגדר NOTE_F5 698 #הגדר NOTE_FS5 740 #define 8_5_583_define 8_5_583_define 8_5_583 #הגדר NOTE_AS5 932 #הגדר NOTE_B5 988 #הגדר NOTE_C6 1047 #הגדר NOTE_CS6 1109 #הגדר NOTE_D6 1175 #הגדר NOTE_DS6 1245 #הגדר NOTE_E6 1319 #הגדר NOTE_F6 1397 #הגדר NOTE_FS6 1480 #הגדר NOTE_FS6 1480 #הגדר NOTE_FS6 1480 #הגדר NOTE_FS6 1480 #הגדיר NOTE_FS6 1480 #הגדיר NOTE_DS6 1280 #הגדיר NOTE_DS6 1280 #הגדר NOTE_AS6 1865 #הגדר NOTE_B6 1976 #הגדר NOTE_C7 2093 #הגדר NOTE_CS7 2217 #הגדר NOTE_D7 2349 #הגדר NOTE_DS7 2489 #הגדר NOTE_E7 2637 #הגדר NOTE_F7 2794 #הגדר NOTE_FS7 2960 #הגדר NOTE_G7 3120 #הגדר NOTE7 3322 #הגדר NOTE_B7 3951 #הגדר NOTE_C8 4186 #הגדר NOTE_CS8 4435 #הגדר NOTE_D8 4699 #הגדר NOTE_DS8 4978 #הגדר מנוחה 0 ///////////////////////////// רוח ערכת נושא //////////////////////////////// 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}; //////////////////////////// Song of Storms ///////////////////// /////// 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}; ////////////////////////// Menuet in 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, NOTE_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 = 120; int tempo2 = 160; int tempo3 = 140; int whotenote = (60000 * 4) / קצב; int wholenote2 = (60000 * 4) / tempo2; int wholenote3 = (60000 * 4) / tempo3; int divider = 0, noteDuration = 0; // הרשאת del boton, pantalla LCD, y led התקנת חלל RGB () {Wire.begin (); lcd.begin (16, 2); lcd.clear (); lcd.backlight (); pinMode (באזר, 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 con el que se verá wind maker analogWrite (R, 0); analogWrite (G, 255); analogWrite (B, 255); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("MAKER WIND"); for (int thisNote = 0; thisNote 0) {noteDuration = (wholenote) / divider; } אחרת אם (מחלק <0) {// הערות מנוקדות מיוצגות עם משכים שליליים !! noteDuration = (wholote) / abs (מחלק); noteDuration *= 1.5; // מגדיל את משך הזמן למחצית עבור הערות מנוקדות} צליל (זמזם, WindWaker_melody1 [thisNote], noteDuration*0.9); // המתן למשך הזמן של המפרט לפני שתשחק את הפתק הבא. subir = digitalRead (4); bajar = digitalRead (7); עיכוב (noteDuration); noTone (זמזם); אם (subir == LOW) {contador = 1; } אם (bajar == LOW) {contador = 2; } if (contador! = 0) {הפסקה; }}} אחרת אם (contador == 1) {// Definir el color con el que se verá שיר הסופות analogWrite (R, 255); analogWrite (G, 0); analogWrite (B, 255); lcd.clear (); lcd.setCursor (0, 0); lcd.print ("שיר החנויות"); עבור (int thisNote = 0; thisNote 0) {// הערה רגילה, פשוט המשך noteDuration = (wholenote2) / divider; } אחרת אם (מחלק <0) {noteDuration = (wholenote2) / abs (מחלק); noteDuration *= 1.5; // מגדיל את משך הזמן לשניים עבור תווים מנוקדים} צליל (זמזם, pgm_read_word_near (SongOfStorms_melody2+thisNote), noteDuration * 0.9); subir = digitalRead (4); bajar = digitalRead (7); עיכוב (noteDuration); noTone (זמזם); אם (subir == LOW) {contador = 2; } אם (bajar == LOW) {contador = 0; } if (contador! = 1) {הפסקה; }}} else if (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 IN G"); lcd.setCursor (0, 1); lcd.print ("PETZOLD"); for (int thisNote = 0; thisNote 0) {noteDuration = (wholenote3) / divider; } אחרת אם (מחלק <0) {noteDuration = (wholenote3) / abs (מחלק); noteDuration *= 1.5; // מגדיל את משך הזמן למחצית עבור תווים מנוקדים} צליל (זמזם, Minuet_melody3 [thisNote], noteDuration * 0.9); subir = digitalRead (4); bajar = digitalRead (7); עיכוב (noteDuration); noTone (זמזם); אם (subir == LOW) {contador = 0; } subir = digitalRead (4); bajar = digitalRead (7); אם (bajar == LOW) {contador = 1; } if (contador! = 2) {הפסקה; }}}}

מוּמלָץ: