Загрузка данных


const int trigPin = 9;
const int echoPin = 10;
const int ledPin  = 6;
const int buzzPin = 5;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(buzzPin, OUTPUT);
  Serial.begin(9600);
}

long readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long t = pulseIn(echoPin, HIGH, 30000);
  if (t == 0) return 999;
  return t * 0.034 / 2;
}

void loop() {
  long d = readDistance();
  Serial.println(d);

  if (d < 50) {
    int pause = map(d, 2, 50, 30, 500);
    pause = constrain(pause, 30, 500);

    digitalWrite(ledPin, HIGH);
    tone(buzzPin, 2000);
    delay(50);
    digitalWrite(ledPin, LOW);
    noTone(buzzPin);
    delay(pause);
  } else {
    digitalWrite(ledPin, LOW);
    noTone(buzzPin);
    delay(100);
  }
}