Sunetele vor fi redate de difuzoare, fiecare senzor de distanta va avea difuzorul lui. La pozitionarea unui deget in fata a cel putin unuia din senzori, difuzorul corespunzator lui va reda sunet. Pentru fiecare senzor va fi o distanta prestabilita impartita in bucati, in functie de pozitionarea degetului va fi redat un sunet la o anumita frecventa. Distantele predefinite vor avea cate o frecventa de redare pentru difuzor. La pozitionarea degetului, senzorul va trimite distanta receptionata la Arduino UNO, acesta va decide in ce portiune din lungime se afla apoi va atentiona difuzorul alocat ce frecventa pentru suntet trebuie sa redea. Sunetul va fi redat cat timp degetul se alfa in limitele regiunii de lungime alocate frecventei respective.
Piese necesare:
Schema:
Circuit:
long SonarSensor(int trigPin,int echoPin) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH); long distance = (duration/2) / 29.1; return distance; }
if (abs(firstDistance1 - distance1) >= 2 && timer1.read() > timer) { firstDistance1 = distance1; } else { distance1 = firstDistance1; }
if (distance1 >= 0 && distance1 < 8 && timer1.read() > timer) { tone1.play(NOTE_C4); timer1.stop(); timer1.start(); } else if (distance1 >= 8 && distance1 < 16 && timer1.read() > timer) { tone1.play(NOTE_D4); timer1.stop(); timer1.start(); } else if (distance1 >= 16 && distance1 < 24 && timer1.read() > timer) { tone1.play(NOTE_E4); timer1.stop(); timer1.start(); } else if (distance1 >= 24 && distance1 < 32 && timer1.read() > timer) { tone1.play(NOTE_F4); timer1.stop(); timer1.start(); } else if (distance1 >= 32 && distance1 < 40 && timer1.read() > timer) { tone1.play(NOTE_G4); timer1.stop(); timer1.start(); } else if (timer1.read() > timer){ tone1.stop(); }