From 75dc3fbb35b98abec27f1c24c974ab10678a7954 Mon Sep 17 00:00:00 2001 From: MaD3V Date: Sun, 24 Dec 2023 12:56:37 +0100 Subject: [PATCH] Dodajem source code fajlove. --- blink_without_delay/blink_without_delay.ino | 19 ++++++ led_blink/led_blink.ino | 13 ++++ led_with_input/led_with_input.ino | 26 ++++++++ .../led_with_input_without_delay.ino | 64 +++++++++++++++++++ pushbutton/pushbutton.ino | 15 +++++ .../pushbutton_with_debounce.ino | 31 +++++++++ 6 files changed, 168 insertions(+) create mode 100644 blink_without_delay/blink_without_delay.ino create mode 100644 led_blink/led_blink.ino create mode 100644 led_with_input/led_with_input.ino create mode 100644 led_with_input_without_delay/led_with_input_without_delay.ino create mode 100644 pushbutton/pushbutton.ino create mode 100644 pushbutton_with_debounce/pushbutton_with_debounce.ino diff --git a/blink_without_delay/blink_without_delay.ino b/blink_without_delay/blink_without_delay.ino new file mode 100644 index 0000000..5d79784 --- /dev/null +++ b/blink_without_delay/blink_without_delay.ino @@ -0,0 +1,19 @@ + +int led_pin = 13; // Pin na koji je povezana dioda +const long interval = 100; // Interval koji ce da pauzira blinkanje diode +unsigned long previous_millis = 0; // Referentno vreme +int led_state = LOW; // Stanje koje cemo pisati na izlazni pin +unsigned int current_millis; // Trenutno vreme + +void setup() { + pinMode(led_pin, OUTPUT); // Postavlja diodu kao izlaz +} + +void loop() { + current_millis = millis(); // Pogleda koliko je trenutno vreme (od ukljucivanja mikrokontrolera) + if (current_millis - previous_millis >= interval){ // Ako je od "pocetnog" do sadasnjeg trenutka proslo milisekundi + previous_millis = current_millis; // "Pocetno" vreme postaje trenutno vreme + led_state = !led_state; // promeni vrednost stanja diode + digitalWrite(led_pin, led_state); // i "upisi" je na pin + } +} diff --git a/led_blink/led_blink.ino b/led_blink/led_blink.ino new file mode 100644 index 0000000..57c7101 --- /dev/null +++ b/led_blink/led_blink.ino @@ -0,0 +1,13 @@ + +int led_pin = 13; // Pin na koji je povezana dioda + +void setup() { + pinMode(led_pin, OUTPUT); // Postavlja pin 13 kao izlazni pin +} + +void loop() { + digitalWrite(led_pin, HIGH); // Pise logicku jedinicu na led_pin + delay(1000); // Pauza u milisekundama + digitalWrite(led_pin, LOW); // Pise logicku nulu na led_pin + delay(1000); // Pauza u milisekundama +} diff --git a/led_with_input/led_with_input.ino b/led_with_input/led_with_input.ino new file mode 100644 index 0000000..313e623 --- /dev/null +++ b/led_with_input/led_with_input.ino @@ -0,0 +1,26 @@ + +int led_pin = 13; // Dioda je povezana na pin 13 +int button = 2; // Taster je povezan na pin 2 +int interval1 = 200; // Interval brzog blinkanja +int interval2 = 2000; // Interval sporog blinkanja + +void setup() { + pinMode(led_pin, OUTPUT); // Inicijalizuje pin 13 kao izlaz + pinMode(button, INPUT); // Inicijalizuje pin 2 kao ulaz + +// Serial.begin(9600); // Inicijalizuje serijsku konekciju na brzini od 9600 bit/s +} + +void loop() { + digitalWrite(led_pin, HIGH); // Blinkanje diode + delay(interval1); + digitalWrite(led_pin, LOW); + delay(interval1); + if (digitalRead(button) == HIGH){ // Ako je pritisnuto dugme, zameni vrednosti +// Serial.println(digitalRead(button)); + int tmp = interval1; // intervala blinkanja + interval1 = interval2; + interval2 = tmp; + } + +} diff --git a/led_with_input_without_delay/led_with_input_without_delay.ino b/led_with_input_without_delay/led_with_input_without_delay.ino new file mode 100644 index 0000000..38c0685 --- /dev/null +++ b/led_with_input_without_delay/led_with_input_without_delay.ino @@ -0,0 +1,64 @@ + +int led_pin = 13; // Dioda je povezana na pin 13 +int button = 2; // Taster je povezan na pin 2 + +int interval1 = 200; // Interval brzog blinkanja +int interval2 = 2000; // Interval sporog blinkanja +int interval3 = 1000; +int interval[] = {interval1, interval2, interval3}; // Niz iz kog cemo birati rezim blinkanja +int i = 0; // Brojac kojim pratimo u kom smo rezimu blinkanja + +int led_state = LOW; // Prati stanje diode +int last_button_state = LOW; // Prethodno stanje tastera +int button_state = LOW; // Trenutno stanje tastera + +unsigned long previous_millis = 0; +unsigned long last_button_millis = 0; +unsigned long debounce_inteval = 50; // Interval za ignorisanje dogadjaja na tasteru + +void setup() { + pinMode(led_pin, OUTPUT); // Inicijalizuje pin 13 kao izlaz + pinMode(button, INPUT); // Inicijalizuje pin 2 kao ulaz + +// Serial.begin(9600); // Inicijalizuje serijsku konekciju na brzini od 9600 bit/s +} + +void blink_LED(int interval); + +void loop() { + int reading = digitalRead(button); // Gleda u kom je stanju taster + + if (reading != last_button_state){ // Ako se stanje tastera promenilo + last_button_millis = millis(); // Pocni da meris vreme + } + if (millis() - last_button_millis >= debounce_inteval){ // Ako je proslo vise od "debounce_interval" milisekundi + if (reading != button_state){ // i ocitavanje je razlicito od ocekivanog stanja tastera + button_state = reading; // znaci da je ocitano stanje koje zelimo na tasteru, a ne neki sum + if (button_state == HIGH){ // Ako je to stanje HIGH, odnosno pritisnut taster + i++; // Biramo sledeci recim blinkanja + if (i > (sizeof(interval) / sizeof(int) - 1)){ // Kada dodje do zadnjeg rezima, pocne ispocetka + i = 0; + } + } + } + } + + last_button_state = reading; // Vazno je podesiti da je "prethodno stanje" tastera za sledecu iteraciju ono sadasnje u ovoj iteraciji + blink_LED(interval[i]); // Poziva funkciju blinkanja sa zeljenim intervalom +} + +void blink_LED(int interval){ // Funckija zaduzena za blinkanje diode bez delay() funkcije + if (millis() - previous_millis >= interval){ + previous_millis = millis(); + led_state = !led_state; + /* + if (led_state == LOW){ + led_state = HIGH; + } + else{ + led_state = LOW; + } + */ + digitalWrite(led_pin, led_state); + } +} diff --git a/pushbutton/pushbutton.ino b/pushbutton/pushbutton.ino new file mode 100644 index 0000000..802244f --- /dev/null +++ b/pushbutton/pushbutton.ino @@ -0,0 +1,15 @@ + +int button = 2; // Taster je povezan na pin 2 +int button_state; + +void setup() { + pinMode(button, INPUT); // Inicijalizuje pin 2 kao ulaz + + Serial.begin(9600); // Inicijalizuje serijsku komunikaciju na brzini od 9600 bit/s +} + +void loop() { + button_state = digitalRead(button); // Ocitava stanje tastera + Serial.println(button_state); // Stampa stanje tastera + delay(1); // Kratka pauza izmedju ocitavanja +} diff --git a/pushbutton_with_debounce/pushbutton_with_debounce.ino b/pushbutton_with_debounce/pushbutton_with_debounce.ino new file mode 100644 index 0000000..181a41b --- /dev/null +++ b/pushbutton_with_debounce/pushbutton_with_debounce.ino @@ -0,0 +1,31 @@ + +int button = 2; // Taster je povezan na pin 2 + +int last_button_state = LOW; // Prethodno stanje tastera +int button_state = LOW; // Trenutno stanje tastera + +unsigned long last_button_millis = 0; +unsigned long debounce_interval = 50; // Interval za ignorisanje dogadjaja na tasteru + +void setup() { + pinMode(button, INPUT); // Inicijalizuje pin 2 kao ulaz + + Serial.begin(9600); // Inicijalizuje serijsku konekciju na brzini od 9600 bit/s +} + +void loop() { + int reading = digitalRead(button); // Gleda u kom je stanju taster + + if (reading != last_button_state){ // Ako se stanje tastera promenilo + last_button_millis = millis(); // Pocni da meris vreme + } + if (millis() - last_button_millis >= debounce_interval){ // Ako je proslo vise od "debounce_interval" milisekundi + if (reading != button_state){ // i ocitavanje je razlicito od ocekivanog stanja tastera + button_state = reading; // znaci da je ocitano stanje ono koje zelimo na tasteru, a ne neki sum + // Stampa stanje tastera + } + } +Serial.println(button_state); + last_button_state = reading; // Vazno je podesiti da je "prethodno stanje" tastera za sledecu iteraciju ono sadasnje u ovoj iteraciji + delay(1); +}