kalin729

sem 3 task 1

Oct 15th, 2025
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. const int buttonPin = 2;  // пин на бутона
  2. volatile int counter = 0; // брояч за кликания на бутона (трябва да се зададе да е volatile int)
  3. int lastCounter = -1;     // брояч за старо състояние, който ще служи за проверка и принтване при нов клик
  4.  
  5. void setup() {
  6.   Serial.begin(9600);
  7.   // софтуерно задаване на pullup резистор за да не трябва да се слага допълнително резистор в схемата
  8.   pinMode(buttonPin, INPUT_PULLUP);  
  9.  
  10.   // "закачане" на прекъсване, то приема 3 параметъра
  11.   // 1ви параметър digitalPinToInterrupt() указва на кой пин ще слуша за сигнал за прекъсване на програмата
  12.   // 2ри параметър е коя функция да изпълни като прекъсне програмата
  13.   // 3ти параметър е кое състояние на пина да следи за да прекъсне програмата (в случая с натискането на бутона е FALLING)
  14.   attachInterrupt(digitalPinToInterrupt(buttonPin), incrementCounter, FALLING);
  15. }
  16.  
  17. void loop() {
  18.   // когато бъде натинат бутона и се увеличи броята, във void loop ще се извърши проверка
  19.   // за това дали брояча е по-голям от брояча на старото състояние
  20.   // ако е по-голям -> изписва колко е брояча (колко пъти е кликан бутона) задава стойност на стария брояч
  21.   // да е равна на стойността на реалния брояч с което чака нов ъпдейт
  22.   if (counter != lastCounter) {
  23.     lastCounter = counter;
  24.     Serial.print("Counter = ");
  25.     Serial.println(counter);
  26.   }
  27. }
  28.  
  29. // функцията, която се изпълнява при прекъсването
  30. // увеличава стойността на брояча с едно
  31. void incrementCounter() {
  32.   counter++;  
  33. }
  34.  
Advertisement
Add Comment
Please, Sign In to add comment