#define data_pin 7
#define latch_pin 8
#define clock_pin 9
#define PIN_TRIG 12
#define PIN_ECHO 11
long duration, cm;
int digits [10] = {252,96,218,242,102,182,190,224,254,246};
void setup() {
pinMode(data_pin, OUTPUT);
pinMode(latch_pin, OUTPUT);
pinMode(clock_pin, OUTPUT);
digitalWrite(latch_pin, LOW);
Serial.begin (9600);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(10, INPUT_PULLUP);
}
void loop() {
if (digitalRead(10) == 0) {
shiftOut(data_pin,clock_pin, LSBFIRST, digits[cm % 10]); // 3
shiftOut(data_pin,clock_pin, LSBFIRST, digits[int(cm / 10 % 10)]); // 2
shiftOut(data_pin,clock_pin, LSBFIRST, digits[int(cm / 100)]+1); // 1
digitalWrite(latch_pin, HIGH);
digitalWrite(latch_pin, LOW);
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
duration = pulseIn(PIN_ECHO, HIGH);
cm = (duration / 2) / 29.1;
Serial.print("Расстояние до объекта: ");
Serial.print(cm);
Serial.println(" см.");
delay(1000);
}
}