6 Katse BuzzerÜlesanne / Meloodia mängija


Katse (Buzzer)

https://www.tinkercad.com/things/atmFskRJUVj-magnificent-wolt-rottis?sharecode=WG5FlP8mxhIdfX0k7qoAxlB8v4WtHu4m64IHbUd7gUs

Tööpõhimõte Katse (Buzzer) :

  • Esitab meloodiaid.

Komponeendid Katse (Buzzer) :

  • 4 juhtmed ;
  • 1 piezo ;
  • 1 Breadboard Small ;
  • 1 Arduino Uno R3

Katse (Buzzer) 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

https://www.tinkercad.com/things/6NPMZ0yEs3n-spectacular-fyyran

Tööpõhimõte Meloodia mängija :

  • Piezo teeb meloodiaid. Potentsiomeeter sisaldab ja lülitab LCD-ekraani välja. Töö tulemusena moodustuvad ekraanil joonistused ja meloodiate nimi.

Komponeendid Meloodia mängija :

  • 1 1602 LCD ekraan ;
  • 1 potentsiomeeter ;
  • 18 juhtmed ;
  • 1 piezo ;
  • 1 resistor ;
  • 1 Breadboard Small ;
  • 1 Arduino Uno R3

Laulud/pildid :

  • Imperial March – hat
  • Mario Brothers – coin
  • Morning – sun
  • Hymn CCCP – star
  • Christmas song – tree
  • JingleBells – bell

Meloodia mängija 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);
}

Photo / video :

Photo :

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

Näiteid elust :

  • Muusikakarp
  • Veermik
  • Muusikaline tagasitõmbamine

Comments

Lisa kommentaar

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga