![Lav en Pocket Size Theremin med ESP32: 5 trin (med billeder) Lav en Pocket Size Theremin med ESP32: 5 trin (med billeder)](https://img.gwsigeps.com/img/img/blank.jpg)
Indholdsfortegnelse:
Theremin er de unikke instrumenter, der bruges til at gøre disse fremmede vise temasange eller lydeffekt. Du har måske også hørt det i Star Trek, Big Bang Theory eller endda et hjemsøgt hus. De producerede en unik lyd fra de elektromagnetiske effekter mellem ledninger.
Her duplikerer vi en lignende lyd digitalt ved hjælp af en summer, der styres af Pulse Width Modulations og en Light Dependent Resistor (LDR) til indlæsning af læseværdier, når hånden bevæger sig over den.
forsyninger:
Trin 1: BoM
* ESP32
* Light Dependent Resistor (LDR)
* Buzzer
* Jumper Wires
* Brødbræt
Trin 2: Lodning
Vi vil lodde en spændingsdeler på LDR'en for at gøre ledningerne enklere.
* Tag en 10kΩ modstand og lodd den til en af stifterne på LDR.
* Tag derefter to forskellige farvede ledninger og lodd den til hver stift i LDR.
Det er det! Nu har du en spændingsdeler!
Trin 3: Ledninger
Følg nedenstående tabel, når du bruger LDR og Buzzer til ESP32:
I / O | Pin # | ESP32 Pin # |
---|---|---|
Summer* | 1 | D4 |
Summer* | 2 | GND |
LDR | Modstand | D5 |
LDR | Grå | 3.3V |
LDR | Rød | GND |
* Ordren er vilkårlig
Trin 4: Kode
int fotopin = 5; // Pin, hvor fotomodstanden er tilsluttet
int photValue; // Den analoge læsning fra fotoresistoren
int buzzerPin = 4; // Tilslut summer til pin 4
lang buzzerFreq; // Frekvensen til at buzz summeren
// Du kan eksperimentere med disse værdier: lang buzzMAX = 2500; // Maksimal frekvens for summeren
lang photoMAX = 1023; // Maksimal værdi for fotoresistoren
void setup () {pinMode (buzzerPin, OUTPUT); // Indstil en pin til summer output
}
void loop () {// læs værdierne af potentiometer photValue = analogRead (photopin); // Værdier 0-1023
// normalisere aflæsningerne af en fotoresistor til den pågældende summer og fotoresistor buzzerFreq = (photValue * buzzMAX) / photoMAX;
buzz (buzzerPin, buzzerFreq, 10);
}
void buzz (int targetPin, lang frekvens, lang længde) {
lang delayValue = 1000000 / frekvens / 2;
lange numCycles = frekvens * længde / 1000;
for (lang i = 0; i <numCycles; i ++) {
digitalWrite (targetPin, HIGH);
delayMicroseconds (delayValue);
digitalWrite (targetPin, LOW);
delayMicroseconds (delayValue);
}
Trin 5: Nyd!
Det er nemt at bruge, men tager en levetid at mestre og spille god musik. Flyt dine hænder over LDR'en for at ændre tonen.
Nyd din lommeformede theremin!