Изначально этот код был с использованием дальномера LV-EZ0, но мне нужно, чтобы можно было использовать HC-SR04. Смысл: при приближении к дальномеру светодиоды начинают загораться. const int LED1 = -11;
const int LED2 = -10;
const int LED3 = -9;
const int LED4 = -6;
const int PIN_TRIG = 13;
const int PIN_ECHO = 12;
boolean state = 0;
int lightSensor = 0;
int brightness = 0;
int brightnessWant = 0;
int fadeAmount = 5;
int distSensor = 0;
int i;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (brightness == 0)
lightSensor = analogRead(1);
if (lightSensor > 400) {
digitalWrite(PIN_TRIG, LOW);
state = 0;
}
else if (lightSensor <= 400) {
digitalWrite(PIN_TRIG, HIGH);
state = 1;
}
if (state == 1) {
for (i=0; i<8; i++) {
distSensor += analogRead(0);
delay(5);
}
brightnessWant = map(distSensor, 15, 125, 0, 255);
if (brightnessWant < 0)
brightnessWant = 0;
if (brightnessWant > 255)
brightnessWant = 255;
brightnessWant = 255 - brightnessWant;
if (brightness < brightnessWant) {
brightness = brightness + fadeAmount;
if (brightness > 255)
brightness = 255;
}
else if (brightness > brightnessWant) {
brightness = brightness - fadeAmount;
if (brightness < 0)
brightness = 0;
}
else
brightness = brightnessWant;
}
else if (state == 0) {
brightness = 0;
}
analogWrite(LED1, brightness);
analogWrite(LED2, brightness);
analogWrite(LED3, brightness);
analogWrite(LED4, brightness);
Serial.print("Sensor = ");
Serial.println(distSensor);
}