[Arduino] เสียงดังด้วย Buzzer
วันนี้เราจะมาเล่นเอาต์พุตเป็นเสียง
โดยใช้ Piezo หรือ Buzzer ด้วยตัวเอง
เจ้า Piezo หรือ Buzzer จะเหมือนกันกับลำโพงก็คือสามารถส่งเสียงได้
โดยการจำแนกการสั่นสะเทือนที่เป็นจังหวะ เสียงคลื่นเสียง
โดยปกติความถี่ที่ 20 Hz ถึง 20KHz
หน้าตาของเจ้า Piezo Buzzer
เราจะใช้คำสั่งเสียง () คำสั่งโดยจะทำงานดังนี้ได้ครับ
จะทำการสร้างคลื่นสแควร์ด้วยความถี่ที่เรากำหนดไปยังขาเรากำหนดที่ตามระยะเวลาที่เรากำหนด
ดังโครงสร้าง
โทน (pin, ความถี่ระยะเวลา)
* pin = ขาที่เราต่อ buzzer เข้ากับ arduino * ความถี่ = ความถี่ที่เรากำหนดความถี่เป็น hertz (เป็น unsigned int) 
* duration = ระยะเวลาที่จะให้เสียง (เป็น unsigned long)
ฮาร์ดแวร์:
- Arduino Uno R3 จำนวน 1 อัน
- โปรโตบอร์ดจำนวน 1 อัน
- Buzzer จำนวน 1 อัน
- R 100 Ohm จำนวน 1 อัน
- สายจัย
วงจร:
เราจะต่อวงจรโดย
- ขา - ของออดต่อกับ GND ของ Arudino 
- ขา + ของออดต่อกับ R 100 โอห์มและขาของ R อีกข้างต่อเข้ากับขา 8 ของ Arduino
รหัส: ไป
ที่ File -> ตัวอย่าง -> Digital -> toneMelody 
โดยโค๊ดที่จะใช้ไฟล์ pitches.h เป็นไฟล์ที่เกี่ยวกับการกำหนดโน้ตบุ๊คให้เสียงเหมือน
เช่น NOTE_C4 เป็นเสียงพอดี (กลาง) 
NOTE_FS4 คือเสียงฟา ( สูง)
* / # include "pitches.h"// บันทึกย่อในทำนอง: 
int melody [] = { 
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};// note durations: 4 = note ไตรมาส, 8 = note แปด ฯลฯ : 
int noteDurations [] = { 
4, 8, 8, 4,4,4,4,4};void setup () ( 
/ / iterate ผ่านบันทึกของ melody: 
for (int thisNote = 0; thisNote <8; thisNote ++) {// สำหรับคำนวณระยะเวลาบันทึกให้ใช้เวลาหนึ่งวินาที
// หารด้วยประเภทของโน้ต 
// เช่นหมายเหตุไตรมาส = 
1000/4 , บันทึกที่แปด = 1000/8 ฯลฯint noteDuration = 1000 / noteDurations [thisNote]; 
เสียง (8, melody [thisNote], noteDuration);/ / เพื่อแยกความแตกต่างของโน้ตให้ตั้งเวลาต่ำสุดระหว่างพวกเขา 
// ระยะเวลาบันทึกย่อ + 30% ดูเหมือนจะทำงานได้ดี: 
int pauseBetweenNotes = noteDuration * 1.30; 
ล่าช้า (pauseBetweenNotes); 
// หยุดการเล่นเสียง: 
noTone (8); 
} 
}void loop () { 
// ไม่จำเป็นต้องทำซ้ำเมโลดี้ 
}
ไฟล์ pitches.h
/
 ************************************************* 
* ค่าคงที่สาธารณะ
*********************************************** ** /#define NOTE_B0 31 
# define NOTE_C1 33 
# ระบุ NOTE_CS1 35 
# ระบุ NOTE_D1 37 
# ระบุ NOTE_DS1 39 
# ระบุ NOTE_E1 41 
# ระบุ NOT_F1 44 
# ระบุ NOTE_FS1 46 
# ระบุ NOTE_G1 49 
# ระบุ NOTE_GS1 52 
# ระบุ NOTE_A1 55 
# ระบุ NOTE_AS1 58 
# กำหนด Note_B1 62 
# define Note_C2 65 
# define NOTE_CS2 69 
#define NOTE_D2 73 
#define NOTE_DS2 78 
#define NOTE_E2 82 
# ระบุ NOTE_F2 87 
# ระบุ NOTE_FS2 93 
# ระบุ NOTE_G2 98 
# ระบุ NOTE_GS2 104 
# ระบุโน้ตบุ๊ค 110 
# ระบุ NOTE_AS2 117 
# กำหนด NOTE_B2 123 
#define NOTE_C3 131
#define NOTE_CS3 139 
#define NOTE_D3 147 
#define NOTE_DS3 156 
#define NOTE_E3 165 
#define NOTE_F3 175 
#define NOTE_FS3 185 
#define NOTE_G3 196 
#define NOTE_GS3 208 
#define NOTE_A3 220 
#define NOTE_AS3 233 
#define NOTE_B3 247 
#define NOTE_C4 262 // เสียงกลาง (กลาง) 
#define NOTE_CS4 277 
#define NOTE_D4 294 / เสียงเสียง (กลาง) 
#define NOTE_DS4 311 
#define NOTE_E4 330 / เสียงมี (กลาง) 
#define NOTE_F4 349 // เสียงฟา (กลาง) 
#define NOTE_FS4 370 
#define NOTE_G4 392 // เสียงซอฟท์ (กลาง) 
#define NOTE_GS4 415 
#define NOTE_A4 440 / เสียงลา (กลาง) 
#define NOTE_AS4 466
#define NOTE_B4 494 // เสียงที (กลาง) 
#define NOTE_C5 523 
#define NOTE_CS5 554 
#define NOTE_D5 587 
#define NOTE_DS5 622 
#define NOTE_E5 659 
#define NOTE_F5 698 
#define NOTE_FS5 740 
#define NOTE_G5 784 
#define NOTE_GS5 831 
#define NOTE_A5 880 
#define NOTE_AS5 932 
#define NOTE_B5 988 
#define NOTE_C6 1047 
#define NOTE_CS6 1109 
#define NOTE_D6 1175 
#define NOTE_DS6 1245 
#define NOTE_E13 1319 
#define NOTE_F6 1397 
#define NOTE_FS6 1480 
#define NOTE_G6 1568 
#define NOTE_GS6 1661 
#define NOTE_A6 1760 
# define NOTE_AS6 1865 
#define NOTE_B6 1976
#define NOTE_C7 2093 
#define NOTE_CS7 2217 
#define NOTE_D7 2349 
#define NOTE_DS7 2489 
#define NOTE_E7 2637 
#define NOTE_F7 2794 
#define NOTE_FS7 2960 
#define NOTE_G7 3136 
#define NOTE_GS7 3322 
#define NOTE_A7 3520 
#define NOTE_AS7 3729 
#define NOTE_B7 3951 
#define NOTE_C8 4186 
#define NOTE_CS8 4435 
#define NOTE_D8 4699 
#define NOTE_DS8 4978 
อ้างอิง
http://arduino.cc/en/Tutorial/Tone
โดยใช้ Piezo หรือ Buzzer ด้วยตัวเอง
เจ้า Piezo หรือ Buzzer จะเหมือนกันกับลำโพงก็คือสามารถส่งเสียงได้
โดยการจำแนกการสั่นสะเทือนที่เป็นจังหวะ เสียงคลื่นเสียง
โดยปกติความถี่ที่ 20 Hz ถึง 20KHz
จะทำการสร้างคลื่นสแควร์ด้วยความถี่ที่เรากำหนดไปยังขาเรากำหนดที่ตามระยะเวลาที่เรากำหนด
ดังโครงสร้าง
* duration = ระยะเวลาที่จะให้เสียง (เป็น unsigned long)
- โปรโตบอร์ดจำนวน 1 อัน
- Buzzer จำนวน 1 อัน
- R 100 Ohm จำนวน 1 อัน
- สายจัย
- ขา - ของออดต่อกับ GND ของ Arudino
- ขา + ของออดต่อกับ R 100 โอห์มและขาของ R อีกข้างต่อเข้ากับขา 8 ของ Arduino
ที่ File -> ตัวอย่าง -> Digital -> toneMelody
โดยโค๊ดที่จะใช้ไฟล์ pitches.h เป็นไฟล์ที่เกี่ยวกับการกำหนดโน้ตบุ๊คให้เสียงเหมือน
เช่น NOTE_C4 เป็นเสียงพอดี (กลาง)
NOTE_FS4 คือเสียงฟา ( สูง)
int melody [] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};// note durations: 4 = note ไตรมาส, 8 = note แปด ฯลฯ :
int noteDurations [] = {
4, 8, 8, 4,4,4,4,4};void setup () (
/ / iterate ผ่านบันทึกของ melody:
for (int thisNote = 0; thisNote <8; thisNote ++) {// สำหรับคำนวณระยะเวลาบันทึกให้ใช้เวลาหนึ่งวินาที
// หารด้วยประเภทของโน้ต
// เช่นหมายเหตุไตรมาส =
1000/4 , บันทึกที่แปด = 1000/8 ฯลฯint noteDuration = 1000 / noteDurations [thisNote];
เสียง (8, melody [thisNote], noteDuration);/ / เพื่อแยกความแตกต่างของโน้ตให้ตั้งเวลาต่ำสุดระหว่างพวกเขา
// ระยะเวลาบันทึกย่อ + 30% ดูเหมือนจะทำงานได้ดี:
int pauseBetweenNotes = noteDuration * 1.30;
ล่าช้า (pauseBetweenNotes);
// หยุดการเล่นเสียง:
noTone (8);
}
}void loop () {
// ไม่จำเป็นต้องทำซ้ำเมโลดี้
}
* ค่าคงที่สาธารณะ
*********************************************** ** /#define NOTE_B0 31
# define NOTE_C1 33
# ระบุ NOTE_CS1 35
# ระบุ NOTE_D1 37
# ระบุ NOTE_DS1 39
# ระบุ NOTE_E1 41
# ระบุ NOT_F1 44
# ระบุ NOTE_FS1 46
# ระบุ NOTE_G1 49
# ระบุ NOTE_GS1 52
# ระบุ NOTE_A1 55
# ระบุ NOTE_AS1 58
# กำหนด Note_B1 62
# define Note_C2 65
# define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
# ระบุ NOTE_F2 87
# ระบุ NOTE_FS2 93
# ระบุ NOTE_G2 98
# ระบุ NOTE_GS2 104
# ระบุโน้ตบุ๊ค 110
# ระบุ NOTE_AS2 117
# กำหนด NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262 // เสียงกลาง (กลาง)
#define NOTE_CS4 277
#define NOTE_D4 294 / เสียงเสียง (กลาง)
#define NOTE_DS4 311
#define NOTE_E4 330 / เสียงมี (กลาง)
#define NOTE_F4 349 // เสียงฟา (กลาง)
#define NOTE_FS4 370
#define NOTE_G4 392 // เสียงซอฟท์ (กลาง)
#define NOTE_GS4 415
#define NOTE_A4 440 / เสียงลา (กลาง)
#define NOTE_AS4 466
#define NOTE_B4 494 // เสียงที (กลาง)
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E13 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
# define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978
อ้างอิง
http://arduino.cc/en/Tutorial/Tone

 
ไม่มีความคิดเห็น:
แสดงความคิดเห็น