Taula de continguts:

Rocola Luis Hernández E Ignacio Casado: 7 passos
Rocola Luis Hernández E Ignacio Casado: 7 passos

Vídeo: Rocola Luis Hernández E Ignacio Casado: 7 passos

Vídeo: Rocola Luis Hernández E Ignacio Casado: 7 passos
Vídeo: El Puma Dice Que No Le Importa Sus Hijas #shorts #viral 2024, Juliol
Anonim
Rocola Luis Hernández E Ignacio Casado
Rocola Luis Hernández E Ignacio Casado

Aquesta és una rocola que compte amb dues cançons, el tema de Harry Potter i la cançó de Despacito de Luis Fonsi

Pas 1: materials

1 Protoboard

1 Arduino UNO

cables jumper macho-hembra i macho-macho

1 pantalla LCD 16x2

2 Buzzer pasivo

2 Polsador

1 cable USB per Arduino

1 font de poder extern

Pas 2: Programació

Programació
Programació
Programació
Programació

Primer, hi ha que inclourà la biblioteca del LCD en el programa i configurar-los amb els pins als quals està connectat. Luego, hay que instanciar las variables que determinan la cancion, los pins de los 2 botones, una variable "anti-derrames" i el pin per al buzzer.

#incloure

// librería para manejar pantallas LCD

LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // Indica que pines se estan utilitzant

int quantitat = 0;

const int botonI = 10; const int botonD = 9; int antiderrames = 0; // esta variable va a servir per evitar que el LCD muestre 3 coses al mateix temps int buzzer_pin = 6;

Després d’això, hi ha que nomenar a les funcions que van a:

  1. Definir el tono a tocar (segons el pin del buzzer, la nota i la duració de la mateixa).
  2. Definir les notes (en lletres), dándoles un valor únic de Hz.
  3. Definir l’estructura de les notes (nota, semi-nota, etc).

Y por ultimo, definir el tempo en milisegundos

void setTone (int pin, int note, int duration) {to (pin, nota, durada); retard (durada); noTone (pin); } struct MusicStruct {int A = 550; int Com = 582; int B = 617; int C = 654; int Cs = 693; int D = 734; int Ds = 777; int E = 824; int F = 873; int Fs = 925; int G = 980; int Gs = 1003; int A2 = 1100; int A2s = 1165; int B2 = 1234; int C3 = 1308; int C3s = 1385; int D3 = 1555; }Música; struct LengthStruct {float half = 0,5; float one = 1,0; float one_half = 1,5; flotador dos = 2,0; flotador dos_mig = 2,5; }Llargada;

int tempo = 400; // velocitat de la composició

Després de definir tot això, podem començar la part interessant del programa.

Primer, he que:

  • Monitor de sèrie
  • Definir els modes dels pins dels botons i el buzzer
  • Encender el LCD y poner el cursor en la posició inicial

configuració nul·la () {Serial.begin (9600); pinMode (botonI, INPUT_PULLUP); pinMode (botonD, INPUT_PULLUP);

// Secció de pantalla LCD

lcd.begin (16, 2); // Enciende lcd lcd.clear (); lcd.setCursor (0, 0); // El proper missatge apracecera a la cordenada 0, 0 pinMode (buzzer_pin, OUTPUT);

}

Luego, necessitamos instanciar las funciones de las funciones, que van a dar el orden, tono, temps de les 2 cancions que vamos a tenir en aquest projecte (despacit i el tema principal de Harry Potter).

Utilitzeu 2 formes de tocar cançons en aquest projecte:

  1. Usant la funció setTone, que definim abans (Harry Potter)
  2. Usant la funció de to del brunzidor de l'Arduino (Despacito)

Nota de l’autor: La funció per al desacat només toca els primers 12 segons de la cançó, originalment el codi era de 856 línies

void jarri () {setTone (buzzer_pin, Music. B, tempo * Length.one); setTone (buzzer_pin, Music. E, tempo * Length.one_half); setTone (buzzer_pin, Music. G, tempo * Length.half); setTone (buzzer_pin, Music. F, tempo * Length.one); setTone (buzzer_pin, Music. E, tempo * Length.two); setTone (buzzer_pin, Music. B2, tempo * Length.one); setTone (buzzer_pin, Music. A2, tempo * Length.two_half); setTone (buzzer_pin, Music. Fs, tempo * Length.two_half); setTone (buzzer_pin, Music. E, tempo * Length.one_half); setTone (buzzer_pin, Music. G, tempo * Length.half); setTone (buzzer_pin, Music. F, tempo * Length.one); setTone (buzzer_pin, Music. Ds, tempo * Length.two); setTone (buzzer_pin, Music. F, tempo * Length.one); setTone (buzzer_pin, Music. B, tempo * Length.two_half);} void Despacito () {tone (buzzer_pin, 587, 709.720327982); retard (788.578142202); retard (10.3082110092); to (buzzer_pin, 554, 709.720327982); retard (788.578142202); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 369, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 440, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 391, 412.843850917); retard (458.715389908); retard (5.15410550459); to (buzzer_pin, 391, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 391, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 391, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 391, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 391, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 554, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 587, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 440, 412.843850917); retard (458.715389908); retard (5.15410550459); to (buzzer_pin, 440, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 440, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 440, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 440, 41.7482545872); retard (46.3869495413); retard (36.0787385321); to (buzzer_pin, 440, 37.109559633); retard (41.2328440367); retard (30.9246330275); to (buzzer_pin, 440, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 587, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 587, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 587, 46.3869495413); retard (51.5410550459); retard (30.9246330275); to (buzzer_pin, 587, 46.3869495413); retard (51.5410550459); retard (20.6164220183); to (buzzer_pin, 587, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 659, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 659, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 554, 691.165548165); retard (767.961720183); retard (314.40043578); to (buzzer_pin, 587, 552.004699541); retard (613.338555046); retard (5.15410550459); to (buzzer_pin, 554, 552.004699541); retard (613.338555046); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 369, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 369, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 46.3869495413); retard (51.5410550459); retard (30.9246330275); to (buzzer_pin, 493, 46.3869495413); retard (51.5410550459); retard (20.6164220183); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); to (buzzer_pin, 440, 134.52215367); retard (149.469059633); retard (5.15410550459); to (buzzer_pin, 493, 273.683002294); retard (304.092224771); retard (5.15410550459); }

Una vegada tinguem tot això, podem passar a la part més important del programa de l'Arduino … el Loop ()

Primer, definits un label llamado leibel (espectacular nombre, lo sé), per a què es porti a l’inici del bucle () quan acabi cada cançó. Després, hi ha que donar valor a la variable anti-derrames que instanciamos anteriorment, per evitar que el LCD mestre diverses lletres en el mateix lloc i sea incomprensible.

Luego, hay que poner que cada vez que se oprima un botón se cambie el valor que defineix la cançó que es toca.

void loop () {leibel: if ((antiderrames == 0) && (digitalRead (botonI) == 1) && (digitalRead (botonD) == 1)) {lcd.setCursor (0, 0); lcd.print ("Elegir cancion"); // CAMBIA el icono lcd.setCursor (0, 1); lcd.print ("1 o 2"); } else {if (digitalRead (botonI) == 0) {delay (400); lcd.clear (); if (quantitat == 0) {quantitat = 1; } antiderrames ++; } if (digitalRead (botonD) == 0) {delay (400); lcd.clear (); if (quantitat == 1) {quantitat = 0; } antiderrames ++; } if (quantitat == 0) {lcd.setCursor (0, 0); lcd.print ("Harry Potter"); // CAMBIA el icono lcd.setCursor (0, 1); lcd.print ("Tema"); jarri (); antiderrames = 0; lcd.clear (); vés a leibel; // volvem a l’inici

}

else if (quantitat == 1); {

lcd.setCursor (0, 0); lcd.print ("Despacito"); // CAMBIA el icono lcd.setCursor (0, 1); lcd.print ("Luis Fonsi"); Despacito (); antiderrames = 0; lcd.clear (); vés a leibel; // volvem a l'inici}}}

Junto con la programación, también se probó la funcionalidad de la pantalla LCD 16x2, para después guardar el programa y así unirlo a los demás para el programa final.

Pas 3: 4. Escoger Canciones Para Programarla

4. Escoger Canciones Para Programarla
4. Escoger Canciones Para Programarla
4. Escoger Canciones Para Programarla
4. Escoger Canciones Para Programarla

Busqueu 2 cancions per programar-les i així incloure-les per a la rocola. En aquest cas serien les cançons de "Despacito" de Luis Fonsi i el tema de la pel·lícula Harry Potter.

Pas 4: Unir programes

Unir Programas
Unir Programas

Després de tenir la programació dels botons, la pantalla i les cançons; se unieron para así probar si eran compatibles y si no, modificarlos en tinkercad.

Pas 5: Convertir-lo en físic

Convertirlo En Físico
Convertirlo En Físico
Convertirlo En Físico
Convertirlo En Físico

Després de comprobar que sí funcionarà a la pàgina de tinkercad, es va copiar el maquinari per veure els resultats. Sin embargo, al tratar de armarlo ocurrió un inconveniente, el cuál nos imposibilitó usar la pantalla ya que esta se quemó por un mal contacto al soldarlo. Es por esto que en la presentación final solo incluye los botones y el buzzer.

Pas 6: Màquines utilitzades

Màquines Utilitzades
Màquines Utilitzades

S'utilitza la cortadora làser del Maker-Space per crear la carcassa on irien tots els circuits.

Es va utilitzar la cortadora de vinil per fer adhesiu i decorar la carcassa

Utilitzeu el quadre de pedestal del Maker-space per fer els aigües per al buzzer i el cable del Arduino

Pas 7: Recomanacions

Recomanacions
Recomanacions

Algunes recomanacions si es replica aquest projecte per als millors resultats és:

- Probar prèviament el programa a la pàgina de Tinkercad per veure com funciona. Així com verificar els cables i connexions entre el protoboard i l'arduino.

- Al soldar, verificar que no hi ha contacte entre aquests anys es toquen, així es podrà evitar que es quedi algun component.

- Al replicar el hardware de la pàgina Tinkercad, connectar tot de forma cuidadosa per a no romper una peça i verificar que no es salga dels seus llocs.

- Medir les dimensions per a la caixa, així es pot evitar que quedi massa gran o molt petita.

Recomanat: