Уважаемые радиокоты! Помогите пожалуйста разобраться с кодом из обучающей книги Джереми Блум. Завис на булевой операции
Никак не могу догнать, как работает этот код:
Спойлер
const int LED = 9;
const int BUTTON = 2;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;
void setup ()
{
pinMode (LED, OUTPUT);
pinMode (BUTTON, INPUT);
}
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON);
if (last != current)
{
delay(5);
current = digitalRead(BUTTON);
}
return current;
}
void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
ledOn = !ledOn;
}
lastButton = currentButton;
digitalWrite(LED, ledOn);
}
Суть того, что должно получиться мне ясна. С 13 строки я не понимаю фразу:
boolean debounce(boolean last) . Как отличить "самопридуманные слова" от важных функциональных? под самопридуманными я понимаю - любое слово или любая буква (неиспользуемая ранее в коде). Просто буква от балды, лишшь бы ей присвоить какой-то важный параметр (номер пина например). Вот например, важное функциональное слово
boolean - я понимаю так: все что будет использовано с этим словом будет сравниваться в дальнейшем. Может иметь 2 состояния: ложь и истина. А остальная фраза:
debounce(boolean last) - ? Что здесь важное функциональное слово, а что можно заменить например одной буквой?
Прошу прощение за каряво сформулированный вопрос, но я честно сам не могу понять, чего именно я не понимаю. Вот уже вторую книгу изучаю по ардуино, и везде именно с этого момента начинается ступор...

Вот, к примеру есть переменная, есть функция, есть аргумент. Переменным как правило присваивается имя (любое, хоть просто одна буква) и какое-то значение (число, номер пина, высокое или низкое состояние). Есть функция, это типа формула, или уравнение. И аргумент - это то, что участвует в этом уравнении. И есть еще "спец. словечки" - типа команды, которые индивидуальны и действуют по каким-то своим законам и правилам, которые мне лично сложно отделить от всего остального. И о некоторых таких "спец словечках" совершенно подробно нигде ничего не сказано. Вот что есть что вот в этой фразе коварной b]boolean debounce(boolean last)[/b] ?
В строке №16 фраза:
if (last != current). Как программа понимает, что есть
last , а что есть
current? Ведь ни до ни после 16 строки конкретно словам
last и
current ничего не присваивалось и ими ничего не называлось. Это что, какое-то внегласное ардуиновское правило?

И помимо общей путанницы эти слова еще состоят в части слов в строках №3 и №4...