Using Buzzer

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.