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


#define TRIG_PIN 3
#define ECHO_PIN 2
#define LED_PIN 4

void setup() {
  Serial.begin(9600);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // Отправляем ультразвуковой импульс
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);

  digitalWrite(TRIG_PIN, LOW);

  // Измеряем время прохождения сигнала
  long duration = pulseIn(ECHO_PIN, HIGH);

  // Переводим время в сантиметры
  float distance = duration / 58.0;

  Serial.print("Расстояние = ");
  Serial.print(distance);
  Serial.println(" см");

  // Если расстояние меньше 4 см
  if (distance < 4.0) {

    // 0 см -> 100% яркости
    // 4 см -> 0% яркости
    int brightness = map(distance * 10, 0, 40, 255, 0);

    // Ограничиваем значение от 0 до 255
    brightness = constrain(brightness, 0, 255);

    analogWrite(LED_PIN, brightness);
  }
  else {
    // При расстоянии 4 см и больше светодиод выключен
    analogWrite(LED_PIN, 0);
  }

  delay(50);
}