Не работает парктроник на ардуино

Проблема в том, что собранный мной парктроник на ардуино не работает.

Если прислушаться, то слышны высокочастотные звуки. Парктронник собирал из датчика расстояния "HC-SR04", 7 светодиодов и зуммера (на анод светодиодов подавал ток сам ардуино со своих цифровых пинов через резистор на 220 ом).

Плата: Arduino Uno.

Код:

#include <Ultrasonic.h>

Ultrasonic ultrasonic(11, 12);
int distance;

void setup()
{

  pinMode(11, OUTPUT);
  pinMode(12, INPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(0, OUTPUT);

}


void loop()
{
    distance = ultrasonic.read();

    if (distance < 100) {
      digitalWrite(8,HIGH);
      digitalWrite(7,LOW);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
      digitalWrite(3,LOW);
      digitalWrite(2,LOW);

    } else if (distance < 100 && distance > 85) {
      digitalWrite(8,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
      digitalWrite(3,LOW);
      digitalWrite(2,LOW);
    } else if (distance < 85 && distance > 70) {
      digitalWrite(8,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
      digitalWrite(3,LOW);
      digitalWrite(2,LOW);
    } else if (distance < 70 && distance > 55) {
      digitalWrite(8,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(5,HIGH);
      digitalWrite(4,LOW);
      digitalWrite(3,LOW);
      digitalWrite(2,LOW);
    } else if (distance < 55 && distance > 40) {
      digitalWrite(8,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(5,HIGH);
      digitalWrite(4,HIGH);
      digitalWrite(3,LOW);
      digitalWrite(2,LOW);
    } else if (distance < 40 && distance > 25) {
      digitalWrite(8,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(5,HIGH);
      digitalWrite(4,HIGH);
      digitalWrite(3,HIGH);
      digitalWrite(2,LOW);
    } else if (distance < 25 && distance > 0) {
      digitalWrite(8,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(8,HIGH);
      tone(0,700,500);
    }

}

Как видно, использовал библиотеку "Ultrasonic.h". Пробовал и без неё, но результат не отличался.


Ответы (1 шт):

Автор решения: JVic
void light(int pin, int expectedDistance, int actualDistance) {
  if (actualDistance <= expectedDistance) {
    digitalWrite(pin, HIGH);
  } else {
    digitalWrite(pin, LOW);
  }
}

void loop()
{
    distance = ultrasonic.read();
    light(8, 115, distance);
    light(7, 100, distance);
    light(6, 85, distance);
    light(5, 70, distance);
    light(4, 55, distance);
    light(3, 40, distance);
    light(2, 25, distance);

    if (distance < 25) {
      tone(0,700,500);
    }
    delay(200);
}
→ Ссылка