“PEMROGRAMAN MELODY”
Disusun Oleh :
1210191004
2 D4 TEKNIK TELEKOMUNIKASI A
2020/2021
PERCOBAAN 7
PEMROGRAMAN MELODY
A. TUJUAN
1. Membuat melody Do, Re, Mi, Fa, Sol, La, Si, Do.
2. Membuat program untuk membangkitkan frekuensi nada melody
B. DASAR TEORI
Suara adalah fenomena analog, bagaimana caranya Arduino menanganinya? Sekali lagi kita akan
meniru perilaku analog menggunakan Arduino dengan kecepatannya yang luar biasa. Untuk ini
kita akan menghubungkan buzzer/piezo elements ke salah satu pin digital Arduino.
Sebuah buzzer akan menghasilkan suara ketukan setiap kali dialiri gelombang (pulse) arus
listrik. Jika kita menggunakan gelombang arus listrik dengan frekuensi yang tepat (misalnya 440
kali per detik untuk menghasilkan nada A) maka suara ketukan secara bersama-sama ini akan
menghasilkan nada musik.
Berikut merupakan tabel frekuensi yang dapat digunakan untuk menghasilkan nada sesuai
dengan yang diinginkan.
C. HARDWARE
Arduino Uno Board
1 buah Piezo Speaker
Kabel jumper
D. RANGKAIAN
E. LANGKAH PERCOBAAN
1. Tancapkan usb serial ke kemputer
2. Pastikan drivernya sudah terinstall dan dikenali dengan benar
3. Cek driver, lihat port COM dan samakan pada software arduino
-> Rangkaian
-> Program
int speaker= 9;
void setup() {
// put your setup code here, to run once:
void loop() {
// put your main code here, to run repeatedly:
tone(speaker, 262); delay(500); // nada DO
tone(speaker, 294); delay(550); // nada RE
tone(speaker, 330); delay(590); // nada MI
tone(speaker, 349); delay(600); // nada FA
tone(speaker, 395); delay(610); // nada SOL
tone(speaker, 440); delay(620); // nada LA
tone(speaker, 494); delay(630); // nada SI
tone(speaker, 523); delay(700); // nada DOO
}
-> Tampilan program
-> Hasil
2. Bunyi yang dihasilkan berupa lagu “Twinkle Twinkle Little Star”
-> Rangkaian
-> Program
int speakerPin= 9;
int length = 15;
char notes[] = "ccggaagffeeddc ";
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;
void playTone(int tone, int duration) {
// put your setup code here, to run once:
for (long i = 0; i < duration * 1000L; i += tone * 2){
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}
void setup() {
// put your main code here, to run repeatedly:
pinMode(speakerPin, OUTPUT);
}
void loop() {
for (int i = 0; i < length; i++){
if (notes[i] == ' '){
delay(beats[i] * tempo);
}else{
playNote(notes[i], beats[i] * tempo);
}
delay(tempo / 2);
}
}
-> Tampilan program
-> Hasil
3. Bunyi yang dihasilkan berupa lagu “Lihat Kebunku”
-> Rangkaian
-> Program
int speaker= 9;
void setup() {}
// put your setup code here, to run once:
void DO() { tone(speaker, 262); }
void RE() { tone(speaker, 294); }
void MI() { tone(speaker, 330); }
void FA() { tone(speaker, 349); }
void SOL() { tone(speaker, 395); }
void LA() { tone(speaker, 440); }
void SI() { tone(speaker, 494); }
void DOO() { tone(speaker, 523); }
void DIAM() { noTone(speaker); }
void loop() {
// put your main code here, to run repeatedly:
SOL(); delay(200); MI(); delay(200); SOL(); delay(200); //1
DOO(); delay(200); DIAM(); delay(200);
SOL(); delay(200); DOO(); delay(200); SOL(); delay(200); //2
FA(); delay(200); MI(); delay(200); RE(); delay(200);
DIAM(); delay(200);
FA(); delay(200); RE(); delay(200); FA(); delay(200); //3
LA(); delay(200); SOL(); delay(200); DO(); delay(200); //4
MI(); delay(200); RE(); delay(200); DO(); delay(200);
DIAM(); delay(200);
SOL(); delay(200); MI(); delay(200); SOL(); delay(200); //5
DIAM(); delay(200);
SOL(); delay(200); DOO(); delay(200); SOL(); delay(200); //6
FA(); delay(200); MI(); delay(200); RE(); delay(200);
DIAM(); delay(200);
FA(); delay(200); RE(); delay(200); FA(); delay(200); //7
LA(); delay(200); SOL(); delay(200); DO(); delay(200); //8
MI(); delay(200); RE(); delay(200); DO(); delay(200);
DIAM(); delay(200);
}
-> Tampilan program
-> Hasil
-> Program
int pin[]={2,3,4,5,6,7,8,9,10,11};
int speaker= 13;
void setup() {
// put your setup code here, to run once:
for(int i=0;i<11;i++){
pinMode(pin[i], OUTPUT); }
pinMode(speaker,OUTPUT);
}
void loopLow(){
for(int i=0;i<11;i++){
digitalWrite(pin[i], LOW);
}
delay(200);
}
void loopHigh(int x){
for(int i=0;i<x;i++){
digitalWrite(pin[i], HIGH);
}
}
void MI() {
loopLow();
tone(speaker, 330);
loopHigh(1);
}
void FA() {
loopLow();
tone(speaker, 349);
loopHigh(2); }
void SOL() {
loopLow();
tone(speaker, 396);
loopHigh(3); }
void LA() {
loopLow();
tone(speaker, 440);
loopHigh(4); }
void SI() {
loopLow();
tone(speaker, 495);
loopHigh(5); }
void DOO() {
loopLow();
tone(speaker, 528);
loopHigh(6); }
void REE(){
loopLow();
tone(speaker, 594);
loopHigh(7); }
void MII(){
loopLow();
tone(speaker, 660);
loopHigh(8); }
void FAA(){
loopLow();
tone(speaker, 704);
loopHigh(9); }
void SOOL(){
loopLow();
tone(speaker, 792);
loopHigh(10); }
void DIAM() {
noTone(speaker);
}
void loop() {
// put your main code here, to run repeatedly:
DIAM(); delay(1000); SOL(); delay(200);
DIAM(); MII(); delay(200);
DIAM(); REE(); delay(300);
DIAM(); DOO();delay(200); delay(100);delay(100); SI();delay(400);
DIAM(); REE();delay(200);
DIAM(); DOO();delay(200);
DIAM(); SI();delay(200);
DIAM(); LA();delay(200);
DIAM(); SOL();delay(300);
DIAM(); delay(100);delay(100);delay(100);
DIAM(); delay(1000);LA();delay(200);
DIAM(); SI();delay(200);
DIAM(); DOO();delay(300);
DIAM(); SOL();delay(300);
DIAM(); delay(100);delay(100); DOO();delay(300);
DIAM(); MII();delay(200);
DIAM(); SOOL();delay(300);
DIAM(); MII();delay(200);
DIAM(); DOO();delay(200);
DIAM(); REE();delay(300);
DIAM(); delay(100);delay(100);delay(100);
DIAM(); delay(1000);SOOL();delay(200);
DIAM();MII();delay(200);
DIAM();REE( );delay(300);
DIAM(); DOO();delay(200);
DIAM(); delay(100);delay(100); MII();delay(200);
DIAM();SOOL();delay(200);
DIAM();MII();delay(200);
DIAM() ; REE();delay(200);
DIAM();DOO();delay(300);
DIAM();LA();delay(200);
DIAM(); delay(100);delay(100);delay(100);
DIAM();delay(1000);SI();delay(400);
DIAM();DOO();delay(300);
DIAM();LA();delay(300);
DIAM();SOL();delay(400);
DIAM(); delay(100); REE();delay(200);
DIAM();MII();delay(200);
DIAM();FAA();delay(200);
DIAM(); REE();delay(200);
DIAM(); LA();delay(200);
DIAM();SI();delay(300);
DIAM();DOO();delay(300);
DIAM(); delay(100);delay(100);delay(100);
}
-> Tampilan program
-> Hasil
2. Buatlah eksperimen dengan meggunakan kombinasi nada-nada yang membentuk sebuah
lagu.
- Membunyikan lagu “Gundul Pacul”.
-> Rangkaian
-> Program
int speakerPin = 9;
void setup() {
pinMode(speakerPin,OUTPUT); }
void loop() {
noTone(speakerPin);
delay(1000);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(300);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(400);
noTone(speakerPin);
tone(speakerPin,495,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,495,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,495,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(400);
noTone(speakerPin);
delay(1000);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(300);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(400);
noTone(speakerPin);
tone(speakerPin,495,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,495,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,495,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(400);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(300);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,396,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,352,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,330,200);
delay(200);
noTone(speakerPin);
tone(speakerPin,264,200);
delay(300);
}
-> Tampilan program
-> Hasil
Kesimpulan
Pada percobaan di atas didapatkan kesimpulan sebagai berikut :
1. Fungsi methot tone(pinarduino, frekuensi) adalah untuk menampilkan nada dengan frekuensi
tersebut pada pinArduino tersebut.
2. Delay pada setiap nada berfungsi juga sebagai durasi nada tersebut. Contohnya tone(speaker,
395); delay(500); artinya nada sol berdurasi 500ms.
3. Untuk menampilkan diam / tanpa nada bisa menggunakan perintah tone(pinarduino).
4. Untuk mendeklarasikan nada menggunakan notasi, dideklarasikan juga timeHigh tiap
notasinya atau bunyi tiap notasi.