Instead of using the nail and file, you can clip the leads to two paperclips, washers, coins, aluminum pop-tabs, or loops of copper wire that you place inside the speaker cone. The cone jumps when contact is made, breaking the contact for a moment, then the metal bits fall against each other and the process starts all over—a mechanical oscillator and the beginning of what Bowers calls "The Victorian Synthesizer"
The Victorian Synthesizer
L'interferenza dei fili sul sensore ad ultrasuoni ha prodotto questa melodia impazzita di suoni, dovuta alla presenza dei fili e al mio corpo che si avvicinava e allontanava dal sensore;
I sensori ad ultrasuoni non forniscono direttamente la misura della distanza dell’oggetto più vicino, ma misurano il tempo impiegato da un segnale sonoro a raggiungere l’oggetto e ritornare al sensore. L’impulso ad ultrasuoni inviato dal HC-SR04 è di circa 40KHz il tempo viene misurato in microsecondi, la tensione di funzionamento è di 5V
Il sensore HC-SR04 dispone di 4 pin: Vcc (+5V), Trigger, Echo, GND. Si invia un impulso alto sul pin Trigger per almeno 10 microsecondi, a questo punto il sensore invierà il ping sonoro e aspetterà il ritorno delle onde riflesse, il sensore risponderà sul pin Echo con un impulso alto della durata corrispondente a quella di viaggio delle onde sonore, dopo 38 millisecondi si considera che non sia stato incontrato alcun ostacolo. Per sicurezza si aspettano in genere 50-60 millisec per far si che non vi siano interferenze con la misura successiva.
Progetto originale : link
Hardware
330Ω Resistor
470Ω Resistor
Solderless Breadboard
Ultrasonic Distance Sensor
3 x Male to Male Jumper Leads
4 x Male to Female Jumper Leads
Software
sudo apt update && sudo apt upgrade -y
sudo pip3 install python-osc
Python :
from gpiozero import DistanceSensor
from time import sleep
from pythonosc import osc_message_builder
from pythonosc import udp_client
sensor = DistanceSensor(echo=17, trigger=4)
sender = udp_client.SimpleUDPClient('127.0.0.1', 4559)
while True:
pitch = round(sensor.distance * 100 + 30)
sender.send_message('/play_this', pitch)
sleep(0.1)
------
Sonic Pi :
live_loop :listen do
message = sync "/play_this"
note = message[:args][0]
play note
end