Stwórz Pocket Size z ESP32: 5 kroków (ze zdjęciami)

Stwórz Pocket Size z ESP32: 5 kroków (ze zdjęciami)

Spisu treści:

Anonim

Theremin to te unikalne instrumenty, które sprawiają, że te obce utwory tematyczne lub efekty dźwiękowe. Być może słyszałeś o tym w Star Trek, Teorii Wielkiego Wybuchu, a nawet w nawiedzonym domu. Wytworzyły wyjątkowy dźwięk z efektów elektromagnetycznych między przewodami.

Tutaj powielimy podobny dźwięk cyfrowo za pomocą brzęczyka kontrolowanego przez modulację szerokości impulsu i rezystora zależnego od światła (LDR) w celu wprowadzenia wartości odczytu, gdy dłoń porusza się po nim.

Kieszonkowe dzieci:

Krok 1: BoM

* ESP32

* Rezystor zależny od światła (LDR)

* Buzzer

* Przewody zworek

* Deska do krojenia chleba

Krok 2: Lutowanie

Przylutujemy dzielnik napięcia do LDR, aby uprościć okablowanie.

* Weź rezystor 10 kΩ i przylutuj go do jednego ze styków LDR.

* Następnie weź dwa różne kolorowe przewody i przylutuj je do każdego bolca LDR.

To jest to! Teraz masz dzielnik napięcia!

Krok 3: Okablowanie

Podczas podłączania LDR i brzęczyka do ESP32 postępuj zgodnie z poniższą tabelą:

I / O Pin # ESP32 Pin #
Brzęczyk* 1 D4
Brzęczyk* 2 GND
LDR Rezystor D5
LDR Szary 3,3V
LDR Czerwony GND

* Zamówienie jest dowolne

Krok 4: Kod

int photopin = 5; // Pin, do którego podłączony jest fotorezystor

int photValue; // Odczyt analogowy z fotorezystora

int buzzerPin = 4; // Podłącz Buzzer do Pin 4

długi buzzerFreq; // Częstotliwość buczenia brzęczyka

// Możesz eksperymentować z tymi wartościami: long buzzMAX = 2500; // Maksymalna częstotliwość brzęczyka

długie zdjęcieMAX = 1023; // Maksymalna wartość fotorezystora

void setup () {pinMode (buzzerPin, OUTPUT); // ustaw pin na wyjście brzęczyka

}

void loop () {// odczyt wartości potencjometru photValue = analogRead (photopin); // Wartości 0-1023

// normalizuje odczyty fotorezystora do brzęczyka i fotorezystora buzzerFreq = (photValue * buzzMAX) / photoMAX;

buzz (buzzerPin, buzzerFreq, 10);

}

void buzz (int targetPin, długa częstotliwość, długa długość) {

long delayValue = 1000000 / frequency / 2;

long numCycles = częstotliwość * długość / 1000;

for (long i = 0; i <numCycles; i ++) {

digitalWrite (targetPin, HIGH);

delayMicroseconds (delayValue);

digitalWrite (targetPin, LOW);

delayMicroseconds (delayValue);

}

}

Krok 5: Ciesz się!

Jest łatwy w użyciu, ale opanowanie i odtwarzanie dobrej muzyki zajmuje całe życie. Przesuń ręce nad LDR, aby zmienić ton.

Ciesz się swoim wielkościowym stosem!