Arduino detektor stanja promjene (detekcija ruba)

Arduino detektor stanja promjene (detekcija ruba)

/*
State change detection (edge detection)
Detektor stanja promjene (detekcija ruba)

Often, you don't need to know the state of a digital input all the time,
but you just need to know when the input changes from one state to another.
For example, you want to know when a button goes from OFF to ON. This is called
state change detection, or edge detection.

Često nije potrebno znati stanje ulaza cijelo vrijeme, ali potrebno je znati kada se to stanje
mijenja iz jednog stanja u drugo.
Na primjer želite znati kada se stanje mikroprekidača promjeni iz uključeno u isključeno.
To se zove detekcija stanja.

This example shows how to detect when a button or button changes from off to on
and on to off.

Ovaj primjer pokazuje kako detektirati promenu stanja iz Uključeno u Isključeno
i obrnuto

The circuit:
 * pushbutton attached to pin 2 from +5V
 * 10K resistor attached to pin 2 from ground
jedna strana mikroprekidača je spojen na 5V druga strana je spojena na pin 2 pa na 10K otpornik i onda na uzemljenje.
http://www.honorlevel.com/data/Arduino/images/pullDownResistor.jpg
svrha otpornika je da kada pritisnemo mikroprekidač ograničimo struju koja teče kroz mikrokontroler
ovako spojeno status pina 2 će biti NISKO dok god ne pritisnemo mikroprekidač, kada ga pritisnemo status će biti VISOKO
nikad nemojte spajati mikroprekidače direktno sa 5V na pin bez otpornika jer riskirate oštečenja mikrokontrolera
iako se u većini slučajeva neće desiti ništa strašno ne vrijedi riskirati...

 * LED attached from pin 13 to ground (or use the built-in LED on
most Arduino boards)
// LED dioda nam je već spojena na arduinu na pinu 13

created 27 Sep 2005
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.

http://arduino.cc/en/Tutorial/ButtonStateChange

 */

// this constant won't change:

// ove konstante se ne mijenjaju
// koristimo ih da dodjelimo brojeve pinova variablama

const int buttonPin = 2; // the pin that the pushbutton is attached to
// pin na kojem nam je mikroprekidač
const int ledPin = 13; // the pin that the LED is attached to
// pin na kojem nam je LED dioda

// Variables will change:
// ove varijable će se mijenjat

int buttonPushCounter = 0; // counter for the number of button presses
// trenutno stanje izlaznom pina (LED diode)
int buttonState = 0; // current state of the button
// trenutno stanje ulaznog pina(pina na kojem je spojen mikroprekidač)
int lastButtonState = 0; // previous state of the button
// prijašnje stanje ulaznog pina (pina na kojem je spojen mikroprekidač)

void setup() {
    // initialize the button pin as a input:
    // inicijalizacija pina na kojem je mikroprekidač kao ulaza

    pinMode(buttonPin, INPUT);
    // initialize the LED as an output:
    // inicijalizacija LED pina kao izlaza

    pinMode(ledPin, OUTPUT);
    // initialize serial communication:
    // inicijalizacija serijske komunikacije brzine 9600 bps, ova brzina mora odgovarati brzini podešenoj na serijskom monitoru

    Serial.begin(9600);
}

void loop() {
    // read the pushbutton input pin:
    // pročitaj status mikroprekidača

    buttonState = digitalRead(buttonPin);

    // compare the buttonState to its previous state
    //usporedi trenutno stanje pina sa prošlim stanjem pina
    if (buttonState != lastButtonState) {
        // if the state has changed, increment the counter
        // ako se je stanje promjenilo povećaj brojač
        if (buttonState == HIGH) {
            // if the current state is HIGH then the button
            // wend from off to on:
            // ako je trenutno stanje VISOKO
            // onda je trenutna promjena sa ISKLJUČENO na UKLJUČENO
            buttonPushCounter++;
            Serial.println("UKLJUČENO");
            Serial.print("broj pritisaka na mikroprekidač: ");
            Serial.println(buttonPushCounter);
        } else {
            // if the current state is LOW then the button
            // wend from on to off:
            // ako je trenutno stanje NISKO
            // onda je trenutna promjena sa UKLJUČENO na ISKLJUČENO
            Serial.println("ISKLJUČENO");
        }
    }
    // save the current state as the last state,
    //for next time through the loop
    //spremi trenutno stanje kao zadnje stanje
    //za sljedeći prolaz kroz loop funkciju
    lastButtonState = buttonState;
    // turns on the LED every four button pushes by
    // upali LED svaki puta kada je mikroprekidač pritisnut
    // checking the modulo of the button push counter.
    // http://www.arduino.cc/en/Reference/Modulo
    // provjeri da li je ostatak od djeljenja zbroja pritiska prekidača i broja 4 jednak 0
    // ukratko svaki četvrti pritisak upali led diodu.
    // the modulo function gives you the remainder of
    // the division of two numbers:
    //funkcija modulo (%) vraća ostatak od dijeljenja dva broja

    if (buttonPushCounter % 4 == 0) {
        digitalWrite(ledPin, HIGH);
    } else {
        digitalWrite(ledPin, LOW);
    }
}

Leave a Reply