#define BUTTON_L 12
#define BUTTON_R 2
byte leds[] = {11,10,9,8,7,6,5,4,3}; // Visu LED pin numuri salikti pec kartas
/* setup() inicialize visus kontaktus un atver Serial komunikaciju*/
void setup() {
Serial.begin(9600);
// LED inicializacija caur FOR ciklu
// Visi LED kontakti ir ielikti masivaa, pec kartas
for (int i = 0; i < 9; i++) {
pinMode(leds[i], OUTPUT);
}
// INPUT_PULLUP nem nost nepiecisamibu izmantot rezistoru pie pogas
// bet, pogas nolasisanas laikā ( digitalRead(BUTTON_L) ), sanemta vertiba bus 0
pinMode(BUTTON_L, INPUT_PULLUP);
pinMode(BUTTON_R, INPUT_PULLUP);
Serial.println("^_^");
} // setup() funkcijas beigas
/*
Starp funkcijam tiek veidoti GLOBALIE mainigie,
lai varetu tos izmantot visur
*/
/* \/\/\/ Globalie mainigie \/\/\/ */
unsigned long current_time = 0;
// current_time nems vertibu no millis() -> unsigned long
// https://www.arduino.cc/reference/en/language/functions/time/millis/
unsigned long previous_time = 0;
// starpiba starp previous_time un current_time nosaka kad japalielinas counter'am
int counter = 0; // visu laiku palielinas, balstoties uz current_time un previous_time
int previous_counter = 0; // mainisies tikai ieksaa funkcija blink_in_a_row(), lai noteiktu kād LED ir nepieciesams parslegties
int counter_time = 200; // COUNTER laiks, pec kura LED mirgos
int led_pos = 0; // LED pozicija masivaa
bool led_state = 1; // LED gaismas stavoklis -> ON / OFF, sakam ar 1, lai pirma LED iesledzas
int blink_direction = 1; // nakamas LED virziens, 1 : pa labi | -1 : pa kreisi
/* /\/\/\ Globalie mainigie /\/\/\ */
/*
loop() - cikliska funkcija, kura izpildisies vienmer!
seit notieks laika uznemsana, counter'a izmainas un pogas pospiesanas nolasisana
*/
void loop() {
current_time = millis(); // cikla sakuma uzzinam tagadejo laiku
blink_in_a_row();
// ja pagaja counter_time laiks, tad counter palielinas
if (current_time - previous_time >= counter_time) {
previous_time = current_time;
counter++;
}
} // loop() funkcijas beigas
/*
CUSTOM funkcija/s, lai pamata funkcija loop() nebutu iekrameeta ar kodu rindam!
loop() funkcijaa ieksa izsaucam pashtaisiitas funkcijas ar to nosaukumiem
*/
void blink_in_a_row() { // LED pakapeniska mirgosana
// previous_counter un counter starpiba nosaka, kad notiek mirgosana un LED parslegsana
if (previous_counter < counter) {
previous_counter = counter;
digitalWrite(leds[led_pos], led_state);
// sakuma ieslegt/izslegt LED gaismu ar ieprieksh noteiktu stavokli, un pec tam izmainit stavokli prieksh nakamas LED
led_state = !led_state; // LEDs > ON / OFF
// ja nakamas LED gaismas status ir Ieslegts (tagadeja LED tikko bija izslegta)
// tad parslegt LED poziciju uz nakamo
// + parbaudit virzienu (pa labi / pa kreisi) kura LED bus ieslegta nakama
if (led_state == true) {
led_pos = led_pos + blink_direction;
if (led_pos >= 8) {
blink_direction = -1;
} else if (led_pos <= 0) {
blink_direction = 1;
}
}
}
} // blink_in_a_row() funkcijas beigas