|

Brzęczyk piezoelektryczny z Arduino

Głośnik piezoelektryczny przekształca sygnały elektryczne w dźwięk na zasadzie deformacji mechanicznej materiału piezoelektrycznego (najczęściej ceramiki), pod wpływem przyłożonego napięcia.

Głośnik aktywny ma wbudowany oscylator o stałej częstotliwości.

Głośnik pasywny wymaga zewnętrznego sygnału zmiennego, dzięki któremu można regulować częstotliwość i amplitudę dźwięku.

Ludzie słyszą dźwięki o częstotliwościach z przedziału: 20Hz – 20kHz

Przypisanie częstotliwości dźwięków

// pitches for C scale (tones):
int c4 = 261;
int d4 = 293;
int e4 = 330;
int f4 = 350;
int g4 = 392;
int a4 = 440;
int b4 = 494;
int c5 = 523;

Określenie rytmu (nuta, półnuta, itd)

// rhytm
int tempo = 1000;
int w = tempo;  //whole note - 4 beats
int h = tempo/2;  // half note - 2 beats
int q = tempo/4;  // quarter note - 1 beat
int e = tempo/8;  // eight note - 1/2 beat
int s = tempo/16;  // sixteen note - 1/4 beat

Dźwięki mogą być odgrywane za pomocą metody tone()

tone(pin, frequency)
tone(pin, frequency, duration)
arduino z piezo odgrywanie melodii
Połączenie arduino z piezo

Przykład odgrywania pełnej gamy dźwięków ze stałym rytmem

int speakerPin = 9;

// rhytm
int tempo = 1000;
int w = tempo;
int h = tempo/2;
int q = tempo/4;
int e = tempo/8;
int s = tempo/16;

// pitches for C scale
int c4 = 261;
int d4 = 293;
int e4 = 330;
int f4 = 350;
int g4 = 392;
int a4 = 440;
int b4 = 494;
int c5 = 523;

int melody[] = {c4, d4, e4, f4, g4, a4, b4, c5};

void playMelody()
{
	for(int i=0; i<8; i++)
    {
    	tone(speakerPin, melody[i], h);
        delay(h);
    }
}

void setup()
{
   pinMode(speakerPin, OUTPUT);
   playMelody();
}

void loop(){}

Przykład programu odgrywającego melodię Piraci z Karaibów

Projekt na tinkercad

int speakerPin = 9;

// rhytm
int tempo = 1000;
int w = tempo;
int h = tempo/2;
int q = tempo/4;
int e = tempo/8;
int s = tempo/16;

// pitches for C scale
int c4 = 261;
int d4 = 293;
int e4 = 330;
int f4 = 350;
int g4 = 392;
int a4 = 440;
int b4 = 494;
int c5 = 523;

// Twinkle twinkle little star
//int melody[] = {c4,c4,g4,g4,a4,a4,g4,f4,f4,e4,e4,d4,d4,c4};
//int rhytm[] = {q,q,q,q,q,q,h,q,q,q,q,q,q,h};

// Pirates Of The Caribbean 
int melody[] = {a4,c4,d4,d4,d4,e4,f4,f4,f4,g4,e4,e4,d4,c4,d4};
int rhytm[] = {e,e,q,q,e,e,q,q,e,e,q,q,e,e,h};

void playMelody()
{
    int len = sizeof(melody)/sizeof(melody[0]);
  
    for(int i=0; i<len; i++)
    {
    	tone(speakerPin, melody[i], rhytm[i]);
        delay(rhytm[i]*2);
    }
}

void setup()
{
   pinMode(speakerPin, OUTPUT);
   playMelody();
}


void loop(){}

Proste pianino z piezo i przyciskami chwilowymi

int tones[] = {261,293,330,350,392,440,494};
int keys[] = {2,3,4,5,6,7,8};
int speakerPin = 9;

void setup(){
  pinMode(speakerPin, OUTPUT);
}

void loop(){
  for(int i=0; i<7; i++){
    if(digitalRead(keys[i])==true){
      tone(speakerPin, tones[i],50);
    }
  }
}

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *