Katse (Buzzer)
Komponendid:
- 4 Juhtmed ;
- 1 Piezo;
- 1 Breadboard Small ;
- 1 Arduino Uno R3.
Tööpõhimõte:
- Üks Piezo;
- Mängib muusikat;
- Koostas skeemi ja salvestas koodi keskkonda “tinkercad.com”;
- Koostas skeemi Arduino;
Ühendamise skeem:

https://www.tinkercad.com/things/2dSBcDoZkgX-fantabulous-turing-blorr
Kood:
// Meloodiate mängimine.
// Käsk Arduino tone() - noote tihedus.
// Noodid:
// note frequency
// c 262 Hz
// d 294 Hz
// e 330 Hz
// f 349 Hz
// g 392 Hz
// a 440 Hz
// b 494 Hz
// C 523 Hz
const int buzzerPin = 9;
// pikkus on nootide ja pausite koguste summa
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // tähed on noodid ja tühik on paus
// Rütmi seadistamine.
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
// "tempo" meloodia kiirus. Kui väiksem tempo_ siis suurem kiirus.
int tempo = 150;
void setup()
{
pinMode(buzzerPin, OUTPUT);
}
void loop()
{
int i, duration;
for (i = 0; i < songLength; i++)
{
duration = beats[i] * tempo;
if (notes[i] == ' ') // kui noot puudub
{
delay(duration);
}
else
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration);
}
delay(tempo/10); // väike paus nootide vahel
}
while(true){}
}
int frequency(char note)
{
int i;
const int numNotes = 8; // nootide kogus
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// kui noot on olemas, siis tagastame selle tiheduse
for (i = 0; i < numNotes; i++)
{
if (names[i] == note)
{
return(frequencies[i]);
}
}
return(0);
}
Meloodia mängija
Komponeendid:
- 1 Potentsiomeeter;
- 18 Juhtmed;
- 1 Piezo;
- 1 Resistor;
- 1602 LCD ekraan;
- Breadboard Small ;
- Arduino Uno R3.
Tööpõhimõte:
- Potentsiomeeter sisaldab ja lülitab LCD-ekraani välja;
- Töö tulemusena moodustuvad ekraanil joonised ja meloodia nimi;
- Piezo teeb häält (meloodia);
- Siis mängib teine meloodia ja ka LCD-monitoril, kirjutatakse meloodia nimi ja joonis;
- Koostas skeemi ja salvestas koodi keskkonda “tinkercad.com”;
- Koostas skeemi Arduino; Loos skeemi, mis töötab fotol ja videol;
Meloodia:
- “Imperial March” – pilt müts;
- “Mario Brothers” – mündi pilt;
- “Morning” – pilt päike;
- “Hymn CCCP” – pilt on täht;
- “Christmas song” – pilt puu;
- “JingleBells” – pilt kelluke.
Ühendamise skeem:

https://www.tinkercad.com/things/2aOCAE66G5h-spectacular-kieran-tumelo
Kood:
#include <LiquidCrystal.h>
int numRows = 2;
int numCols = 16;
int tonePin = 9;
const int buzzerPin =9;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte hat[8] = {
0b00000,
0b00000,
0b00000,
0b01110,
0b01110,
0b11111,
0b00000,
0b00000
};
byte coin[8] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b10101,
0b11011,
0b01110,
0b00000
};
byte sun[8] = {
0b10101,
0b01110,
0b11111,
0b01110,
0b10101,
0b00000,
0b00000,
0b00000
};
byte star[8] = {
0b00000,
0b00100,
0b00100,
0b11111,
0b00100,
0b01010,
0b10001,
0b00000
};
byte tree[8] = {
0b00100,
0b01110,
0b11111,
0b11111,
0b00100,
0b00100,
0b00000,
0b00000
};
byte bell[8] = {
0b00000,
0b00100,
0b01110,
0b01110,
0b11111,
0b00000,
0b00100,
0b00000
};
void setup()
{
Serial.begin(9600);
lcd.begin(numCols, numRows);
lcd.createChar(1, hat);
lcd.createChar(2, coin);
lcd.createChar(3, sun);
lcd.createChar(4, star);
lcd.createChar(5, tree);
lcd.createChar(6, bell);
}
void sunrise()
{
tone(9, 700, 300);
delay(600);
tone(9, 700, 300);
delay(600);
tone(9, 780, 150);
delay(300);
tone(9, 700, 150);
delay(300);
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
delay(300);
tone(9, 460, 450);
delay(600);
tone(9, 350, 450);
delay(600);
delay(600);
tone(9, 350, 450);
delay(600);
tone(9, 460, 450);
delay(600);
tone(9, 520, 150);
delay(300);
tone(9, 590, 150);
delay(300);
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
delay(300);
tone(9, 700, 1350);
delay(1800);
tone(9, 700, 300);
delay(600);
tone(9, 700, 300);
delay(600);
tone(9, 780, 150);
delay(300);
tone(9, 700, 150);
delay(300);
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
delay(300);
tone(9, 460, 450);
delay(600);
tone(9, 350, 450);
delay(600);
delay(600);
tone(9, 350, 450);
delay(600);
tone(9, 625, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
delay(300);
tone(9, 700, 450);
delay(600);
tone(9, 590, 150);
delay(300);
tone(9, 520, 150);
delay(300);
tone(9, 460, 1350);
delay(5000);
}
void march()
{
int notes[] = {
392, 392, 392, 311, 466, 392, 311, 466, 392,
587, 587, 587, 622, 466, 369, 311, 466, 392,
784, 392, 392, 784, 739, 698, 659, 622, 659,
415, 554, 523, 493, 466, 440, 466,
311, 369, 311, 466, 392
};
int times[] = {
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 350, 350, 250, 100, 350, 250, 100, 700,
350, 250, 100, 350, 250, 100, 100, 100, 450,
150, 350, 250, 100, 100, 100, 450,
150, 350, 250, 100, 750
};
for (int i = 0; i < 39; i++)
{
tone(buzzerPin , notes[i], times[i]*2);
delay(times[i]*2);
noTone(buzzerPin);
}
}
void mario()
{
int notes[] = {
1318, 1318, 1318, 1046, 1318, 1568, 784,
1046, 784, 659, 880, 987, 932, 880, 784,
1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987,
1046, 784, 659, 880, 987, 932, 880,
784, 1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987,
1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174,
};
int times[] = {
150, 300, 150, 150, 300, 600, 600,
450, 150, 300, 300, 150, 150, 300, 210,
210, 150, 300, 150, 150, 300, 150, 150, 450,
450, 150, 300, 300, 150, 150, 300,
210, 210, 150, 300, 150, 150, 300, 150, 150, 450,
150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150,
};
int delays[] = {
150, 300, 300, 150, 300, 600, 600,
450, 450, 450, 300, 300, 150, 300, 210,
210, 150, 300, 150, 300, 300, 150, 150, 450,
450, 450, 450, 300, 300, 150, 300,
210, 210, 150, 300, 150, 300, 300, 150, 150, 600,
150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 150,
300, 150, 150, 150, 300, 300, 300, 150, 600,
150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 450, 450, 450, 1200,
};
for (int i = 0; i < 75; i++){
tone(buzzerPin, notes[i], times[i]);
delay(delays[i]);
}
noTone(buzzerPin);
}
void hymn()
{
tone(9, 174, 249.99975);
delay(277.7775);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 174, 374.999625);
delay(416.66625);
tone(9, 195, 124.999875);
delay(138.88875);
tone(9, 220, 499.9995);
delay(555.555);
tone(9, 146, 249.99975);
delay(277.7775);
tone(9, 146, 249.99975);
delay(277.7775);
tone(9, 195, 499.9995);
delay(555.555);
tone(9, 174, 374.999625);
delay(416.66625);
tone(9, 155, 124.999875);
delay(138.88875);
tone(9, 174, 499.9995);
delay(555.555);
tone(9, 116, 249.99975);
delay(277.7775);
tone(9, 116, 249.99975);
delay(277.7775);
tone(9, 130, 499.9995);
delay(555.555);
tone(9, 130, 374.999625);
delay(416.66625);
tone(9, 146, 124.999875);
delay(138.88875);
tone(9, 155, 499.9995);
delay(555.555);
tone(9, 155, 374.999625);
delay(416.66625);
tone(9, 174, 124.999875);
delay(138.88875);
tone(9, 195, 499.9995);
delay(555.555);
tone(9, 220, 374.999625);
delay(416.66625);
tone(9, 233, 124.999875);
delay(138.88875);
tone(9, 261, 749.99925);
delay(833.3325);
tone(9, 174, 249.99975);
delay(277.7775);
tone(9, 293, 499.9995);
delay(555.555);
tone(9, 261, 374.999625);
delay(416.66625);
tone(9, 233, 124.999875);
delay(138.88875);
tone(9, 261, 499.9995);
delay(555.555);
tone(9, 174, 249.99975);
delay(277.7775);
tone(9, 174, 249.99975);
delay(277.7775);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 220, 374.999625);
delay(416.66625);
tone(9, 195, 124.999875);
delay(138.88875);
tone(9, 220, 499.9995);
delay(555.555);
tone(9, 146, 374.999625);
delay(416.66625);
tone(9, 146, 124.999875);
delay(138.88875);
tone(9, 195, 499.9995);
delay(555.555);
tone(9, 174, 374.999625);
delay(416.66625);
tone(9, 155, 124.999875);
delay(138.88875);
tone(9, 174, 499.9995);
delay(555.555);
tone(9, 116, 374.999625);
delay(416.66625);
tone(9, 116, 124.999875);
delay(138.88875);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 220, 374.999625);
delay(416.66625);
tone(9, 195, 124.999875);
delay(138.88875);
tone(9, 174, 999.999);
delay(1111.11);
tone(9, 293, 999.999);
delay(1111.11);
tone(9, 261, 249.99975);
delay(277.7775);
tone(9, 233, 249.99975);
delay(277.7775);
tone(9, 220, 249.99975);
delay(277.7775);
tone(9, 233, 249.99975);
delay(277.7775);
tone(9, 261, 749.99925);
delay(833.3325);
tone(9, 174, 249.99975);
delay(277.7775);
tone(9, 174, 999.999);
delay(1111.11);
tone(9, 233, 999.999);
delay(1111.11);
tone(9, 220, 249.99975);
delay(277.7775);
tone(9, 195, 249.99975);
delay(277.7775);
tone(9, 174, 249.99975);
delay(277.7775);
tone(9, 195, 249.99975);
delay(277.7775);
tone(9, 220, 749.99925);
delay(833.3325);
tone(9, 146, 249.99975);
delay(277.7775);
tone(9, 146, 999.999);
delay(1111.11);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 195, 374.999625);
delay(416.66625);
tone(9, 220, 124.999875);
delay(138.88875);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 195, 374.999625);
delay(416.66625);
tone(9, 220, 124.999875);
delay(138.88875);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 195, 374.999625);
delay(416.66625);
tone(9, 233, 124.999875);
delay(138.88875);
tone(9, 311, 999.999);
delay(1111.11);
tone(9, 311, 999.999);
delay(1111.11);
tone(9, 293, 249.99975);
delay(277.7775);
tone(9, 261, 249.99975);
delay(277.7775);
tone(9, 233, 249.99975);
delay(277.7775);
tone(9, 261, 249.99975);
delay(277.7775);
tone(9, 293, 749.99925);
delay(833.3325);
tone(9, 233, 249.99975);
delay(277.7775);
tone(9, 233, 999.999);
delay(1111.11);
tone(9, 261, 999.999);
delay(1111.11);
tone(9, 233, 249.99975);
delay(277.7775);
tone(9, 220, 249.99975);
delay(277.7775);
tone(9, 195, 249.99975);
delay(277.7775);
tone(9, 220, 249.99975);
delay(277.7775);
tone(9, 233, 749.99925);
delay(833.3325);
tone(9, 195, 249.99975);
delay(277.7775);
tone(9, 195, 999.999);
delay(1111.11);
tone(9, 233, 499.9995);
delay(555.555);
tone(9, 220, 374.999625);
delay(416.66625);
tone(9, 195, 124.999875);
delay(138.88875);
tone(9, 174, 499.9995);
delay(555.555);
tone(9, 116, 374.999625);
delay(416.66625);
tone(9, 116, 124.999875);
delay(138.88875);
tone(9, 174, 999.999);
delay(1111.11);
tone(9, 195, 499.9995);
delay(555.555);
tone(9, 220, 499.9995);
delay(555.555);
tone(9, 233, 1999.998);
delay(2222.22);
}
void christmas_tree()
{
int notes[] = {
262 , 440, 440, 392 ,
440, 349 , 262, 262 ,
262 , 440, 440, 466,
392, 523, 0, 523, 294,
294, 466,466,440,
392 , 349 , 262 , 440,
440, 392 , 440, 349
};
int times[] = {
400,400,400,400,
400,400,400,400,
400,400,400,400,
400,600,20,400,400,
400,400,400,400,
400,400,400,400,
400,400,400,600
};
for (int i = 0; i < 29; i++){
tone(buzzerPin, notes[i],times[i]);
delay(times[i]);
}
noTone(buzzerPin);
}
void JingleBells()
{
tone(9, 493, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 416);
delay(462);
tone(9, 493, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 416);
delay(462);
tone(9, 493, 208);
delay(231);
tone(9, 587, 208);
delay(231);
tone(9, 391, 312);
delay(347);
tone(9, 440, 104);
delay(115);
tone(9, 493, 833);
delay(925);
tone(9, 523, 208);
delay(231);
tone(9, 523, 208);
delay(231);
tone(9, 523, 312);
delay(347);
tone(9, 523, 104);
delay(115);
tone(9, 523, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 104);
delay(115);
tone(9, 493, 104);
delay(115);
tone(9, 493, 208);
delay(231);
tone(9, 440, 208);
delay(231);
tone(9, 440, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 440, 416);
delay(462);
tone(9, 587, 416);
delay(462);
tone(9, 493, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 416);
delay(462);
tone(9, 493, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 416);
delay(462);
tone(9, 493, 208);
delay(231);
tone(9, 587, 208);
delay(231);
tone(9, 391, 312);
delay(347);
tone(9, 440, 104);
delay(115);
tone(9, 493, 833);
delay(925);
tone(9, 523, 208);
delay(231);
tone(9, 523, 208);
delay(231);
tone(9, 523, 312);
delay(347);
tone(9, 523, 104);
delay(115);
tone(9, 523, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 208);
delay(231);
tone(9, 493, 104);
delay(115);
tone(9, 493, 104);
delay(115);
tone(9, 587, 208);
delay(231);
tone(9, 587, 208);
delay(231);
tone(9, 523, 208);
delay(231);
tone(9, 440, 208);
delay(231);
tone(9, 391, 208);
delay(231);
tone(9, 587, 208);
delay(231);
tone(9, 783, 208);
delay(231);
}
void loop()
{
lcd.setCursor(0, 0);
lcd.write(1);
lcd.print("Imperial March");
delay(3000);
march();
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(2);
lcd.print("Mario Brothers");
delay(5000);
mario();
delay(3000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(3);
lcd.print("Morning");
sunrise();
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(4);
lcd.print("Hymn CCCP");
hymn();
delay(9000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(5);
lcd.print("Christmas song");
christmas_tree();
delay(10000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(6);
lcd.print("JingleBells");
JingleBells();
delay(12000);
}
FOTO



Video
https://drive.google.com/file/d/1Oxv4FAnGf52MCFjUv7-aIETnY1KIl1if/view?usp=drivesdk
Kommentaatorid (uued võimalused):
char notes[] = “cdfda ag cdfdg gf “;
tähed on noodid ja tühik on paus. Rütmi seadistamine.
int beats[]={1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
«tempo» meloodia kiirus. Kui väiksem tempo_ siis suurem kiirus.
delay(tempo/10);
väike paus nootide vahel
Arduino tone()
noote tihedus
const int songLength
Kood “const int songLength” loob konstandi “songLength”, mis on täisarv (int) ja mida ei saa pärast selle initsialiseerimist muuta. Seda saab kasutada näiteks laulu pikkuse märkimiseks programmis.
char notes[]= “cdfda ag cdfdg gf “
Selles koodis kuulutatakse muutuja “notes” sümbolite massiiviks (char) ja see initsialiseeritakse reaga “cdfda ag cdfdg gf “. Sellist koodi võib kasutada näiteks muusikapala nootide järjestuse salvestamiseks.
int beats[]
See kood kuulutab muutuja “beats” täisarvude massiiviks (int).
int i, duration
See kood kuulutab kahte muutujat: “i” ja “duration”. Mõlemad muutujad on täisarvud (int). Kuid need ei ole selles koodis initsialiseeritud, nii et nende väärtused jäävad määramatuks enne, kui need on programmis selgelt initsialiseeritud.
tone (buzzerPin, frequency (notes[i]), duration);
See kood esitab piesokiirguril või kõlaril helisignaalid, kasutades iga elemendi jaoks massiivist notes sagedusi, kasutades funktsiooni tone ().
duration
Muutuv “duration” tähistab helisignaali kestust millisekundites. Arduino või sarnaste platvormide kontekstis kasutatakse seda väärtust helisignaali esitamise kestuse määramiseks.
int frequency
Muutuvat “frequency” kasutatakse tavaliselt helisignaali sageduse väärtuse salvestamiseks. Arduino või sarnaste platvormide kontekstis edastatakse see sagedusväärtus funktsioonile tone (), et määrata mängitava heli sagedus.
Kasutamisvõimalused tavaelus:
Kasutatakse muusikakaartide jaoks. Seda kasutatakse ka kõlarite jaoks. Muusikalised mänguasjad, muusikakarbid.
Toiduaine – kasutatakse helisignaali. Näiteks pesumasin, mis lõpetab pesemise, hakkab mängima lõbusat meloodiat, äratuskell “piiksub” etteantud ajal. Seda kasutatakse ka audioseadmetes. Ja seda kasutatakse mobiiltelefonide valmistamisel.
Leave a Reply