Table of Contents

Pian pe distante

Introducere

Descriere generală

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.

Hardware Design

Piese necesare:

Schema:

Circuit:

Software Design

Descrierea codului aplicaţiei:

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();
  }

Rezultate Obţinute

Download

Bibliografie/Resurse