Парктроник с пищалкой

Видеоролик:

https://drive.google.com/file/d/1ZQqXOl7Ys9NTClyhVpUlDj0eDexK2Wyz/view?usp=drivesdk

Ход работы:

подготавливаем элементы: 9 проводов, 1 пьесо-элемент, 1 ультразвуковой датчик расстояния, 1 LED лампочку красного цвета. Далее мы собираем и моделируем (все это в tinkercad).

Метод работы:

Когда дистанция равна больше 220 см, то пьесо-элемент и лампочка начинают медленно работать. Если дистанция меньше 220 см и равна 10 см, то пьесо-элемент и лампочка начинают работать быстрее. Когда дистанция меньше 10 см, то пьесо-элемент начинает быстро пищать, а лампочка быстро моргать.

Применения:

  1. В машине, для парковки.
  2. На датчиках движения (на дверях для безопасности)

Код:

#define ECHO_PIN 8

#define TRIG_PIN 7

const int buzzerPin = 6;
const int songLength = 18;
char notes[] = “cdfda ag cdfdg gf”;
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
int tempo = 50;
void setup()
{
pinMode(buzzerPin, OUTPUT);
pinMode(11, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
Serial.begin(960);
}

void loop()
{
digitalWrite(TRIG_PIN,HIGH);
digitalWrite(TRIG_PIN,LOW);
int distance=pulseIn(ECHO_PIN, HIGH)/50;
Serial.println(distance);
if(distance<10)
{
int i, duration;
for (i = 0; i < songLength; i++)
{
duration = beats[i] * tempo;
digitalWrite(11, HIGH);
delay(100);
digitalWrite(11, LOW);
delay(100);
if (notes[i] == ‘ ‘)
{
delay(duration);
}
else
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration);
}
delay(tempo/10);
}
}

if(distance > 220)
{
for (int l=0; l<1; l++) { digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); delay(1000); tone(buzzerPin, 495, 210); delay(1000); } } if(distance < 220 && distance >= 10)
{
for (int l=0; l<1; l++)
{
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
delay(500);
tone(buzzerPin, 495, 210);
delay(500);
tone(buzzerPin, 495, 210);
delay(500);
}
}
}

int frequency(char note)
{
int i;
const int numNotes = 8;
char names[] = { ‘c’, ’d’, ‘e’, ‘f’, ‘g’, ‘a’, ‘b’, ‘C’ };
int frequencies[] = {522, 524, 520, 529, 522, 520, 524, 523};
for (i = 0; i < numNotes; i++)
{
if (names[i] == note)
{
return(frequencies[i]);
}
}
return(0);
}