#include <SevSeg.h>
#define LED 10
#define PIN_ECHO 11
#define PIN_TRIG 12
SevSeg sevseg;
int counter = 0;
bool passed = false;
long get_dist() {
digitalWrite(PIN_TRIG, LOW); // короткий импульс
delayMicroseconds(5); // длительностью 2-5 микросекунд.
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10); // ждем около 10 микросекунд.
digitalWrite(PIN_TRIG, LOW); // сигналы с частотой 40 КГц.
long duration = pulseIn(PIN_ECHO, HIGH); // задержка
long dist = duration / 58.2; // время в расстояние
return dist; // возвращаем измеренное значение
}
void setup() {
Serial.begin(9600);
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
//Определяем вводы и выводы
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}
void loop() {
while (get_dist() < 25) {
passed = true;
digitalWrite(LED, HIGH);
}
if (passed) {
counter = (counter + 1) % 10;
digitalWrite(LED, LOW);
passed = false;
}
sevseg.setNumber(counter);
sevseg.refreshDisplay();
delay(200);
}