- Необхідний матеріал:
- Кругова діаграма:
- Пояснення програмування:
- Налаштування обладнання для миготіння послідовності світлодіодів:
- Завантаження та робота:
Це другий підручник з послідовності навчальних посібників, у якому ми вивчаємо MSP430G2 LaunchPad від Texas Instruments за допомогою програми Energia IDE. В останньому навчальному посібнику Blinky LED ми представили себе Раді розробників LaunchPad та Energia IDE, а також завантажили нашу першу програму, яка регулярно моргає вбудованим світлодіодом.
У цьому підручнику ми дізнаємося, як використовувати опцію цифрового читання та цифрового запису для зчитування стану пристрою введення, як перемикача, та керування кількома виходами, такими як світлодіоди. Наприкінці цього підручника ви навчилися працювати з цифровими входами та виходами, які можна використовувати для взаємодії з багатьма цифровими датчиками, такими як ІЧ-датчик, ПІР-датчик тощо, а також для ввімкнення та вимкнення таких виходів, як світлодіод, зумер тощо. Звучить цікаво правильно !!? Давайте розпочнемо.
Необхідний матеріал:
- MSP430G2 LaunchPad
- Світлодіод будь-якого кольору - 8
- Перемикач - 2
- Резистор 1к - 8
- Підключення проводів
Кругова діаграма:
У нашому попередньому підручнику ми помітили, що сама стартова площадка оснащена двома світлодіодами та перемикачем на платі. Але в цьому підручнику нам знадобиться більше, ніж це, оскільки ми плануємо підсвічувати вісім світлодіодних ламп послідовно при натисканні кнопки. Ми також змінимо послідовність при натисканні іншої кнопки, щоб зробити її цікавою. Тож ми повинні побудувати схему з 8 світлодіодними лампами та двома перемикачами, повну схему схеми можна знайти нижче.
Тут 8 світлодіодів є виходами, а два перемикача - входами. Ми можемо підключити їх до будь-якого виводу вводу-виводу на платі, але я підключив LRD з виводу P1.0 на P2.1 і перемикаю 1 і 2 на висновки P2.4 і P2.3 відповідно, як показано вище.
Всі катодні штифти світлодіода прив'язані до землі, а анодний штифт підключений до штифтів вводу-виводу через резистор. Цей резистор називається резистором, обмежуючим струм, цей резистор не є обов'язковим для MSP430, оскільки максимальний струм, який може мати джерело вводу-виводу, становить лише 6 мА, а напруга на штифті - лише 3,6 В. Однак корисно застосовувати їх. Коли будь-який з цих цифрових штифтів піднімається високо, включається відповідний світлодіод. Якщо ви можете згадати останні навчальні програми для світлодіодів, тоді ви пам’ятаєте, що digitalWrite (LED_pin_name, HIGH) змусить світлодіод світитися, а digitalWrite (LED_pin_name, LOW) вимкне світлодіод.
Перемикачі - це вхідний пристрій, один кінець перемикача підключений до заземлення, а інший - до цифрових контактів P2.3 і P2.4. Це означає, що кожного разу, коли ми натискаємо на перемикач, штифт вводу / виводу (2.3 або 2.4) буде заземлений і залишатиметься вільним, якщо не натискати кнопку. Давайте подивимося, як ми можемо використовувати цю домовленість під час програмування.
Пояснення програмування:
Програма повинна бути написана для послідовного управління 8 світлодіодами, коли натискається перемикач 1, а потім, коли натискається перемикач 2, послідовність повинна бути змінена. Повна програма і демонстрація відео можна знайти в нижній частині цієї сторінки. Далі нижче я поясню програму, рядок за рядком, щоб ви могли легко її зрозуміти.
Як завжди, нам слід починати з функції void setup (), всередині якої ми оголошуємо, що використовувані нами штифти є вхідними або вихідними. У нашій програмі виводяться 8 світлодіодних контактів, а 2 перемикача - входами. Ці 8 світлодіодів підключені від P1.0 до P2.1, що є контактами від 2 до 9 на платі. Потім перемикачі підключаються до контактів P2.3 і Pin 2.4, що є контактами No 11 і 12 відповідно. Отже, ми оголосили наступне у void setup ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } for (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Як ми знаємо, функція pinMode () оголошує висновок виведенням або введенням, а функція digitalWrite () робить його високим (ON) або низьким (OFF). Ми використали цикл for, щоб зробити це оголошення, щоб зменшити кількість рядків. Змінну «я» буде збільшений від 2 до 9 в протягом циклу і для кожного приросту функції всередині буде виконуватися. Ще одна річ, яка може вас збити з пантелику, - це термін “ INPUT_PULLUP ”. Штифт можна оголосити як вхідний, просто викликавши функцію pinMode (Ім'я_різця, INPUT), але тут ми використовували INPUT_PULLUP замість INPUT, і вони обидва мають помітні зміни.
Коли ми використовуємо будь-які штифти мікроконтролера, штифт повинен бути підключений до низького або високого. У цьому випадку штирі 11 і 12 підключені до вимикача, який буде приєднаний до землі при натисканні. Але коли перемикач не натиснутий, штифт ні до чого не підключений, цей стан називається плаваючим штифтом, і це погано для мікроконтролерів. Тому, щоб уникнути цього, ми або використовуємо підтягуючий або висувний резистор, щоб утримувати штифт у стані, коли він потрапляє в плаваючий. У мікроконтролері MSP430G2553 штифти вводу-виводу мають вбудований підтягуючий резистор. Щоб використати це все, що нам потрібно зробити, це викликати INPUT_PULLUP замість INPUT під час оголошення, як це зробили вище.
Тепер давайте перейдемо до функції void loop () . Все, що написано в цій функції, буде виконуватися назавжди. Першим кроком у нашій програмі є перевірка, чи натиснуто перемикач, і якщо натиснуто, ми повинні почати блимати світлодіодами послідовно. Для перевірки натискання кнопки використовується наступний рядок
if (digitalRead (12) == LOW)
Тут новою функцією є функція digitalRead () , ця функція буде зчитувати стан цифрового виводу і повертатиме HIGH (1), коли висновок отримує деяку напругу, і повертатиме низький LOW (0), коли висновок заземлений. У нашому обладнанні штифт буде заземлений лише тоді, коли ми натиснемо кнопку, інакше він буде високим, оскільки ми використовували підтягуючий резистор. Тому ми використовуємо оператор if, щоб перевірити, чи натиснута кнопка.
Після натискання кнопки ми потрапляємо в нескінченний цикл while (1) . Тут ми починаємо послідовно блимати світлодіодами. Нижче показаний нескінченний цикл while, і все, що написано всередині циклу, буде працювати вічно до перерви; використовується оператор.
кружляти (1) {}
Усередині нескінченності, поки ми перевіряємо стан другого перемикача, який підключений до виводу 11.
Якщо натиснути цей перемикач, ми мигнутимемо світлодіодом в одній конкретній послідовності, ми будемо блимати іншою послідовністю.
if (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); затримка (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Щоб послідовно блимати світлодіодом, ми знову використовуємо цикл for , але цього разу ми використовуємо невелику затримку в 100 мілісекунд, використовуючи функцію затримки (100), щоб ми могли помітити, що світлодіод підвищується. Щоб одночасно світився лише один світлодіод, ми також використовуємо інший цикл for, щоб вимкнути всі світлодіоди. Таким чином, ми вмикаємо світлодіодне очікування на деякий час, а потім вимикаємо всі світлодіоди, потім збільшуємо кількість, включаємо світлодіодне очікування деякий час, і цикл продовжується. Але все це буде відбуватися до тих пір, поки не буде натиснутий другий перемикач.
Якщо натиснути другий перемикач, тоді ми змінимо послідовність, програма буде більш-менш такою ж, як очікується для послідовності, у якій ввімкнено світлодіод. Рядки, показані нижче, спробуйте поглянути і з’ясувати, що змінилося.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); затримка (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Так, цикл for змінено. Раніше ми змушували світлодіод світитися від числа 2 і аж до 9. Але зараз ми почнемо з числа 9 і зменшимося аж до 2. Таким чином, ми можемо помітити, натиснуто перемикач чи ні.
Налаштування обладнання для миготіння послідовності світлодіодів:
Досить добре з усією частиною теорії та програмного забезпечення. Давайте, отримаємо деякі компоненти і подивимося, як ця програма виглядає в дії. Схема дуже проста, а отже, її можна легко побудувати на макетній дошці. Але я припаяв світлодіод і вимикачі на платі для перфорації, щоб вона виглядала акуратно. Дошка для перфів, яку я запаяв, показана нижче.
Як ви можете бачити, у нас вихідні штифти світлодіода і перемикач вийняті як штифти роз'єму. Тепер ми використовуємо дроти від роз'єму від жінки до жінки для підключення світлодіодів та вимикачів до плати MSP430 LaunchPad, як показано на малюнку нижче.
Завантаження та робота:
Після того, як ви закінчите з апаратним забезпеченням, просто підключіть плату MSP430 до комп’ютера та відкрийте IDE Energia та скористайтеся програмою, наведеною в кінці цієї сторінки. Переконайтеся, що в середовищі IDE Energia вибрано праву плату та COM-порт, і натисніть кнопку Завантажити. Програма повинна бути успішно скомпільована, і після завантаження відображатиметься "Готово завантаження".
Тепер натисніть кнопку 1 на платі, і світлодіод повинен загорітися послідовно, як показано нижче
Ви також можете утримувати другу кнопку, щоб перевірити, чи змінюється послідовність. Повна робота проекту показана у відео нижче. Якщо ви задоволені результатами, ви можете спробувати внести деякі зміни в код, наприклад, змінити час затримки, змінивши послідовність тощо. Це допоможе вам краще навчитися і зрозуміти.
Сподіваюся, ви зрозуміли навчальний посібник і дізналися з ним щось корисне. Якщо у вас виникли будь-які проблеми, не соромтеся розміщувати питання в розділі коментарів або користуватися форумами. Давайте зустрінемося в іншому підручнику, де ми навчимося читати аналогові напруги за допомогою нашої стартової площадки MSP30.