Не работает парктроник на ардуино
Проблема в том, что собранный мной парктроник на ардуино не работает.
Если прислушаться, то слышны высокочастотные звуки. Парктронник собирал из датчика расстояния "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);
}