Advertisement
mof1re

Untitled

Jan 13th, 2021
746
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.51 KB | None | 0 0
  1. const int buttonPin = 2; // номер порта нашей кнопки
  2. const int ledPin =    13; // номер порта светодиода
  3. const int ledPin1 =   12; // номер порта светодиода
  4. const int ledPin2 = 11;
  5. const int sensorPin = 3;
  6. float sensorDelay;
  7. int carsCounter;
  8. float waitMessageTimer;
  9.  
  10. bool ledState;
  11. float ledTimer;
  12. int blinkCounter;
  13. bool buttDelay;
  14.  
  15. #define PIN_HCSR501 2
  16. // флаг сработки
  17. bool buttonState;
  18. //boolean flagHCSR501=false;
  19. // контакт  подключения динамика
  20.  
  21. // частота звукового сигнала
  22. void setup() {
  23.     // устанавливаем порт светодиода на выход
  24.     pinMode(ledPin, OUTPUT);
  25.     pinMode(ledPin1, OUTPUT);
  26.     pinMode(sensorPin, INPUT);
  27.     // устанавливаем пин кнопки на вход с сопротивлением от дребезга
  28.     pinMode(buttonPin, INPUT_PULLUP);
  29.     // инициализация последовательного порта
  30.   Serial.begin(9600);
  31.   // запуск обработки прерывания int0
  32.   //attachInterrupt(0, intHCSR501,RISING);
  33. }
  34. void loop() {
  35.  
  36.  
  37.     // Оповещение о ожидании:
  38.   if (millis() - waitMessageTimer > 10000) {
  39.     waitMessageTimer = millis();
  40.     Serial.println("Ожидаю нажатия кнопки...");
  41.     }
  42.  
  43.    
  44.     // читаем состояние кнопки, с задержкой в 0.1с, при условии 0 - заменяем на 1 и выполняем последующую логику.
  45.         if (millis() - buttDelay > 100) {
  46.     if (digitalRead(buttonPin) and buttonState == 0) {
  47.       buttonState = 1;
  48.       } else {
  49.         Serial.println("Не жмекай кнопку, еще не перешел дорогу!");
  50.     }
  51.     }
  52.  
  53.    
  54.     // делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение - включаем светодиод, иначе - выключаем
  55.     if (buttonState and (blinkCounter < 16)) {
  56.        
  57.             if (millis() - ledTimer > 500) {
  58.             digitalWrite(ledPin, ledState);
  59.             digitalWrite(ledPin1, ledState);
  60.             ledState = !ledState;
  61.             ledTimer = millis();
  62.             blinkCounter++;
  63.             }
  64.  
  65.    
  66.     } else {
  67.         // выключаем светодиод
  68.         digitalWrite(ledPin, HIGH);
  69.         digitalWrite(ledPin1, HIGH);
  70.         buttonState = 0;
  71.         // Обнуляем счетчики.
  72.         blinkCounter = 0;
  73.         carsCounter = 0;
  74.     }
  75.    // Логика датчика движения, раз в 3 секунды после срабатывания:
  76.    if ((digitalRead(sensorPin)) and (millis() - sensorDelay > 3000)) {
  77.         carsCounter++;
  78.         sensorDelay = millis();
  79.         Serial.print("Словили машину номер: ");
  80.         Serial.println(carsCounter);
  81.     }
  82.  
  83.  
  84.  
  85.    
  86. }
  87.  
  88. //if (flagHCSR501 == true) {
  89.             //for (int i = 0; i<15; i++)
  90.              // {
  91.             //digitalWrite(ledPin2, LOW);
  92.            // delay(100);
  93.            // digitalWrite(ledPin2, HIGH);
  94.             //delay(100);
  95.              //  }
  96.            // delay(5000);
  97.           //  flagHCSR501 = false;
  98.  // }
  99.  
  100.  
  101.  
  102. // обработка прерывания
  103. //void intHCSR501() {
  104. //   // установка флага сработки датчика
  105. //   flagHCSR501 = true;
  106. //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement