Syrena alarmowa

To co robi twórca Teensy ze swoją społecznością jest niesamowite. Jego mikra płytka z procesorem ARM to dowód na to, że produkcje niezależne dalej mogą szokować pomysłami i możliwościami przy stosunkowo niskiej cenie.

image

Właśnie odkryłem bibliotekę Audio.h. Służy do przetwarzania dźwięków w czasie rzeczywistym i jak się potem przekonasz jest bajecznie prosta.

Wszystko opiera się na klockach. Każdy klocek robi coś z dźwiękiem, odbiera z wejścia, filtruje, analizuje widmo, wzmacnia, odtwarza z pamięci i dużo dużo więcej.

Na specjalnej stronie WWW łączysz te klocki wirtualnymi przewodami, naciskasz Export i masz gotowy kawałek programu, który robi to co chcesz z dźwiękiem. Jak to nie jest super, to nie wiem co jest.

image

Na razie moje pomysły ograniczają się do zrobienia syreny alarmowej, efektu do gitary elektryczniej (rock!!!), wyświetlacza widma do wzmacniacza, odtwarzacza dźwięków z popularnych gier jako sygnał otwarcia drzwi do sklepu. Ale ty wymyślisz pewnie jeszcze bardziej niesamowite rzeczy. Np. dzwonek do drzwi z dźwiękiem karabinu plazmowego ;-D

Ponieważ najtrudniej jest zacząć, pokażę ci jak zrobić syrenę alarmową.

Wchodzisz na stronę edytora klocków

Syrena składa się z generatora sinusa – klocek “sine” i wyjścia audio – klocek “dac”. 

image

Jeśli zaznaczysz któryś z klocków, z prawej strony okna pokaże się krótka dokumentacja z opisem jego działania, funkcji programu lub gdzie jest jego wyjście na płytce.
Z niej dowiadujesz się jak zmieniać częstotliwość generatora sine1 i gdzie będzie wyjście dźwięku z przetwornika dac1.

Naciskasz przycisk “Export” i masz gotowy fragment programu do wklejenia w Teensyduino.

#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
AudioSynthWaveformSine   sine1;          //xy=448,203
AudioOutputAnalog        dac1;           //xy=597,203
AudioConnection          patchCord1(sine1, dac1);
// GUItool: end automatically generated code
// GUItool: begin automatically generated code

W funkcjach setup i loop trzeba dopisać co twój program będzie robił z tymi klockami.

void setup() {
 AudioMemory(10);
 sine1.amplitude(1.0);
}

Funkcja “AudioMemory” ustala wielkość bufora audio. Im mniejsza wartość, tym mniej zajętej pamięci i mniejsze opóźnienia audio, ale większe obciążenie procesora i mniej czasu na twój program w funkcji “loop”.

Metoda “sine1.amplitude” ustala głośność generowanego sygnału. 1.0 oznacza maksymalną głośność.

void loop() {
 for (word freq=100; freq<1000; freq++)
 {
   sine1.frequency(freq);
   delay(2);
 }

 for (word freq=1000; freq>100; freq–)
 {
   sine1.frequency(freq);
   delay(2);
 }
}

Syrena działa tak, że płynnie obniża i podwyższa częstotliwość sygnału. Częstotliwość ustala się za pomocą metody “sine1.frequency”. Wstawiłem ją w dwie pętle “for”. Jedna podwyższa częstotliwość od 100 do 1000 Hz, a druga ją płynnie zmniejsza. W funkcji “delay” ustala się szybkość tych zmian.

Teraz wystarczy podłączyć wzmacniacz do wyjścia DAC w Teensy 3.1 przez kondensator 10 uF.

image

Jeśli chcesz sobie ułatwić podłączenie urządzeń audio, mam też świetne rozszerzenie Teensy Audio Board. Jest to płytka wyposażona w wejście i wyjście audio oraz czytnik kart SD. Dzięki specjalistycznemu układowi zapewnia lepszą jakość przetwarzanego dźwięku. Na karcie SD można przechowywać sample do odtwarzania przez Teensy.

Jeśli spodobał ci się ten projekt, kup Teensy 3.1 w sklepie Nettigo

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.