У попередньому розділі ми почали розробляти генератор із змінною частотою генерації Задаючи початкове значення змінної, ми реалізували можливість змінювати частоту в деяких межах

Оцінимо, які межі зміни частоти, якщо ми будемо збільшувати тривалість імпульсів на кожному кроці, скажімо, на 10 мс Дві кнопки управління дозволять нам почати з тривалості 120 мс Тобто, початкова частота в цьому випадку виявляється дорівнює 1 / (120 +120) = 4 (тривалості в мілісекундах, але результат в герцах) Зробивши близько 100 кроків, ми знизимо тривалість імпульсів до 20 мс А це відповідає частоті 25 Гц

Погодьтеся, що діапазон частот від 2 Гц до 25 Гц, мабуть, не найцікавіший І натискати 100 раз кнопку .. не знаю, мені б не сподобалося Є різні способи подолання цієї проблеми, і ми один з них розглянемо зараз

Повернемося до програми, на якій завершувалася попередня глава Я вже говорив, що програма стає «довгої», якщо ми додамо в неї ще щось, то вона стане неозорої

Подібні труднощі легко подолати, якщо частина програми винести в окремий блок, підпрограму, або макрос, як це називається в програмі Flowcode До речі, в інших мовах програмування аналогічні підпрограми можуть називатися процедурами або функціями

Для створення підпрограми ми скористаємося пунктом Макрос основної програми, вибравши розділ Новий

Рис 231 Створення нового макросу

У діалоговому вікні ми задамо імя макросу (за цим імені до нього і будемо звертатися) і параметри, якщо вони необхідні

Зверніть увагу, що ми не додаємо локальну змінну і повертається тип

Змінні бувають локальні, існуючі тільки всередині підпрограми (макросу), і глобальні До глобальних змінним ми можемо звертатися в будь-якому місці програми (тобто, і в підпрограмі)

Мінлива, з якою ми оперуємо в даному макросе, глобальна

Рис 232 Діалогове вікно нового макросу

У тіло макросу ми перенесемо наші розгалуження програми (if. Then), а на їх місце додамо виклик підпрограми

Зверніть увагу, що вікно значення, що повертається залишається порожнім і неактивним

Якщо в попередньому діалозі додати тип для повернення змінної, то в цьому діалозі потрібно вказати цю змінну Але ..

Рис 233 Створений макрос і діалогове вікно виклику макросу

Але в цьому випадку виникає невелика проблема При виході з підпрограми мінлива pause, яку ми використовуємо, обнулятиметься Це легко перевірити при покроковому виконанні програми Найгірше, якщо потім спробувати змінити ситуацію, помінявши Повертається тип на «Не повертати змінну», ситуація не змінюється До виправлення ситуації потрібно видалити старий макрос і створити новий з правильними налаштуваннями Для видалення макросу потрібно видалити всі компоненти в ньому, видалити виклик цього макросу, і тільки тоді видалити сам макрос Програма, доповнена викликом підпрограми, виглядає більш короткою

Як при роботі з компонентами електричних ланцюгів, в програмуванні існує найчастіше безліч рівнозначних (або майже таких) рішень

Остаточний вибір рішення, як побудувати програму, залежить від ряду факторів Але, якщо всі вимоги до програми виконані, а варіанти залишаються, вибирайте варіант, який зручний для вас, з урахуванням того, що програмою, можливо, доведеться займатися комусь ще Навіть у тому випадку, коли ви не плануєте цього, постарайтеся надати програмі легкий для читання вигляд І додайте коментарі Вони будуть корисні не тільки іншим, але й вам по закінченні деякого часу

Для додавання коментарів в програмі Flowcode є спеціальний програмний елемент, який і називається Коментар

Крім того, створюючи макрос, ви можете у вікні Опис нового макросу хоча б коротко описати призначення цієї підпрограми, основні моменти в її роботі і, наприклад, призначення змінних

Рис 235 Новий вид програми

У ранніх версіях програми Flowcode з коментарями, написаними кирилицею, виникали деякі проблеми Однак є надія, що вони залишилися в минулому

Рис 236 Додавання коментаря

Нагадаю, якщо ви створюєте новий проект, то краще для нього створити окрему папку, і не забудьте поставити конфігурацію в двох пунктах основного меню: Чип-Конфігурація і Вид-Настройки проекту В останньому слід правильно встановити тактову частоту

Проект можна переробити зі старого: відкрити старий проект і зберегти його під новим імям І в цьому випадку попередньо не зайвим буде створити окрему папку І обовязково не забудьте зберегти проект під новим імям, інакше може виникнути плутанина

Перевірити вірність роботи можна і в програмі Flowcode, використовуючи покрокове виконання налагодження і додавши у вікно спостереження змінну pause Але зручніше остаточну перевірку зробити в програмі ISIS

Рис 237 Перевірка роботи програми в програмі ISIS

На малюнку видно, що натискаючи кнопку, ми змінюємо частоту генератора Це видно (на малюнку) по виникаючої паузі в 500 мс, яку ми додали в підпрограмі

Отже, ми розібралися з деякими деталями створення програми, яка дозволить змінювати частоту генератора Настав час повернутися до питання створення декількох діапазонів

Програма – це інструмент настільки гнучкий, що ми можемо створити стільки діапазонів, скільки нам захочеться Але давайте подивимося, що для цього нам може знадобитися Ми можемо перемикати діапазони, присвоївши кожному з них свою кнопку Тобто, натискаючи кнопку, ми включаємо обраний діапазон Це зручне рішення, правда, що несе за собою додавання безлічі кнопок Вдобавок кожна кнопка займе один висновок порту Чи вистачить нам висновків

Ми можемо використовувати матричну клавіатуру, як це зроблено, скажімо, в мобільному телефоні Але це зручно, скоріше, для цифрової клавіатури

І, нарешті, ми можемо вчинити так само, як вчинили зі зміною частоти генератора – кожне натискання однієї кнопки буде міняти діапазон

Вибір залежить від наших переваг і можливостей мікроконтролера

У практиці розробки нових пристроїв прийнято, якщо це можливо, використовувати вже готові, перевірені рішення Це стосується і схемних, і програмних напрацювань Тому я пропоную вибрати рішення, засноване на вже виконану нами роботу

Тепер давайте розберемося з діапазонами, їх кількістю і «розміром»

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012