Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int buttonPin = 2; // номер порта нашей кнопки
- const int ledPin = 13; // номер порта светодиода
- const int ledPin1 = 12; // номер порта светодиода
- const int ledPin2 = 11;
- const int sensorPin = 3;
- float sensorDelay;
- int carsCounter;
- float waitMessageTimer;
- bool ledState;
- float ledTimer;
- int blinkCounter;
- bool buttDelay;
- #define PIN_HCSR501 2
- // флаг сработки
- bool buttonState;
- //boolean flagHCSR501=false;
- // контакт подключения динамика
- // частота звукового сигнала
- void setup() {
- // устанавливаем порт светодиода на выход
- pinMode(ledPin, OUTPUT);
- pinMode(ledPin1, OUTPUT);
- pinMode(sensorPin, INPUT);
- // устанавливаем пин кнопки на вход с сопротивлением от дребезга
- pinMode(buttonPin, INPUT_PULLUP);
- // инициализация последовательного порта
- Serial.begin(9600);
- // запуск обработки прерывания int0
- //attachInterrupt(0, intHCSR501,RISING);
- }
- void loop() {
- // Оповещение о ожидании:
- if (millis() - waitMessageTimer > 10000) {
- waitMessageTimer = millis();
- Serial.println("Ожидаю нажатия кнопки...");
- }
- // читаем состояние кнопки, с задержкой в 0.1с, при условии 0 - заменяем на 1 и выполняем последующую логику.
- if (millis() - buttDelay > 100) {
- if (digitalRead(buttonPin) and buttonState == 0) {
- buttonState = 1;
- } else {
- Serial.println("Не жмекай кнопку, еще не перешел дорогу!");
- }
- }
- // делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение - включаем светодиод, иначе - выключаем
- if (buttonState and (blinkCounter < 16)) {
- if (millis() - ledTimer > 500) {
- digitalWrite(ledPin, ledState);
- digitalWrite(ledPin1, ledState);
- ledState = !ledState;
- ledTimer = millis();
- blinkCounter++;
- }
- } else {
- // выключаем светодиод
- digitalWrite(ledPin, HIGH);
- digitalWrite(ledPin1, HIGH);
- buttonState = 0;
- // Обнуляем счетчики.
- blinkCounter = 0;
- carsCounter = 0;
- }
- // Логика датчика движения, раз в 3 секунды после срабатывания:
- if ((digitalRead(sensorPin)) and (millis() - sensorDelay > 3000)) {
- carsCounter++;
- sensorDelay = millis();
- Serial.print("Словили машину номер: ");
- Serial.println(carsCounter);
- }
- }
- //if (flagHCSR501 == true) {
- //for (int i = 0; i<15; i++)
- // {
- //digitalWrite(ledPin2, LOW);
- // delay(100);
- // digitalWrite(ledPin2, HIGH);
- //delay(100);
- // }
- // delay(5000);
- // flagHCSR501 = false;
- // }
- // обработка прерывания
- //void intHCSR501() {
- // // установка флага сработки датчика
- // flagHCSR501 = true;
- //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement