Darmowa dostawa od 100,00 zł

Dodaj produkty podając kody

Dodaj plik CSV
Wpisz kody produktów, które chcesz zbiorczo dodać do koszyka (po przecinku, ze spacją lub od nowej linijki). Powtórzenie wielokrotnie kodu, doda ten towar tyle razy ile razy występuje.

Podstawy Elektroniki I Arduino Kurs Praktyczny #6

2019-03-20
Podstawy Elektroniki I Arduino Kurs Praktyczny #6

Zbudujmy teraz bardziej zaawansowany projekt pozytywka, który będzie generował dźwięki muzyki. Musimy zaopatrzyć się tylko w dwa konieczne elementy, to jest w moduł Arduino i "buzzer", które znajdziesz w naszej ofercie. Możesz użyć modułu Arduino, jaki akurat posiadasz, może to być UNO, MEGA, lub NANO i inne.

  • Projekt 'pozytywka'
  • charakterystyka "buzzera"
  • buzzer bez generatora i z generatorem
  • funkcja tone

Schemat połączeń jest bardzo prosty (patrz obrazek)

1. Pozytywka — podłączenie głośniczka do modułu Arduino UNO

Rozróżniamy dwa główne typy głośniczków piezoelektrycznych, z generatorem i bez generatora. Oba typy fizycznie niczym się nie różnią. Gdy jednak podłączymy buzzer z generatorem do zasilania, zaczyna wydawać on ciągły pisk, a to dlatego, że zawiera generator, który tworzy dźwięk. 

W buzzerze bez generatora sami musimy  wytworzyć impulsy elektryczne będące źródłem muzyki.

Kod pozytywki:


int speakerPin = 9;
 
int length = 15; // ilość nut do zagrania
char notes[] = "ccggaagffeeddc "; // znak a oznacza przerwe
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) {
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
    digitalWrite(speakerPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(speakerPin, LOW);
    delayMicroseconds(tone);
  }
}
 
void playNote(char note, int duration) {
  // tablica wysokości dźwięków
  char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
  int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 };
 
  // zagraj dźwięk odpowiedni do danej nuty
  for (int i = 0; i < 8; i++) {
    if (names[i] == note) {
      playTone(tones[i], duration);
    }
  }
}
 
void setup() {
  pinMode(speakerPin, OUTPUT);
}
 
void loop() {
  for (int i = 0; i < length; i++) {
    if (notes[i] == ' ') {
      delay(beats[i] * tempo); // pauza
    } else {
      playNote(notes[i], beats[i] * tempo);
    }
 
    // pauza pomiędzy dźwiękami
    delay(tempo / 2);
  }
}
 

Użyteczną funkcją z biblioteki Arduino do tworzenia dźwięków jest funkcja tone

funkcja tone (), przyjmuje 3 argumenty:

  1. pin, na którym ma być wygenerowany sygnał,
  2. częstotliwość tego sygnału,
  3. czas trwania — parametr ten nie jest obowiązkowy.

W praktyce wykorzystanie tej funkcji wygląda następująco:

tone(A5, 1000, 2000); //Wygeneruj sygnał o częstotliwości 1000 Hz na pinie A5, który trwa 2000 ms

Pokaż więcej wpisów z Marzec 2019

Polecane

pixelpixel