Пристрій автоматичного закривання жалюзі
Характеристики вузлів системи автоматичного закривання жалюзі. Розробка схеми електричної функціональної. Блок-схема алгоритму роботи пристрою. Середовище розробки програмної частини пристрою. Основні компоненти розробки програмної частини системи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 06.12.2014 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ЗМІСТ
Вступ
1. Основні технічні характеристики вузлів системи
1.1 Arduino Uno R3. Будова та основні характеристики платформи
1.2 Фоторезистор
1.3 Сервопривід
1.4 LCD-монітор
1.5 LED-світлодіод
2. Розробка схеми електричної функціональної
2.1 Розробка функціональної схеми
2.2 Блок-схема алгоритму роботи пристрою
3. Розробка програмної частини системи
3.1 Середовище розробки програмної частини пристрою
3.2 Основні компоненти розробки програмної частини системи
ВИСНОВКИ
Список використаних джерел
Додаток А
ВСТУП
Мікроконтромлер - це виконана у вигляді мікросхеми спеціалізована мікропроцесорна система, що включає мікропроцесор, блоки пам'яті для збереження коду програм і даних, порти вводу-виводу і блоки зі спеціальними функціями (лічильники, компаратори, АЦП та інші).
Використовується для керування електронними пристроями. По суті, це -- однокристальний комп'ютер, здатний виконувати прості завдання. Використання однієї мікросхеми значно знижує розміри, енергоспоживання і вартість пристроїв, побудованих на базі мікроконтролерів.
Мікроконтролери можна зустріти в багатьох сучасних приладах, таких як телефони, пральні машини, вони відповідають за роботу двигунів і систем гальмування сучасних автомобілів, з їх допомогою створюються системи контролю і системи збору інформації. Переважна більшість процесорів, що випускаються у світі -- мікроконтролери.
При проектуванні мікроконтролерів доводиться дотримувати баланс між розмірами і вартістю з одного боку і гнучкістю і продуктивністю з іншою. Для різних застосувань оптимальне співвідношення цих і інших параметрів може розрізнятися дуже сильно. Тому існує величезна кількість типів мікроконтролерів, що відрізняються архітектурою процесорного модуля, розміром і типом вбудованої пам'яті, набором периферійних пристроїв, типом корпусу. В той час, як 8-розрядні процесори загального призначення повністю витіснені продуктивнішими моделями, 8-розрядні мікроконтролери продовжують широко використовуватися. Це пояснюється тим, що існує велика кількість застосувань, в яких не потрібна висока продуктивність, але важлива низька вартість. В той же час, є мікроконтролери, з більшими обчислювальними можливостями, наприклад цифрові сигнальні процесори.
Обмеження за ціною і енергоспоживанням стримують також зростання тактової частоти контролерів. Хоча виробники прагнуть забезпечити роботу своїх виробів на високих частотах, вони, в той же час, надають замовникам вибір, випускаючи модифікації, розраховані на різні частоти і напругу живлення. У багатьох моделях мікроконтролерів використовується статична пам'ять для ОЗП і внутрішніх регістрів. Це дає контролеру можливість працювати на менших частотах і навіть не втрачати дані при повній зупинці тактового генератора. Часто передбачені різні режими енергозбереження, в яких відключається частина периферійних пристроїв і обчислювальний модуль.
Окрім ОЗП, мікроконтролер може мати вбудовану незалежну пам'ять для зберігання програми і даних. У багатьох контролерах взагалі немає шин для підключення зовнішньої пам'яті. Найбільш дешеві типи пам'яті допускають лише одноразовий запис. Такі пристрої підходять для масового виробництва в тих випадках, коли програма контролера не оновлюватиметься. Інші модифікації контролерів мають можливість багатократного перезапису незалежної пам'яті. На відміну від процесорів загального призначення, в мікроконтролерах часто використовується гарвардська архітектура.
Неповний список периферії, яка може бути присутнім в мікроконтролерах, включає:
1. Різні інтерфейси вводу-виводу, такі як UART, I2C, SPI, CAN, USB.
2.Аналого-цифрові і цифро-аналогові перетворювачі.
3.Компаратори.
4.Широтно-імпульсні модулятори.
5.Таймери.
Програмування мікроконтролерів зазвичай здійснюється на асемблері або Сі, хоча існують компілятори для інших мов, використовуються також вбудовані інтерпретатори Бейсіка і Форту. Для відлагодження програм використовуються програмні симулятори (спеціальні програми для персональних комп'ютерів, що імітують роботу мікроконтролера), внутрішньосхемні емулятори (електронні пристрої, що імітують мікроконтролер, які можна підключити замість нього до вбудованого пристрою, що розробляється) та інтерфейс JTAG.
1. ОСНОВНІ ТЕХНІЧНІ ХАРАКТЕРИСТИКИ ВУЗЛІВ СИСТЕМИ
1.1 Arduino Uno R3. Будова та основні характеристики платформи
Arduino -- апаратна обчислювальна платформа, основними компонентами якої є плата вводу/виводу та середовище розробки на мові Processing/Wiring. Arduino - це інструмент для проектування електронних пристроїв (електронний конструктор) більше взаємодіючих з навколишнім фізичним середовищем, ніж стандартні персональні комп'ютери, які фактично не виходять за рамки віртуальності. Ця платформа призначена для побудови фізичних систем шляхом використання програмних та апаратних засобів, які можуть сприймати та реагувати на зміни в навколишньому середовищі. Arduino застосовується для створення електронних пристроїв з можливістю прийому сигналів від різних цифрових і аналогових давачів, які можуть бути підключені до неї, і управління різними виконавчими пристроями. Проекти пристроїв, засновані на Arduino, можуть працювати самостійно або взаємодіяти з програмним забезпеченням на комп'ютері (наприклад Flash, Processing, MaxMSP). Плати можуть бути зібрані користувачем самостійно або куплені в зборі. Середовище розробки програм з відкритим вихідним кодом доступна для безкоштовного скачування. Оригінальні плати Arduino виробляються фірмою Smart Projects. На даний момент доступно 20 версій плат, які різняться характеристиками мікроконтролера та кількістю аналогових і цифрових виводів. Найбільш розповсюдженою версією плат Arduino є плата Arduino Uno.
Arduino Uno R3 це контролер, що побудований на основі мікроконтролера ATmega 328(рисунок 1.1). Дана платформа відрізняється від усіх попередніх тим, що вона не використовує USB-послідовний порт FTDI. Замість цього плата, в якості перетворювача інтерфейсів USB-UART, використовує мікроконтролер MEGA16U2. Платформа має 14 цифрових входів/виходів (6 з яких можуть використовуватися як виходи ШІМ), 6 аналогових входів, кварцовий резонатор на 16 МГц, роз'єм USB, роз'єм живлення, роз'єм для внутрішньосхемного програмування (ICSP) та кнопку скидання. [1]
Рисунок 1.1 Arduino Uno R3 вигляд зовнішній
Основні характеристики платформи Arduino Uno R3 подані у таблиці 1.1
Таблиця 1.1Основні характеристики Arduino Uno R3
Мікроконтролер |
ATmega328 |
|
Робоча напруга |
5 В |
|
Вхідна напруга (рекомендовано) |
7-12 В |
|
Вхідна напруга (межі) |
6-20 В |
|
Цифрові входи/виходи |
14 (з яких 6 забезпечують вихід ШІМ) |
|
Аналогові входи |
6 |
|
Флеш-пам'ять |
32 кб(ATmega328) з яких 0.5 кб використовується для завантажувача |
|
ОЗП |
2 Кб(ATmega328) |
|
EEPROM |
1 Кб(ATmega328) |
|
Тактова частота |
16 МГц |
Arduino Uno може отримувати живлення через підключення USB або від зовнішнього джерела живлення. Джерело живлення вибирається автоматично. В якості зовнішнього джерела живлення (не USB) може використовуватися мережевий AC / DC-адаптер або акумулятор / батарея. Штекер адаптера підключається за допомогою роз'єму 2.1 мм з центральним позитивним полюсом. У разі живлення від батареї її проводи необхідно під'єднати до виводів Gnd і Vin роз'єма Power. Напруга зовнішнього джерела живлення може бути в межах від 6 до 20 В. Однак, зменшення напруги живлення нижче 7В призводить до зменшення напруги на виводі 5V, що може стати причиною нестабільної роботи пристрою. Використання напруги більше 12В може призвести до перегріву стабілізатора напруги і виходу плати з ладу. З урахуванням цього, рекомендується використовувати джерело живлення з напругою в діапазоні від 7 до 12В. Нижче перераховані виводи живлення, що розміщені на платі:
· VIN. Напруга, що надходить в Arduino безпосередньо від зовнішнього джерела живлення(не пов'язано з 5В від USB або іншою стабілізованою напругою). Через цей вивід можна як подавати зовнішнє живлення, так і споживати струм, коли пристрій живиться від зовнішнього адаптера.
· 5V. На вивід надходить напруга 5В від стабілізатора напруги на платі, в незалежності від того, як живиться пристрій: від адаптера (7 - 12В), від USB (5В) або через вивід VIN (7 - 12В). Живити пристрій через виводи 5V або 3V3 не рекомендується, оскільки в цьому випадку не використовується стабілізатор напруги, що може привести до виходу плати з ладу.
· 3.3V. 3.3В, що надходять від стабілізатора напруги на платі. Максимальний струм, споживаний від цього виводу, становить 50мА.
· GND. Вивід землі.
· IOREF. Цей вивід надає платам розширення інформацію по робочій напрузі мікроконтролера Arduino. Залежно від напруги, яка зчитується з виводу IOREF, плата розширення може переключитися на відповідне джерело живлення або задіяти перетворювачі рівнів, що дозволить їй працювати як з 5В, так і з 3.3В-пристроями.
З використанням функцій pinMode(), digitalWrite() і digitalRead() кожен з 14 цифрових виводів може працювати в якості входу або виходу. Рівень напруги на виводах обмежений 5В. Максимальний струм, який може віддавати або споживати один вивід, становить 40мА. Усі виводи сполучені з внутрішніми підтягуючими резисторами (за замовчуванням відключеними) номіналом 20-50 кОм. Окрім цього, деякі виводи Arduino можуть виконувати додаткові функції:
· Послідовний інтерфейс: виводи 0 (RX) і 1 (TX). Використовуються для отримання (RX) і передачі (TX) даних по послідовному інтерфейсу. Ці виводи з'єднані з відповідними виводами мікросхеми MEGA16U2, яка виконує роль перетворювача USB-UART.
· Зовнішні переривання: виводи 2 і 3. Можуть служити джерелами переривань, що виникають при фронті, спаді або низькому рівні сигналу на цих виводах.
· ШІМ: виводи 3, 5, 6, 9, 10 і 11. За допомогою функції analogWrite() можуть виводити 8-бітові аналогові значення у вигляді шім-сигналу.
· Інтерфейс SPI: виводи 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Із застосуванням бібліотеки SPI дані висновки можуть здійснювати зв'язок по інтерфейсу SPI.
· Світлодіод: 13. Вбудований світлодіод, що приєднаний до виводу 13. При відправці значення HIGH світлодіод включається, при відправці LOW - вимикається.
· TWI: вивід A4 або SDA і вивід A5 або SCL. З використанням бібліотеки Wire дані виводи можуть здійснювати зв'язок по інтерфейсу TWI.
· AREF. Опорна напруга для аналогових входів. Може задіятися функцією analogReference ().
· Reset. Формування низького рівня (LOW) на цьому виводу призведе до перезавантаження мікроконтролера. Зазвичай цей вивід служить для функціонування кнопки скидання на платах розширення.
Також в Arduino Uno є 6 аналогових входів (А0-А5), кожен з яких може представити аналогову напругу у вигляді 10-бітного числа (1024 різних значення). За замовчуванням, вимір напруги здійснюється щодо діапазону від 0 до 5В. Проте, верхню межу цього діапазону можна змінити, використовуючи вивід AREF і функцію analogReference().[1]
Arduino Uno надає ряд можливостей для здійснення зв'язку з комп'ютером, ще одним Arduino або іншими мікроконтролерами. В ATmega328 мається прийомопередавач UART, що дозволяє здійснювати послідовний зв'язок за допомогою цифрових виводів 0 (RX) і 1 (TX). Мікроконтролер ATmega16U2 на платі забезпечує зв'язок цього прийомопередавача з USB-портом комп'ютера, і при підключенні до ПК дозволяє Arduino визначатися як віртуальний COM-порт. Прошивка мікросхеми 16U2 використовує стандартні драйвера USB-COM, тому установка зовнішніх драйверів не потрібна. На платформі Windows необхідний тільки відповідний .inf-файл. В пакет програмного забезпечення Arduino входить спеціальна програма, що дозволяє зчитувати і відправляти на Arduino прості текстові дані. При передачі даних через мікросхему-перетворювач USB-UART під час USB-з'єднання з комп'ютером, на платі будуть блимати світлодіоди RX і TX. (При послідовній передачі даних за допомогою виводів 0 і 1, без використання USB-перетворювача, дані світлодіоди не задіюються). Бібліотека SoftwareSerial дозволяє реалізувати послідовний зв'язок на будь-яких цифрових виводах Arduino Uno. У мікроконтролері ATmega328 також реалізована підтримка послідовних інтерфейсів I2C (TWI) і SPI. У програмне забезпечення Arduino входить бібліотека Wire, що дозволяє спростити роботу з шиною I2C. Для роботи з інтерфейсом SPI використовується бібліотека SPI.
Arduino Uno програмується за допомогою програмного забезпечення Arduino. ATmega328 в Arduino Uno випускається з прошитим загрузчиком, що дозволяє завантажувати в мікроконтролер нові програми без необхідності використання зовнішнього програматора. Взаємодія з ним здійснюється за оригінальним протоколом STK500. Проте, мікроконтролер можна прошити і через роз'єм для внутрішньосхемного програмування ICSP (In-Circuit Serial Programming), не звертаючи уваги на завантажувач. Вихідний код прошивки мікроконтролера MEGA16U2 знаходиться у вільному доступі. Прошивка MEGA16U2 включає в себе DFU-завантажувач (Device Firmware Update), що дозволяє оновлювати прошивку мікроконтролера. Для активації режиму DFU на платі, для спрощення переходу в режим DFU, присутній резистор, що підтягує до землі лінію HWB мікроконтролера 16U2. Після переходу в DFU-режим для завантаження нової прошивки можна використовувати програмне забезпечення Atmel's FLIP (для Windows) або DFU programmer (для MacOS X і Linux). Альтернативний варіант прошити мікроконтролер через роз'єм для внутрішньосхемного програмування ICSP за допомогою зовнішнього програматора, проте в цьому випадку DFU-завантажувач затреться. [1]
Найголовнішим елементом, який виконує майже усю роботу платформи Arduino Uno є мікроконтролер фірми ATmel ATmega328 (рисунок 1.2).
Рисунок 1.2 ATmega 328 вигляд загальний
автоматичний закривання жалюзі програмний
Мікроконтролер виконана у вигляді мікросхеми спеціалізована мікропроцесорна система, що включає мікропроцесор, блоки пам'яті для збереження коду програм і даних, порти вводу-виводу і блоки зі спеціальними функціями (лічильники, компаратори, АЦП та інші). Використовується для керування електронними пристроями. По суті, це -- однокристальний комп'ютер, здатний виконувати прості завдання.
Мікроконтролер ATmega 328 мікроконтролер сімейства AVR, як і всі інші має 8-бітний процесор і дозволяє виконувати більшість команд за один такт. Мікросхема виготовляється по КМОП-технології, яка в поєднанні з удосконаленою RISC-архітектурою дозволяє досягти найкращого відношення вартості/швидкодії/енергоспоживання.[2, 10]
Ядро мікроконтролера AVR сімейства Mega виконано по удосконаленій RISC-архітектурі (Рисунок 1.3).
Рисунок 1.3 Архітектура ядра мікроконтролера AVR
Арифметико-логічний пристрій (АЛП) підключений безпосередньо до 32 робочих регістрів, які об'єднані в регістровий файл. Завдяки цьому, АЛП може виконувати одну операцію (читання вмісту регістрів, виконання операції та запис результату назад в регістровий файл) за такт. Крім того, практично кожна із команд (за виключенням команд, у яких одним із операндів є 16-бітний адрес) займає одну комірку пам'яті програм.
В мікроконтролерах AVR реалізована Гарвардська архітектура, яка характеризується розділеною пам'яттю програм та даних, кожна з яких має власну шину доступу. Така організація дозволяє одночасно працювати як з пам'яттю програм, так і з пам'яттю даних.[2, 12-13]
Основні характеристики мікроконтролера ATmega 328 подані у таблиці 1.2.
Таблиця 1.2 Основні характеристики мікроконтролера ATmega 328
Пам'ять |
||
1 |
2 |
|
Об'єм flash-пам'яті |
32 кб |
|
Об'єм SRAM-пам'яті |
2 кб |
|
Об'єм EEPROM-пам'яті |
1 кб |
|
Швидкість процесора та напруга живлення |
||
При частоті до 4 МГц |
1,8-5,5 В |
|
При частоті до 10 МГц |
2,7-5,5 В |
|
При частоті до 20 МГц |
4,5-5,5 В |
|
Споживаний струм |
||
Споживаний струм в режимі роботи |
0,2 мА(1 МГц, 1,8 В) |
|
Споживаний струм в режимі сну |
0,75 мкА |
|
Периферійні пристрої |
||
Кількість лічильників |
1 (реального часу з окремим генератором) |
|
Кількість таймерів |
2 восьмибітних, 1 шістнадцятибітний |
|
Загальна кількість портів |
23 |
|
Кількість ШІМ (PWM) виходів |
6 |
|
Кількість каналів АЦП(аналогові входи) |
6 |
|
Кількість апаратних USART(Serial) |
1 |
|
Кількість апаратних SPI |
1 Master/Slave |
|
Кількість апаратних I2C/SPI |
1 |
|
Розширення АЦП |
10 біт |
Даний мікроконтролер може виконувати наступні спеціальні функції:
· Скидання при включенні живлення і програмне розпізнавання зниження напруги живлення;
· Внутрішній калібрований генератор тактових імпульсів;
· Обробка внутрішніх та зовнішніх переривань;
· 6 режимів сну (знижене енергоспоживання і зниження шумів для більш точного перетворення АЦП).
1.2 Фоторезистор
Фоторезистор (рис.1.5) - резистор, опір якого залежить від яскравості світла, що падає на нього. У нашій моделі світлодіод горить, тільки якщо яскравість світла над фоторезистором менше певної, цю яскравість можна регулювати програмно. Фоторезистори використовуються в робототехніці як датчики освітленості. Вбудований в робота фоторезистор дозволяє визначати ступінь освітленості, визначати білі або чорні ділянки на поверхні і у відповідність з цим рухатися по лінії або вчиняти інші дії.
Опір фоторезистора залежить від світла, що потрапляє на нього. Використовуючи його у схемі у зв'язці зі звичайним резистором 4.7 кОм, ми отримуємо дільник напруги, в якому напруга проходить через фоторезистор, змінюється, залежно від рівня освітленості. Напругу з фоторезистора, ми подаємо на вхід АЦП Arduino. Там ми порівнюємо отримане значення з певним порогом і включаємо або вимикаємо світло діод, повертаємо в певну сторону сервопривід та виводимо на монітор дані.
Принципова схема дільника показана нижче(рис.1.6). Коли освітленість збільшується, опір фоторезистора падає і відповідно на виході подільника (і вході АЦП) напруга збільшується. Коли освітленість падає все навпаки.
Рис.1.5 Фоторезистор
Рис.1.6 Принципова схема дільника
1.3 Сервопривід
Сервопривід (також серводвигун, сервомеханізм) -- це пристрій в системах автоматичного регулювання або дистанційного керування, що за рахунок енергії допоміжного джерела здійснює механічне переміщення регулюючого органу відповідно до отримуваних від системи керування сигналів. Тобто, міняється положення регулюючого органу (важеля, кнопки, перемикача) -- потік матеріалу або енергії, що поступає на об'єкт дії, міняється і в результаті виконується дія на робочі машини або механізми, змінюється стан робочого об'єкта.
Сервопривід - допоміжний двигун для дистанційного автоматичного керування або регулювання машин, апаратів, закривання і відкривання засувок, клапанів тощо. Сервомотори виділяються у окрему групу моторів у зв'язку з тим, що, як правило, діапазон роботи ротора такого мотора менше одного повного оберту. Сервопривід буває електричним, гідравлічним і пневматичним. Основні характеристики: маса, динаміка двигуна, рівномірність руху, енергоефективність.
Сервопривід працює від імпульсів змінної тривалості, які отримує через сигнальний дріт. Коли тривалість імпульсів становить близько 1,5 мілісекунди, то сервопривід перебуває в нейтральному положенні (тобто у нього однаковий потенціал обертання в обидва напрями). Кут повороту сервоприводу залежить від тривалості імпульсу. Чим триваліший імпульс, тим швидше працює двигун. Коли сервопривід виконує команду переміщатися, то яка-небудь зовнішня сила, що при цьому спробує його спинити буде відчувати сильний спротив -- це і є та максимальна сила, яку витримуватиме сервопривід. Проте сервопривід не постійно підтримує вказане положення -- для цього йому необхідні імпульси, на які він чекає протягом 20 мс. Що стосується тривалості імпульсу, то якщо вона менше 1,5 мілісекунд -- сервопривід повертає вал на декілька градусів проти годинникової стрілки і намагається зафіксувати положення. Якщо ж вона більше, то навпаки -- за годинниковою стрілкою. У середньому для роботи сервоприводу необхідний діапазон тривалості імпульсу від 1 мс до 2 мс. Крім того, важливий параметр, що характеризує сервопривід -- це швидкість обертання (той час, за яке сервопривід переходить з одного положення в інше)
Головні частини сервоприводу -- це його двигун, елементи керування і передача. Крім того, в ньому є також дрібніші периферійні пристрої -- блокування, сигналізація, система включення/виключення, елементи зворотного зв'язку. Як правило, сервоприводи можуть працювати, на відміну від систем сельсин/давач -- сельсин/приймач, тільки від зовнішніх джерел енергії, оскільки потужності внутрішніх джерел енергії недостатньо для ефективного функціонування сервоприводу (дуже вже енергоємну роботу йому доводиться виконувати).
Рис 1.7 Сервопривід
1.4 LCD-монітор
Рідкокристалічний дисплей (РК-дисплей, РК; рідкокристалічний індикатор, РКІ; англ. Liquid crystal display, LCD) - плоский дисплей на основі рідких кристалів, а також пристрій (монітор, телевізор) на основі такого дисплея.
Прості прилади з дисплеєм (електронні годинники, телефони, плеєри, термометри та ін.) можуть мати монохромний або 2-5-кольоровий дисплей. Багатоколірне зображення формується за допомогою RGB-тріад.
Дисплей на рідких кристалах використовується для відображення графічної або текстової інформації в комп'ютерних моніторах (також в ноутбуках), телевізорах, телефонах, цифрових фотоапаратах, електронних книгах, навігаторах, планшетах, електронних перекладачах, калькуляторах, годинниках і т. п., а також у багатьох інших електронних пристроях.
LCD TFT (англ. Thin film transistor - тонкоплівковий транзистор) - різновид рідкокристалічного дисплея, в якому використовується активна матриця, керована тонкоплівковими транзисторами.
Екран LCD є масивом маленьких сегментів (пікселів), котрими можна маніпулювати для відображення інформації. LCD має кілька шарів, де ключову роль грають дві панелі, зроблені з вільного від натрію і дуже чистого скляного матеріалу, який називають субстратом або підкладкою. Проміжок між шарами заповнений тонким шаром рідкого кристалу. На панелях є борозенки, що надають їм спеціальної орієнтації. Борозенки розташовані паралельні між собою в межах кожної панелі, але борозенки однієї панелі перпендикулярні до борозенок іншої. Поздовжні борозенки утворюються внаслідок нанесення на скляну поверхню тонких плівок прозорого пластику, що потім спеціальним чином обробляється.
Борозенки орієнтують молекули рідкого кристалу однаково у всіх комірках. Молекули одного з типів рідких кристалів (нематиків) при відсутності напруги повертають вектори електричного (і магнітного) полів світлової хвилі на деякий кут у площині, перпендикулярній до напрямку поширення світлового променя. Нанесення борозенок на поверхню скла дозволяє забезпечити однаковий кут повороту площини поляризації для всіх комірок. Проміжок між панелями дуже тонкий.
Рисунок 1.8. LCD-монітор.
1.5 LED-світлодіод
LED або світлодіод є електроним джерелом світла, що зроблений з напівпровідника - діода. Коли струм подається на діод, він звільняє енергію у вигляді електролюмінесценції. Колір визначається властивістю забороненої зони напівпровідникового матеріалу.
Світлодіоди мають ряд переваг в порівнянні з традиційними джерелами світла, у тому числі більш низьке енергоспоживання, тривалий термін служби, малий розмір і швидке перемикання, але вони є відносно дорогими.
Основні характеристики на, які ви будете звертати увагу при виборі світлодіодів, це довжина хвилі і яскравістьі або сила світла.
Довжина хвилі світла визначає її колір. У видимій області спектра, синій становить близько 470nm (нанометрів), зелений 520-570нм, і червоний приблизно 630 нм. За чарвоним кольором, ми вступаємо інфрачервоний спектр, який невидимий для очей (але не для телевізора).
Яскравість світлодіода виражається в MCD (мілі-кандела). Типовий недорогий світлодіод може мати 10-20 mcd. Для більш яскравих світлодіодів цей показник доходить до 30 mcd. Зазвичай вони спеціально позначаються як "Ultrabright", "надяскраві" і т.д.
Максимальна яскравість певного кольору має відношення до вибору напівпровідникового матеріалу, який використовується у виробництві світлодіодів. Наприклад, InGaN або AlInGaP - матеріали, що використовуються дла виробноцтвасвітлодіодів високої яскравості. Форма світлодіода впливає на його яскравість і напрямок світла. Нижченаведені графіки орієнтовно показують залежність яскравості світлодіола від сили току та кута зору. Як правило, SMD світлодіоди мають широкий кут огляду (близько 120 градусів), а світлодіод з куполоподібною лінзою буде більш сфокусований.
Рисунок 1.9. LED-світлодіод.
Рисунок 1.10. Розміри LED-світлодіода
2. РОЗРОБКА СХЕМИ ЕЛЕКТРИЧНОЇ ФУНКЦІОНАЛЬНОЇ
2.1 Розробка функціональної схеми
Основним компонентом, на якому базується робота розроблюваної паркувальної систем, є мікроконтролер ATmega328 фірми Atmel, який розміщений на платформі Arduino Uno R3. Зв'язки основних вузлів системи можна побачити за допомогою функціональної схеми (рисунок 2.1).
Размещено на http://www.allbest.ru/
Рисунок 2.1 - Схема функціональна .
Система складається з таких основних вузлів: блоку живлення, мікроконтролера ATmega328, LED-світлодіоду, LCD-монітора, сервопривіду та фоторезистора.
Розроблений пристрій керування жалюзі працює наступним чином.
Коли світло падає на фоторезистор і його показник буде менше 400 одиниць, то буде вмикатися сервопривід, який відповідно повертаючись відкриє жалюзі, на LCD-моніторі буде написано `NIGHT' та ввімкнеться LED-світлодіод. Якщо кількість світла яке падає на фоторезистор буде більше 400 одиниць, то буде вмикатися сервопривід, який відповідно повертаючись закриє жалюзі, на LCD-моніторі буде написано `DAY' та вимкнеться LED-світлодіод.
2.2 Блок-схема алгоритму роботи пристрою
Алгоритм функціонування розроблюваного пристрою представлено на рисунку 2.2
Размещено на http://www.allbest.ru/
Рис. 2.2 Алгоритм функціонування розроблюваного пристрою
3. РОЗРОБКА ПРОГРАМНОЇ ЧАСТИНИ СИСТЕМИ
3.1 Середовище розробки програмної частини пристрою
Розробка програми для мікроконтролера проводилась у середовищі програмування Arduino IDE (рисунок 3.1).
Рисунок 3.1 Середовище розробки Arduino IDE
Arduino IDE це багатоплатформовий додаток на Java. Середовище розробки складається з вбудованого текстового редактора програмного коду, області повідомлень, вікна виведення тексту (консолі), панелі інструментів з кнопками часто використовуваних команд і декількох меню. Для завантаження програм, середовище розробки підключається до апаратної частини Arduino. Дане програмне забезпечення засноване на мові програмування Processing та спроектована для програмування новачками, не знайомими близько з розробкою програмного забезпечення. Мова програмування аналогічна мові Wiring. Строго кажучи, це C ++, доповнений деякими бібліотеками. Програми обробляються за допомогою препроцесора, а потім компілюється за допомогою AVR-GCC.[8]
Програма, написана в середовищі Arduino IDE, називається скетч. Скетч пишеться в текстовому редакторі, що має інструменти вирізки/вставки, пошуку/заміни тексту. Під час збереження та експорту проекту в області повідомлень з'являється пояснення, також можуть відображатися виниклі помилки. Вікно виведення тексту (консоль) показує повідомлення, що включають повні звіти про помилки та іншу інформацію. Кнопки панелі інструментів дозволяють перевірити і записати програму, створити, відкрити та зберегти скетч, відкрити моніторинг послідовної шини. На панелі інструментів розміщені наступні команди:
· Verify/Compile компіляція, перевірка програмного коду на помилки;
· Stop зупинка моніторингу послідовної шини;
· New створення нового скетчу;
· Open відкриття меню доступу до всіх скетчів блокноту. Відкривається натисканням в поточному вікні;
· Save зберігання скетчу;
· Upload to I/O Board компілює програмний код та завантажує його в пристрій Arduino.
· Serial Monitor відкриває моніторинг послідовної шини;
Додаткові команди згруповані в п'яти меню: File, Edit, Sketch, Tools, Help. Доступність меню визначається роботою, виконуваною в даний момент.
Меню Edit:
· Copy for Discourse копіює в буфер обміну підходящий для розміщення на форумі код скетчу з виділенням синтаксису;
· Copy as HTML копіює код скетчу в буфер обміну як HTML код, для розміщення на веб-сторінках.
Меню Sketch:
· Verify/Compile перевірка скетчу на помилки;
· Import Library добавляє бібліотеку в поточний скетч, вставляючи директиву #include в код скетчу;
· Show Sketch Folder відкриває папку, яка містить файл скетчу, на робочому столі;
· Add File… добавляє файл в скетч (файл буде скопійований з поточного місця розташування). Новий файл з'являється в новій закладці у вікні скетчу. Файл може бути видалений з скетчу за допомогою меню закладок.
Меню Tools:
· Auto Format оптимізує код, наприклад, вибудовує в одну лінію по вертикалі відкриваючі та закриваючі дужки та поміщає між ними твердження;
· Board вибір використовуваної платформи;
· Serial Port містить список послідовних пристроїв передачі даних (реальних та віртуальних) на комп'ютері. Список оновлюється автоматично кожного разу при відкритті меню Tools;
· Burn Bootloader дозволяє записати загружчик в мікроконтролер на платформі Arduino. Дана дія не потрібна в поточній роботі Arduino.
Середовищем Arduino IDE використовується принцип блокнота стандартне місце для зберігання програм (скетчів). Скетчі з блокнота відкриваються через команду Sketchbook з меню File та кнопкою Open на панелі інструментів. При першому запуску програми, автоматично створюється директорія для блокнота. Розташування блокнота змінюється через діалогове вікно Preferences.
Бібліотеки додають додаткову функціональність скетчам, наприклад, при роботі з апаратною частиною або при обробці даних. Для використання бібліотеки необхідно вибрати команду Import Library з меню Sketch. Одна або кілька директив #include будуть розміщені на початку коду скетчу з подальшою компіляцією бібліотек і разом зі скетчем. Завантаження бібліотек вимагає додаткового місця в пам'яті Arduino. Невикористовуванні бібліотеки можна видалити з скетчу прибравши директиву #include.
Моніторинг послідовної шини відображає дані, які відправляються в платформу Arduino. Для відправлення даних необхідно ввести текст та натиснути кнопку Send або Enter. Потім вибирається швидкість передачі з випадаючого списку, відповідна значенню Serial.begin в скетчі.
3.2 Основні компоненти розробки програмної частини системи
В роботі я взяв за основу фоторезистор, який зчитуватиме рівень світла, а також використав діод, монітор та сервопривід. Для того, щоб об'єднати їхню роботу на основі Arduino, потрібно за допомогою програмних кодів мови програмування Processing/Wiring описати принципи роботи та взаємодії цих модулів.
Для роботи з сервоприводом потрібно добавити бібліотеку servo.h. Так як ця бібліотека не встановлюється разом з програмним пакетом, потрібно додатково завантажувати з зовнішнього ресурсу. Після того як бібліотека була завантажена нам потрібно імпортувати її в скетч. Виконати це можна за допомогою меню Sketch, пункту Import library, потрібно знайти місце знаходження бібліотеки і натиснути Add Library.
Бібліотека дозволяє максимально продуктивно працювати з Сервоприводом.
Щоб задати значення портів нам потрібно створити myservo; , визначивши директиви порту для його входу
myservo.attach(9);
Також нам було потрібно визначити порти для фото резистора та діода за допомогою деректив:
Для світло діода:
int ledPin=8;
Для фото резистора:
int potpin = 0; // аналоговий контакт використовується для потенціометра
int val;// змінна для читання значення з аналогового контакту
int sensorPin = A0; // встановлюємо вхід для для АЦП
unsigned int sensorValue = 0; // цифрове значення фоторезистора
Щоб визначити входи монітора використаємо:
#define PIN_SCE 7
#define PIN_RESET 6
#define PIN_DC 5
#define PIN_SDIN 4
#define PIN_SCLK 3
Далі пиведемо також значення:
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
І підключимо бібліотек яка визначатиме координати і позицію символу на екрані:
static const byte ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
………
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f >
};
Далі оголошуємо запис, очищення та порядок виведення даних тобто те як буде виводитись символ на дисплей:
void LcdInitialise(void)
{
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_RESET, HIGH);
LcdWrite(LCD_C, 0x21 ); // LCD Extended Commands.
LcdWrite(LCD_C, 0xB9 ); // Set LCD Vop (Contrast). контраст: подбираем, обычно в пределах 0xA0...0xBF
LcdWrite(LCD_C, 0x04 ); // Set Temp coefficent. //0x04
LcdWrite(LCD_C, 0x14 ); // LCD bias mode 1:48. //0x13
LcdWrite(LCD_C, 0x0C ); // LCD in normal mode.
LcdWrite(LCD_C, 0x20 );
LcdWrite(LCD_C, 0x0C );
}
void LcdString(char *characters)
{
while (*characters)
{
LcdCharacter(*characters++);
}
}
void LcdWrite(byte dc, byte data)
{
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
За допомогою функції Serial.print() ми маємо можливість відображати значення повороту сервоприводу та фоторезистора на серійному моніторі. Тому ініціалізуємо швидкість передачі даних і записуємо у функції void setup() наступне:
Serial.print(sensorValue, DEC); // вивід даних з фоторезистора (0-1024)
Serial.println(" "); // поворот каретки
delay(0);
Після цього звертаємось до методу begin бібліотеки DHT:
dht.begin();
Основна дія відбувається в функції циклу void loop().Спочатку за допомогою фоторезистора зчитаємо значення зчитаємо значення світла.
sensorValue = analogRead(sensorPin); // зчитуєм значення з фоторезистора // масштабуємо значення для використання сервоприводу (значення між 0 і 90)
myservo.write(val); // встановлюємо сервопривід у позицію, відповідну промасштабованому значенню
Настурним кроком ми перевіримо перевіримо кількість світла . Яка при значенні менше 400 виконає:
if(sensorValue<400)
{
val = map(val, 0, 1023, 0, 90); // масштабуємо значення для використання сервоприводу (значення між 0 і 90)
myservo.write(90); // встановлюємо сервопривід у позицію, відповідну промасштабованому значенню
digitalWrite(8,HIGH);
LcdInitialise();
LcdString(" Night ");
delay(500);
}
Якщо ж значення більше 400 то:
else
{
digitalWrite(8,LOW);
val = map(val, 0, 1023, 0, -90); // масштабуємо значення для використання сервоприводу (значення між 0 і 90)
myservo.write(-90); // встановлюємо сервопривід у позицію, відповідну промасштабованому значенню
LcdInitialise();
LcdString(" Day ");
delay(500);
ВИСНОВКИ
В процесі розробки курсового пректу було описано і складено мікроконтроллерний пристрій керування жалюзі. Даний пристрій складено на основі контроллера Arduino Uno який базований на мікроконтроллері ATmega328 фірми ATmel який виконує найголовніші функції платформи.
Також до складу пристрою керування жалюзі входять:
· Фоторезистор - зчитує значення кількості світла.
· Сервопривід - який буде відкривати чи закривати жалюзі відповідно до значень і сигналів з фото резистора.
· LCD монітор - на якому буде виводитись значення `DAY' чи `NIGHT' відповідно до того яка буде кількість світла котра падає на фоторезистор.
· LED світло діод - який буде вмикатись чи вимикатись відповідно до того які значення зчитав фоторезистор.
Пристрій керування жалюзі призначений для того, щоб коли фоторезистор зчитає значеня, що кількість світла буде менша 400 одиниць то відкриються жалюзі за допомогою сервопривода, на монітор виведе значення `NIGHT' тобто ніч та ввімкнеться світло діод. Коли ж значеня з фото резистора буде більше 400 одиниць то сервопривід закриє жалюзі, світловод вимкнеться і на монітор виведеться значення `DAY' тобто день.
Даний пристрій можна широко використовувати в побуті чи на підприємствах, але перед тим його потрібно трохи модифікувати і вже тоді можна випускати на виробництво.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Uno плати Arduino.[Електронний ресурс] / Режим доступу: http://arduino.ua/ru/hardware/Uno Назва з титул. екрану.
2. Евстифеев А.В. «Микроконтроллеры AVR семейства Mega» - Москва - Издательский дом «Додэка - ХХI», 2007.-595с.
3. Микроконтроллеры AVR: Характеристики микроконтроллера ATmega328.[Електронний ресурс] / Режим доступу: http://avrprog.blogspot.com/2013/03/atmega328p.html Назва з титул. екрану.
4. Среда разработки Arduino. [Електронний ресурс] / Режим доступу: http://arduino.ru/Arduino_environment Назва з титул. екрану.
5. Ultrasonic Ranging Module HC - SR04 [Електронний ресурс] / Режим доступу: www.micropik.com/PDF/HCSR04 Назва з титул. екрану.
6. New Ping Library [Електронний ресурс] / Режим доступу: http://playground.arduino.cc/Code/NewPing Назва з титул. екрану.
Додаток А
Текст програми «Пристрою закриття жалюзі»
#include <Servo.h>
#define PIN_SCE 7
#define PIN_RESET 6
#define PIN_DC 5
#define PIN_SDIN 4
#define PIN_SCLK 3
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
static const byte ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c Ґ
,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e <
,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f >
};
void LcdCharacter(char character)
{
LcdWrite(LCD_D, 0x00);
for (int index = 0; index < 5; index++)
{
LcdWrite(LCD_D, ASCII[character - 0x20][index]);
}
LcdWrite(LCD_D, 0x00);
}
void LcdClear(void)
{
for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
{
LcdWrite(LCD_D, 0x00);
}
}
void LcdInitialise(void)
{
pinMode(PIN_SCE, OUTPUT);
pinMode(PIN_RESET, OUTPUT);
pinMode(PIN_DC, OUTPUT);
pinMode(PIN_SDIN, OUTPUT);
pinMode(PIN_SCLK, OUTPUT);
digitalWrite(PIN_RESET, LOW);
digitalWrite(PIN_RESET, HIGH);
LcdWrite(LCD_C, 0x21 ); // LCD Extended Commands.
LcdWrite(LCD_C, 0xB9 ); // Set LCD Vop (Contrast). контраст: подбираем, обычно в пределах 0xA0...0xBF
LcdWrite(LCD_C, 0x04 ); // Set Temp coefficent. //0x04
LcdWrite(LCD_C, 0x14 ); // LCD bias mode 1:48. //0x13
LcdWrite(LCD_C, 0x0C ); // LCD in normal mode.
LcdWrite(LCD_C, 0x20 );
LcdWrite(LCD_C, 0x0C );
}
void LcdString(char *characters)
{
while (*characters)
{
LcdCharacter(*characters++);
}
}
void LcdWrite(byte dc, byte data)
{
digitalWrite(PIN_DC, dc);
digitalWrite(PIN_SCE, LOW);
shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
digitalWrite(PIN_SCE, HIGH);
}
Servo myservo; // створити об'єкт servo для керування сервоприводом
int ledPin=8;
int potpin = 0; // аналоговий контакт використовується для потенціометра
int val;// змінна для читання значення з аналогового контакту
int sensorPin = A0; // встановлюємо вхід для для АЦП
unsigned int sensorValue = 0; // цифрове значення фоторезистора
void setup()
{
myservo.attach(9); // приєднати сервопривід на контакті 9 до об'єкту servo
pinMode(8, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin); // зчитуєм значення з фоторезистора // масштабуємо значення для використання сервоприводу (значення між 0 і 90)
myservo.write(val); // встановлюємо сервопривід у позицію, відповідну промасштабованому значенню
if(sensorValue<400)
{
val = map(val, 0, 1023, 0, 90); // масштабуємо значення для використання сервоприводу (значення між 0 і 90)
myservo.write(90); // встановлюємо сервопривід у позицію, відповідну промасштабованому значенню
digitalWrite(8,HIGH);
LcdInitialise();
LcdString(" Night ");
delay(500);
}
else
{
digitalWrite(8,LOW);
val = map(val, 0, 1023, 0, -90); // масштабуємо значення для використання сервоприводу (значення між 0 і 90)
myservo.write(-90); // встановлюємо сервопривід у позицію, відповідну промасштабованому значенню
LcdInitialise();
LcdString(" Day ");
delay(500);
Serial.print(sensorValue, DEC); // вивід даних з фоторезистора (0-1024)
Serial.println(" "); // поворот каретки
delay(0);
}
}
Размещено на Allbest.ru
Подобные документы
Створення схеми електричної принципової годинника-будильника-термометра з ІЧ ПК. Призначення проектуємого пристрою. Розробка структурнї та електричної принципової схеми пристрою та програми тестування роботи пристрою, розрахунок надійності його роботи.
курсовая работа [935,6 K], добавлен 23.03.2009Створення схеми електричної принципової МР-3 програвача – приставки до ПК, структурної та загальної схеми. Призначення проектуємого пристрою. Принцип роботи окремих ВІС. Розробка програми тестування роботи пристрою, розрахунок надійності його роботи.
курсовая работа [527,4 K], добавлен 24.03.2009Cтворення системи для впорядковування інформації про файли, що зберігаються на компакт-дисках або інших знімних носіях. Загальні вимоги до розробки. Технології розробки Windows-додатків. Опис функціональних можливостей і програмної реалізації системи.
дипломная работа [891,7 K], добавлен 25.10.2012Android, iOS та Windows як основні платформи для розробки додатків для мобільних пристроїв. Перелік вимог до програмної системи. Основні вимоги, які є критичними для працездатності мобільного додатку. Аналіз основних напрямків розвитку системи.
курсовая работа [1,1 M], добавлен 19.08.2016Дослідження етапів розробки програмної реалізації криптографічного алгоритму RC5. Опис об'єкту, що потребує захисту: операційне середовище, тип програмного забезпечення. Блок-схема алгоритму функціонування програми криптозахисту. Листінг тесту програми.
курсовая работа [4,4 M], добавлен 28.10.2010Створення алгоритму програмної моделі розкладу в учбовому закладі для ефективного вирішення завдань автоматичного складання розкладу, шляхом підбору найбільш оптимальних варіантів. Шляхи реалізації розробленого алгоритму в середовищі Mathemetica 5.0.
дипломная работа [5,0 M], добавлен 25.10.2012Етапи розробки ультразвукового вимірювача щільності, який містить у собі процесорний блок, блок живлення, блоки конверторів інтерфейсу RS-485, мікросхему перетворювача часу у цифровий код, ультразвукові датчики, блок пам’яті, рідкокристалічний індикатор.
дипломная работа [717,1 K], добавлен 14.08.2013Опис основних етапів розробки архітектури програмної системи: структурування системи, моделювання управління, декомпозиція підсистем. Ознайомлення із кроками створення інтерфейсу користувачів як однієї із фаз проектування програмного забезпечення.
реферат [20,7 K], добавлен 24.11.2010Вибір первинних вимірювальних перетворювачів та виконавчих механізмів, мікропроцесорних засобів автоматизації. Розробка блок-схеми системи автоматичного керування, програми функціонування вибраних засобів, принципових електричних схем зовнішніх з’єднань.
курсовая работа [176,5 K], добавлен 08.03.2015Опис великої інтегральної схеми пристрою множення. Аналіз розв’язків поставленої задачі, розробка принципової електричної схеми, логічної моделі і тесту перевірки, розрахунок швидкодії. Тестування з використанням пакету прикладних програм OrCAD 9.1.
курсовая работа [5,0 M], добавлен 22.02.2010