Cuprins:
- Pasul 1: Materiale
- Pasul 2: Programare
- Pasul 3: 4. Escoger Canciones Para Programarla
- Pasul 4: Unir Programas
- Pasul 5: Convertirlo En Físico
- Pasul 6: Máquinas Utilizadas
- Pasul 7: Recomandări
Video: Rocola Luis Hernández E Ignacio Casado: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Esta es una rocola que cuenta con dos canciones, el tema de Harry Potter y la canción de Despacito de Luis Fonsi
Pasul 1: Materiale
1 Protoboard
1 Arduino UNO
cabluri jumper macho-hembra y macho-macho
1 ecran LCD 16x2
2 Buzzer pasivo
2 Apăsați butonul
1 cablu USB pentru Arduino
1 fuente de poder externa
Pasul 2: Programare
Primero, hay que include la biblioteca del LCD en el programa y configurarlo con los pines a los que este conectado. Luego, hay que instanciar las variables that determinean the cancion, the pines of the 2 botones, una variable "anti-derrames" și pinul pentru buzzer.
#include
// librería para manejar pantallas LCD
LiquidCrystal lcd (12, 11, 5, 4, 3, 2); // Indica que pines se estan using
int cantitate = 0;
const int botonI = 10; const int botonD = 9; int antiderrames = 0; // esta variable va a servir pentru a evita că el LCD muestre 3 lucruri în același timp în buzzer_pin = 6;
După aceea, sunt numite funcțiile pe care le-am a:
- Definir el tono a tocar (după el pin del buzzer, nota și durarea de la aceeași).
- Definir las notas (en letras), dándoles un valor único de Hz.
- Definiți structura notelor (nota, semi-nota, etc).
Y por ultimo, definir el tempo en milisegundos
void setTone (pin int, int nota, int durata) {ton (pin, nota, durata); întârziere (durata); noTone (pin); } struct MusicStruct {int A = 550; int As = 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; }Muzică; struct LengthStruct {float half = 0,5; float one = 1,0; float one_half = 1,5; float two = 2.0; float two_half = 2,5; }Lungime;
int tempo = 400; // velocidad de la composicion
După ce a definit totul, putem începe la o parte interesantă a programului.
Primero, hay que:
- Monitorizează seria
- Definir los modos de los pines de los botones y el buzzer
- Encender el LCD y poner el cursor in the initial position
void setup () {Serial.begin (9600); pinMode (botonI, INPUT_PULLUP); pinMode (botonD, INPUT_PULLUP);
// Secțiune de ecran LCD
lcd.inceput (16, 2); // Enciende lcd lcd.clear (); lcd.setCursor (0, 0); // El proximo mensaje apracecera in the cordenada 0, 0 pinMode (buzzer_pin, OUTPUT);
}
Luego, necesită instanțierea funcțiilor funcțiilor, care vor da dar ordinea, tonul, timpul de 2 canții pe care le avem în acest proiect (despăcut și tema principală a lui Harry Potter).
Folosiți 2 forme de a atinge canțiuni în acest proiect:
- Folosind funcția setTone, ce definim înainte (Harry Potter)
- Folosind funcția tonului buzzer-ului Arduino (Despacito)
Nota del autor: La funcția pentru despăcut solo toca los primeros 12 segundos de la canción, originalmente el código era de 856 lineas
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); întârziere (788.578142202); întârziere (10.3082110092); ton (buzzer_pin, 554, 709.720327982); întârziere (788.578142202); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 369, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 440, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 391, 412.843850917); întârziere (458.715389908); întârziere (5.15410550459); ton (buzzer_pin, 391, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 391, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 391, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 391, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 391, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 554, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 587, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 440, 412.843850917); întârziere (458.715389908); întârziere (5.15410550459); ton (buzzer_pin, 440, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 440, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 440, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 440, 41.7482545872); întârziere (46.3869495413); întârziere (36.0787385321); ton (buzzer_pin, 440, 37.109559633); întârziere (41.2328440367); întârziere (30.9246330275); ton (buzzer_pin, 440, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 587, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 587, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 587, 46.3869495413); întârziere (51.5410550459); întârziere (30.9246330275); ton (buzzer_pin, 587, 46.3869495413); întârziere (51.5410550459); întârziere (20.6164220183); ton (buzzer_pin, 587, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 659, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 659, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 554, 691.165548165); întârziere (767.961720183); întârziere (314.40043578); ton (buzzer_pin, 587, 552.004699541); întârziere (613.338555046); întârziere (5.15410550459); ton (buzzer_pin, 554, 552.004699541); întârziere (613.338555046); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 369, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 369, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 46.3869495413); întârziere (51.5410550459); întârziere (30.9246330275); ton (buzzer_pin, 493, 46.3869495413); întârziere (51.5410550459); întârziere (20.6164220183); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); ton (buzzer_pin, 440, 134.52215367); întârziere (149.469059633); întârziere (5.15410550459); ton (buzzer_pin, 493, 273.683002294); întârziere (304.092224771); întârziere (5.15410550459); }
O dată avem totul pentru asta, putem să trecem la o parte mai importantă a programului Arduino … el Loop ()
Primero, definimos un label llamado leibel (spectaculos nume, lo sé), pentru care să ducem la începutul buclei () când termină fiecare canție. After, hay que darle valor a la variable anti-derrames that instanciamos anteriormente, pentru a evita ca LCD-ul să meargă mai multe litere în același loc și sea incomprensible.
Luego, hay que poner que cada vez que se oprima un botón se cambie el valor que define la canción que se 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 (cantitate == 0) {cantitate = 1; } antiderrame ++; } if (digitalRead (botonD) == 0) {delay (400); lcd.clear (); if (cantitate == 1) {cantitate = 0; } antiderrame ++; } if (cantitate == 0) {lcd.setCursor (0, 0); lcd.print („Harry Potter”); // CAMBIA el icono lcd.setCursor (0, 1); lcd.print („Tema”); jarri (); antiderrame = 0; lcd.clear (); go leibel; // volvemos al inicio
}
else if (cantitate == 1); {
lcd.setCursor (0, 0); lcd.print ("Despacito"); // CAMBIA el icono lcd.setCursor (0, 1); lcd.print („Luis Fonsi”); Despacito (); antiderrame = 0; lcd.clear (); go leibel; // volvemos al inicio}}}
Junto con la programación, de asemenea, se probează funcționalitatea ecranului LCD 16x2, pentru după ce se va păstra programul și așa se va întoarce la demasurile pentru programul final.
Pasul 3: 4. Escoger Canciones Para Programarla
Se caută 2 canțiuni pentru programarea și astfel includerea pentru rocă. În acest caz, acestea ar fi canțiunile de „Despacito” de Luis Fonsi și tema temei filmului Harry Potter.
Pasul 4: Unir Programas
După ce ați avut programarea botoanelor, a ecranului și a canțiilor; se unieron para así probar si eran compatibles y si no, modificarlos en tinkercad.
Pasul 5: Convertirlo En Físico
După ce a comprobat că funcționează în pagina de tinkercad, se copie hardware-ul pentru a vedea rezultatele. Sin embargo, al tratar de armarlo ocurrió un inconveniente, el cuál nos imposibilitate use the screen ya that this se quemó by un mal contact al soldarlo. Es por esto que en la presentación final solo include los botones y el buzzer.
Pasul 6: Máquinas Utilizadas
Se utilizează cortatorul láser din Maker-Space pentru a crea carcasa unde iriană toate circuitele.
Se utilizează cortatorul de vinil pentru a face sticker și decorarea carcasei
Se folosește taladro de piedestal din Maker-space pentru a face zgomotul pentru buzzer și cablul Arduino
Pasul 7: Recomandări
Unele recomandări dacă se vor repensa sunt cele mai bune rezultate:
- Probar anterior programul în pagina de Tinkercad pentru cum funcționează. Asa cum pot verifica cablurile si conexiunile intre protoboard si arduino.
- Al soldar, verifică că niciun contact între acești ani se toquen, așa se poate evita că se poate vreun element.
- Al replicar el hardware de la página Tinkercad, conectar tot de forma cuidadosa pentru no romper o piesă și verificare că nu se salgan de sus site-uri.
- Meditează dimensiunile pentru cutie, așa se poate evita ca să fie prea mare sau foarte mică.
Recomandat:
Rocola: 5 pași
Rocola: Se realizează o rocolă cu buzzer activ care reproduce 3 canțiuni la presiune un boton și care se vizualizează numele numelui pe un ecran LCD.Materiale: Arduino UNOJumpers3 Botones1 Buzzer activo1 Potenciómetro1 Pantalla LCD5 resist
Rocola Digital: 4 pași
Rocola Digital: Una rocola este un dispozitiv care produce muzică. Están compuestos por una maquina y regularmente son operadas a base de monedas para reproducir videos o canciones. În acest caz se creează o rocă care funcționează de formă manuală, grație a trei botoane
Rocola (Jukebox) Manufactura Digital: 7 pași
Rocola (Jukebox) Manufactura Digital: Rocola programată cu arduino. Contiene tres canciones: Starwars, Game of thrones și Coffin dance
Rocola Cu ARDUINO: 6 pași
Rocola With ARDUINO: Este instructiv să găsești cum să creezi propriul tău * ROCKOLA * cu Arduino și un Buzzer activ. Primerul se va a nevoie de toate materialele care se întâlnesc în secțiunea de " Listat de Materiale " pentru crearea rocolei. Con los mater
Introducción: Rocola; Fernando Lavarreda; Diego Hernández: 5 pași
Introducción: Rocola; Fernando Lavarreda; Diego Hernández: În următorul instructiv se întâlnesc detaliat pas la pas procesele necesare pentru a construi o rocă folosind Arduino și un buzzer pasiv. Como ya es bien sabido, Arduino este o comunitate de creadores care provee micro-controlador