Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int buttonPin = 2; // пин на бутона
- volatile int counter = 0; // брояч за кликания на бутона (трябва да се зададе да е volatile int)
- int lastCounter = -1; // брояч за старо състояние, който ще служи за проверка и принтване при нов клик
- void setup() {
- Serial.begin(9600);
- // софтуерно задаване на pullup резистор за да не трябва да се слага допълнително резистор в схемата
- pinMode(buttonPin, INPUT_PULLUP);
- // "закачане" на прекъсване, то приема 3 параметъра
- // 1ви параметър digitalPinToInterrupt() указва на кой пин ще слуша за сигнал за прекъсване на програмата
- // 2ри параметър е коя функция да изпълни като прекъсне програмата
- // 3ти параметър е кое състояние на пина да следи за да прекъсне програмата (в случая с натискането на бутона е FALLING)
- attachInterrupt(digitalPinToInterrupt(buttonPin), incrementCounter, FALLING);
- }
- void loop() {
- // когато бъде натинат бутона и се увеличи броята, във void loop ще се извърши проверка
- // за това дали брояча е по-голям от брояча на старото състояние
- // ако е по-голям -> изписва колко е брояча (колко пъти е кликан бутона) задава стойност на стария брояч
- // да е равна на стойността на реалния брояч с което чака нов ъпдейт
- if (counter != lastCounter) {
- lastCounter = counter;
- Serial.print("Counter = ");
- Serial.println(counter);
- }
- }
- // функцията, която се изпълнява при прекъсването
- // увеличава стойността на брояча с едно
- void incrementCounter() {
- counter++;
- }
Advertisement
Add Comment
Please, Sign In to add comment