WAVGAT і зумер (п’єзовипромінювач або buzzer)

Зверніть, будь ласка, увагу, що перед тим як підключити WAVGAT і зумер, необхідно здійснити правильне налаштування Arduino IDE. Для цього можна скористатися інструкціями в даній СТАТТІ.

Сьогодні ж ми розглянемо як можна з’єднати плату WAVGAT і зумер. П’єзокерамі́чний випромі́нювач (п’єзовипромінювач) — електроакустичний пристрій відтворення звуку, що використовує зворотний п’єзоелектричний ефект. Наведений нижче програмний код (джерело: https://gist.github.com/nicksort/4736535) реалізує мелодію з культового фільму “Зоряні війни”. ВАЖЛИВО: нам довелося дещо поправити цей код, оскільки нам в руки потрапив зумер зі зворотньою логікою. Тобто пищалка вмикається логічним “0” (0 В), а вимикається логічною “1” (3.3 В). Тому ми замінили стрічку коду номер 92 noTone(buzzerPin); на стрічку 91 digitalWrite(buzzerPin, HIGH); для коректної роботи пищалки. Якщо Ваш зумер працює за традиційною схемою, Вам необхідно закоментувати стрічку 91 і розкоментувати 92. Також даний код програмує порти 12 і 13 мікроконтролера для світлодіодної світломузики. Схема підключення полягає в наступному:

WAVGAT і зумер

buzzer GND ==> WAVGAT GND;
buzzer VCC ==> WAVGAT 3.3 V;
buzzer I/O ==> WAVGAT pin 8;
LED 1 ==> WAVGAT pin 12;
LED 2 ==> WAVGAT pin 13.

const int c = 261;
const int d = 294;
const int e = 329;
const int f = 349;
const int g = 391;
const int gS = 415;
const int a = 440;
const int aS = 455;
const int b = 466;
const int cH = 523;
const int cSH = 554;
const int dH = 587;
const int dSH = 622;
const int eH = 659;
const int fH = 698;
const int fSH = 740;
const int gH = 784;
const int gSH = 830;
const int aH = 880;
 
const int buzzerPin = 8;
const int ledPin1 = 12;
const int ledPin2 = 13;
 
int counter = 0;

void setup()
{
  //Setup pin modes
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}
 
void loop()
{
 
  //Play first section
  firstSection();
 
  //Play second section
  secondSection();
 
  //Variant 1
  beep(f, 250);  
  beep(gS, 500);  
  beep(f, 350);  
  beep(a, 125);
  beep(cH, 500);
  beep(a, 375);  
  beep(cH, 125);
  beep(eH, 650);
 
  delay(500);
 
  //Repeat second section
  secondSection();
 
  //Variant 2
  beep(f, 250);  
  beep(gS, 500);  
  beep(f, 375);  
  beep(cH, 125);
  beep(a, 500);  
  beep(f, 375);  
  beep(cH, 125);
  beep(a, 650);  
 
  delay(650);
}
 
void beep(int note, int duration)
{
  //Play tone on buzzerPin
  tone(buzzerPin, note, duration);
 
  //Play different LED depending on value of 'counter'
  if(counter % 2 == 0)
  {
    digitalWrite(ledPin1, HIGH);
    delay(duration);
    digitalWrite(ledPin1, LOW);
  }else
  {
    digitalWrite(ledPin2, HIGH);
    delay(duration);
    digitalWrite(ledPin2, LOW);
  }
 
  //Stop tone on buzzerPin
  digitalWrite(buzzerPin, HIGH); 
 // noTone(buzzerPin); //розкоментувати, якщо пищалка активується логічною "1" і закоментувати попередній рядок
 
  delay(50);
 
  //Increment counter
  counter++;
}
 
void firstSection()
{
  beep(a, 500);
  beep(a, 500);    
  beep(a, 500);
  beep(f, 350);
  beep(cH, 150);  
  beep(a, 500);
  beep(f, 350);
  beep(cH, 150);
  beep(a, 650);
 
  delay(500);
 
  beep(eH, 500);
  beep(eH, 500);
  beep(eH, 500);  
  beep(fH, 350);
  beep(cH, 150);
  beep(gS, 500);
  beep(f, 350);
  beep(cH, 150);
  beep(a, 650);
 
  delay(500);
}
 
void secondSection()
{
  beep(aH, 500);
  beep(a, 300);
  beep(a, 150);
  beep(aH, 500);
  beep(gSH, 325);
  beep(gH, 175);
  beep(fSH, 125);
  beep(fH, 125);    
  beep(fSH, 250);
 
  delay(325);
 
  beep(aS, 250);
  beep(dSH, 500);
  beep(dH, 325);  
  beep(cSH, 175);  
  beep(cH, 125);  
  beep(b, 125);  
  beep(cH, 250);  
 
  delay(350);
} 

Залишити коментар

Your email address will not be published. Required fields are marked *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.