Veronika Milovzorova portfolio/ eng

Buzzer

Näidis

// Этот скетч использует зуммер для воспроизведения мелодий.

// Команда Arduino tone() будет издавать звуки определенной частоты.

// Мы создаем функцию, которая сопоставляет символ нотной гаммы

// ("До-ре-ми-фа...До") соответствующей частоте из следующей таблицы:

// 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;

// Мы создали массив с нотами, которые хотим воспроизвести, измените эти значения, чтобы создать свои мелодии!

// Длина должна равняться общему количеству нот и пауз

const int songLength = 18;

// Обозначение нот представляет собой массив из текстовых символов,

// соответствующим нотам в песне. Пробел означает паузу (пустую ноту)

char notes[] = "cdfda ag cdfdg gf "; // пробелы означают паузы

// Ритм задается массивом из длительности нот и пауз между ними.

// "1" - четвертная нота, "2" - половинная, и т.д.

// Не забывайте, что пробелы должны быть тоже определенной длинны.

int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};

// "tempo" это скорость проигрывания мелодии.

// Для того, чтобы мелодия проигрывалась быстрее, вы

// должны уменьшить следующее значение.

int tempo = 150;

void setup() 

{

  pinMode(buzzerPin, OUTPUT);

}

void loop() 

{

  int i, duration;

  for (i = 0; i < songLength; i++) // пошаговое воспроизведение из массива

  {

    duration = beats[i] * tempo;  // длительность нот/пауз в ms    

    if (notes[i] == ' ')          // если нота отсутствует? 

    {

      delay(duration);            // тогда не большая пауза

    }

    else                          // в противном случае играть

    {

      tone(buzzerPin, frequency(notes[i]), duration);

      delay(duration);            // ждать пока проигрывается

    }

    delay(tempo/10);              // маленькая пауза между нотами

  }

  // Мы хотим, чтобы мелодия проиграла всего один раз, так что здесь остановимся окончательно:

  while(true){}

  // Если же вы хотите, чтобы мелодия играть снова и снова, Удалить вышеуказанное заявление

}

int frequency(char note) 

{

  // Эта функция принимает символ ноты (a-g), и возвращает

  // частоту в Гц для функции tone().

  int i;

  const int numNotes = 8;  // количество хранимых нот

  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };

  int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};

  // Теперь мы будем искать во всем массиве, символ ноты и если находим, возвращаем частоту для этой ноты.  

  for (i = 0; i < numNotes; i++)  // пошаговый перебор нот

  {

    if (names[i] == note)         // если находим

    {

      return(frequencies[i]);     // возвращаем частоту

    }

  }

  return(0);  // Поиск символа не дал результата? Но, необходимо  вернуть какое-то значение, так вернем 0.

}

katse 6. Sumisemise kogemus

Selle koodiga loon väikese klaviatuuri, millel saate mängida mõnda nooti. Nii saate mängida mitut erinevat klaverinooti.

Kasutasin:
10 juhet
3 nuppi
3 takisti
1 buzzer
Arduino
plaat

const int Pin1 = 9;
const int Pin2 = 8;
const int Pin3 = 7;
const int buzzerPin = 13;
 
// Klaverinootide sageduste määramine
#define T_C 666
#define T_G 999
#define T_B 333
 
void setup() 
{
  pinMode(Pin1, INPUT); //kaasamine
  digitalWrite(Pin1,HIGH);
   
  pinMode(Pin2, INPUT);
  digitalWrite(Pin2,HIGH);
   
  pinMode(Pin3, INPUT);
  digitalWrite(Pin3,HIGH);
   
}
 
void loop()
{
  while(digitalRead(Pin1) == LOW) //tagastab sadama oleku
  {
    tone(buzzerPin,T_B);
  }
 
  while(digitalRead(Pin2) == LOW)
  {
    tone(buzzerPin,T_C); //sagedus
  }
 
  while(digitalRead(Pin3) == LOW)
  {
    tone(buzzerPin,T_G);
  }
 
 
 
  noTone(buzzerPin);
 
}

Buzzeri kasutatakse pesumasinate, kõrvaklappide, alarmide, kopterite jaoks.

en_US