Осциллограф на плате Arduino

Технология разработки программного обеспечения. Процесс управления жизненным циклом приложений, характеристика и особенности Arduino, распиновка микроконтроллера Atmega. Модель схемы делителя напряжения в среде Multisim. Описание отладки платы Arduino.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.10.2016
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования Республики Беларусь

Учреждение образования «Полоцкий государственный университет»

Радиотехнический факультет

Кафедра радиоэлектроники

КурсоВой проект

По курсу:

«Технология проектирования программного обеспечения информационных систем»

на тему: Осциллограф на плате Arduino

Разработал:

Чертков В.М.

Новополоцк, 2016 г.

Содержание

Техническое задание

Введение

1. Разработка структурной схемы

2. Ознакомление с Arduino

3. Расчет делителя напряжения

4. Установка ПО для Arduino

5. Отладка платы Arduino

Заключение

Список литературы

Приложение

Перечень элементов

Конечная принципиальная схема

Код программы

Техническое задание

Разработать осциллограф на базе arduino uno с передачей осциллограмм в ПК по кабелю USB(A-B).

Разработанный осциллограф должен удовлетворять следующим характеристикам:

1. Количество каналов:n

2. Полоса пропускания: 20 кГц

3. Частота дискретизации в реальном времене:

Одноканальный режим - 20 Гц … 20кГц

4. Максимальная эквивалентная частота дискретизации: 20 кГц

Введение

Технология разработки программного обеспечения(ПО) представляет собой комплекс организационных мер, операций и приемов, направленных на разработку программных продуктов высокого качества в рамках отведенного бюджета и в срок. Технологии включают методики, методологии, средства и процедуры разработки ПО.

В настоящее время существует достаточно много различных методик разработки программного обеспечения. Методики различаются используемой моделью жизненного цикла ПО и уровнем формализма при его создании. Жизненный цикл программного обеспечения (ПО) - период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации.

Классический жизненный цикл определяется каскадной или водопадной моделями, в которых предполагается последовательное выполнение этапов создания ПО: анализ, проектирование, разработка, тестирование и сопровождение.

По степени формализма методологии отличаются количеством используемых процессов и создаваемых артефактов (документов, отчетов), а также формальности процедур рецензирования.

Методики призваны обеспечить целенаправленный процесс управления действиями всех заинтересованных лиц в проекте создания программного обеспечения: заказчиков, пользователей, разработчиков и руководства. Для эффективного управления процессом разработки программных систем необходимо сформировать подход, который обеспечивал:

· управление и мониторинг деятельности команды проекта;

· распределение работ между участниками проекта;

· формирование перечня требований к разрабатываемым элементам проекта и документации;

· определение набора критериев качества программного продукта.

Существующие методологии и методики разработки ПО предполагают выполнение определенных процессов на всех этапах жизненного цикла программной системы. Процессы создания ПО должны соответствовать определенным требованиям для обеспечения качества выходного продукта.

Улучшению процессов создания программного обеспечения служит методология управления жизненным циклом приложений (ALM - applicationlifecyclemanagement), которая представляет собой концепцию управления программным проектом на всех этапах его жизни. ALMопределяет непрерывный процесс управления жизненным циклом приложения по его управлению, развитию и обслуживанию. ПринципыALM реализуются ИТ-решениями различных вендоров.

Решение HP ALM onSaaS компании Hewlett-Packard способствует ускорению процессов консолидации; в его рамках доступны услуги команды экспертов по платформе HP ALM, имеется упрощенная система управления, встроенная возможность осуществлять масштабирование потребованию, а также предоставляется поддержка, необходимая для того, чтобы сосредоточиться на инновациях.

С помощью решений Open ALM от компании Borland организации смогут эффективно использовать свои существующие ресурсы и средства для разработки. Это поможет достигнуть прозрачности, контроля и дисциплинированности на всем протяжении цикла создания ПО.

Компания IBM для управления жизненным циклом приложений предлагает решение IBM® Rational® ClearQuest®. ИТ-решение поддерживает рационализированный, динамичный процесс разработки приложений, который одновременно является ориентированным на роли и управляемым процессами. Проекты определяют контекст выполнения заданий; их безопасность можно обеспечить через определениеполитик безопасности и ролей. Работа может быть распределена между членами коллектива, которые находятся в одном месте или в разных местах. Кроме того, работа является трассируемой до исходного запроса и до проекта, который реализуется по этому запросу.

Компания Microsoft предлагает набор средств в Visual Studio 2012 и объединения этих средств с Visual Studio Team Foundation Server для управления жизненным циклом приложений. В основе решений Microsoft по управлению жизненным циклом приложений лежат следующие принципы: продуктивность, интеграция и расширяемость. Продуктивность достигается обеспечением командной работы над проектом и управлением сложностью. Интеграция реализуется наличием полнофункциональных возможностей в единой среде проектирования, разработки, тестировании и сопровождении программного приложения, а также прозрачностью процесса создания ПО для всех участников проекта. Расширяемость поддерживается интегрированной средой разработки (IDE) и открытостью платформы для расширения и создания собственных инструментов, которые интегрируются с Team Foundation Server.

После краткого введения в сам предмет следует немного обратиться к теории разрабатываемой аппаратуры.

Основное предназначение осциллографа -- изобразить форму измеряемого электрического сигнала (его напряжения), и он становится относительно простым в использовании прибором уже после первого с ним знакомства (хотя куча всяких ручек и кнопочек на нем может вогнать в ступор кого угодно). Фактически, осциллограф рисует нам двухмерный график зависимости напряжения от времени, где по горизонтальной оси X мы наблюдаем время, по вертикальной Y -- напряжение. Или как еще говорят, осциллограф делает временную развертку сигнала. Интенсивность (или яркость) сигнала на дисплее можно представить в виде третьей оси Z.

Рисунок 1 - трехмерная временная развертка сигнала

Осциллограф -- это измерительный прибор, который позволяет:

· Определить временные параметры и значения напряжения сигнала (его амплитуду)

· Замерив временные характеристики сигнала, можно вычислить его частоту

· Наблюдать сдвиг фаз, который происходит при прохождении различных участков цепи

· Наблюдать искажение сигнала, вносимые каким-то участком цепи

· Можно выяснить постоянную (DC) и переменную (AC) составляющие сигнала

· Можно выяснить соотношение сигнал/шум и является ли шум стационарным, или же он изменяется во времени

При помощи многоканального осциллографа можно одновременно наблюдать сигналы в различных точках схемы и смотреть, как они между собой соотносятся. Например, на входе и выходе усилителя. Мы можем посмотреть сигнал на входе и сигнал на выходе, выяснить какие искажения в форму сигнала вносит наш усилитель, как изменилась его амплитуда, какова временная задержа (сдвиг фаз). Как правило, увеличение количества входов осциллографа значительно сказывается на его стоимости. На практике, при разработке, отладке, настройке или ремонте цифровых и аналоговых устройств оптимальным, считают, наличие в своем арсенале двухканального осциллографа.

1. Разработка структурной схемы

В данной курсовой работе будет разработан осциллограф на плате arduino uno. Как видно из рисунка, структурная схема состоит из малого количества блоков. Это обусловленно тем,что все вычисления и работа происходят на самой плате arduino.

Рисунок 2 - структурная схема устройства

По схеме видно,что изучаемый сигнал приходит на плату,на практике это будет осуществляться с помощью двух щупов, обрабатывается на плате и передается на ПК, уже в компьютере посредствам специальной программы на экране выводится графическое изображение изучаемого сигнала.

В принципе этого достаточно для получения данных об определенных сигналах, но целесообразно добавить еще один блок в структурную схему,а именно блок делителей напряжения.Это необходимо для улучшения характеристик разрабатываемого осциллографа.

Сама плата arduino не может работать с напряжениями превышающими 5 вольт, если на ее вход подается напряжение выше допустимого,то срабатывает защита и плата автоматически выключается,чтобы не сгореть и не испортить USB вход компьютера. Однако на практике часто встречаются сигналы напряжения которых могут превышать 5 вольт,поэтому разумно будет добавить блок с делителями напряжений как показано на рисунке

Рисунок 3 - конечная структурная схема устройства

Блок делителей напряжения (БДН) будет содержать несколько аналоговых делителей,что позволит увеличить входное напряжение, выбираться коэффициент деления будет с помощью переключателя установленного на блоке.

2. Ознакомление с Arduino

Рисунок 4 - вид платы Arduino UNO

Arduino -- аппаратная вычислительная платформа, основными компонентами которой являются простая плата ввода-вывода и среда разработки на языке Processing/Wiring. Arduino может использоваться как для создания автономных интерактивных объектов, так и подключаться к программному обеспечению, выполняемому на компьютере (например, Adob Flash, Processing, Max (англ.), Pure Data,SuperCollider. Рассылаемые в настоящее время версии могут быть заказаны уже распаянными. Информация об устройстве платы (рисунокпечатной платы) находится в открытом доступе и может быть использована теми, кто предпочитает собирать платы самостоятельно. Микроконтроллеры ATmega328 дёшевы и стоят около 10$.

Проект Arduino был удостоен почётного упоминания при вручении призов Prix Ars Electronica 2006 в категории Digital Communities

Интегрированная среда разработки Arduino -- это кроссплатформенное приложение на Java, включающее в себя редактор кода, компилятор и модуль передачи прошивки в плату.

Плата Arduino состоит из микроконтроллера Atmel AVR (ATmega328P и ATmega168 в новых версиях и ATmega8 в старых), а также элементов обвязки для программирования и интеграции с другими схемами. На многих платах присутствует линейный стабилизатор напряжения +5В или +3,3В. Тактирование осуществляется на частоте 16 или 8 МГц кварцевым резонатором (в некоторых версияхкерамическим резонатором). В микроконтроллер предварительно прошивается загрузчик BootLoader, поэтому внешний программатор не нужен.

Рисунок 5 - распиновка микроконтроллера Atmega 328

На концептуальном уровне все платы программируются через RS-232 (последовательное соединение), но реализация этого способа отличается от версии к версии. Плата Serial Arduino содержит простую инвертирующую схему для конвертирования уровней сигналов RS-232 в уровни ТТЛ, и наоборот. Текущие рассылаемые платы, например, Diecimila, программируются через USB, что осуществляется благодаря микросхеме конвертера USB-to-Serial FTDI FT232R. В версии платформы Arduino Uno в качестве конвертера используется микроконтроллер Atmega8 в SMD-корпусе. Данное решение позволяет программировать конвертер так, чтобы платформа сразу определялась как мышь, джойстик или иное устройство по усмотрению разработчика со всеми необходимыми дополнительными сигналами управления. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется подключение отдельной платы USB-to-Serial или кабеля.

Платы Arduino позволяют использовать большую часть I/O выводов микроконтроллера во внешних схемах. Например, в плате Diecimila доступно 14 цифровых входов/выходов, 6 из которых могут выдавать ШИМ сигнал, и 6 аналоговых входов. Эти сигналы доступны на плате через контактные площадки или штыревые разъемы. Также доступны несколько видов внешних плат расширения, называемых «англ. shields» (дословно: «щиты»), которые присоединяются к плате Arduino через штыревые разъёмы. Интегрированная среда разработки Arduino -- это кроссплатформенное приложение на Java, включающее в себя редактор кода, компилятор и модуль передачи прошивки в плату.

Среда разработки основана на языке программирования Processing и спроектирована для программирования новичками, не знакомыми близко с разработкой программного обеспечения. Язык программирования аналогичен используемому в проекте Wiring. Строго говоря, это C++, дополненный некоторыми библиотеками. Программы обрабатываются с помощью препроцессора, а затем компилируется с помощью AVR-GCC.

Среда разработки Arduino состоит из встроенного текстового редактора программного кода, области сообщений, окна вывода текста(консоли), панели инструментов с кнопками часто используемых команд и нескольких меню. Для загрузки программ и связи среда разработки подключается к аппаратной части Arduino.

Программа, написанная в среде Arduino, называется скетч. Скетч пишется в текстовом редакторе, имеющем инструменты вырезки/вставки, поиска/замены текста. Во время сохранения и экспорта проекта в области сообщений появляются пояснения, также могут отображаться возникшие ошибки. Окно вывода текста(консоль) показывает сообщения Arduino, включающие полные отчеты об ошибках и другую информацию. Кнопки панели инструментов позволяют проверить и записать программу, создать, открыть и сохранить скетч, открыть мониторинг последовательной шины.

3. Расчет делителя напряжения

Для того, чтобы получить из исходного напряжения лишь его часть используется делитель напряжения. Это схема, строящаяся на основе пары резисторов.

Рисунок 6 - электрическая схема делителя напряжения

В примере, на вход подаются стандартные 9 В. Но какое напряжение получится на выходе Vout?

Ток, протекающий через R1 и R2 одинаков пока к выходу Vout ничего не подключено. А суммарное сопротивление пары резисторов при последовательном соединении:

(5.1)

Таким образом, сила тока протекающая через резисторы:

(5.2)

Теперь, когда нам известен ток в R2, рассчитаем напряжение вокруг него:

(5.3)

Или если отавить формулу в общем виде:

(5.4)

Так с помощью пары резисторов мы изменили значение входного напряжения с 9 до 5 В. Это простой способ получить несколько различных напряжений в одной схеме, оставив при этом только один источник питания.

Для большей наглядности соберем простейшую схему делителя в программе multisim и продемонстрируем ее работу.

Рисунок 7 - модель схемы делителя напряжения в среде Multisim

Выше представленна схема делителя напряжения на 2.

На вход делителя поступает переменное напряжение частотой 60 Гц и уровнем в 120 В.

Как видно из осциллограм на выходе делителя мы получаем напряжение поделенное на 2,что и требовалось доказать.

Рисунок 8 - осциллограммы напряжений на входе/выходе устройства

Для разрабатываемого осциллографа спроектируем делитель напряжений с переменным коэфициентом деления.

Возьмем стандартные коэффициенты деления в 1, 2, 10 и 50 раз.

Для большего удобства один резистор в схеме оставим постоянным

R4=1кОм. (5.5)

Подберем значения для остальных резисторов,исходя из нужного нам коэффициента деления.

; (5.6)

R1=1кОм; (5.7)

; (5.8)

R2=9кОм; (5.9)

; (5.10)

R3=49кОм. (5.11)

Смоделируем схему в мультисиме и проверим ее работу:

Рисунок 9 - модель конечной схемы делителя напряжения в среде Multisim

Коэффициент деления выбирается с помощью переключения аналоговых ключей.

В схеме так же установлен датчик наличия напряжения. Он изготовлен из светодиода и последовательно подключенного резистора. Из инженерного опыта выбираем значение резистора равным 220 Ом.

Рисунок 10 - осциллограмма напряжения сигнала с коэффициентом деления равным 1

Рисунок 11 - осциллограмма напряжения сигнала с коэффициентом деления равным 2

Рисунок 12 - осциллограмма напряжения сигнала с коэффициентом деления равным 10

Рисунок 13- осциллограмма напряжения сигнала с коэффициентом деления равным 50

4. Установка ПО для Arduino

· Подключить плату и подождите, пока Windows начнет процесс установки драйвера. Через некоторое время, несмотря на все её попытки, процесс закончится безрезультатно.

· Нажать на кнопку ПУСК и откройте Панель управления.

· В панели управления перейти на вкладку Система и безопасность (System and Security). Затем выберите Система. Когда откроется окно Система, выберать Диспетчер устройств (Device Manager).

· Обратить внимание на порты (COM и LPT). Вы увидите открытый порт под названием «Arduino UNO (COMxx)».

· Щелкнуть на названии «Arduino UNO (COMxx)» правой кнопкой мышки и выберать опцию «Обновить драйвер» (Update Driver Software).

· Нажать "Browse my computer for Driver software".

· Для завершения найдите и выберите файл драйвера для Uno - «ArduinoUNO.inf», расположенный в папке Drivers программного обеспечения для Arduino (не в подкаталоге «FTDI USB Drivers»).

· На этом Windows закончит установку драйвера.

5. Отладка платы Arduino

Плата Arduino обладает функцией analogRead которая позволяет считывать входные значения напряжения с указанного аналогово порта. Пользуясь данной функцией будем реализовывать осциллограф.

Для этого будем считывать данные с аналогового порта Arduino и записывать их в последовательный (COM) порт. А уже из последовательно порта их будет принимать программа на компьютере и строить график сигнала. arduino multisim программный плата

Код для Arduino будет совсем простой:

Рисунок 14- код прошивки платы Arduino.

Подключившись к порту, и начав замерять сигнал с помощью щупов мы увидим значения на подобии приведенных ниже:

Рисунок 15- результаты полученные в ходе выполнения программы Arduino

Осталось только написать программу для превращения данных из последовательного порта в график на основе программы построения графиков функций:

Graph.pyw (http://purepython.narod.ru/tkinter.html)

Для работы потребуется Python и библиотека:

pySerial - собственно сама библиотека для работы с COM-портом (для её работы под Windows требуется pyWin32)

собственно работа с COM-портом из данной библиотеки крайне проста.В итоге, получается, что при нажатии на кнопку «Serial» скрипт считывает 200 значений с COM-порта и строит по ним график.

Рисунок 16 - реализация одноканального осциллографа на плате Arduino.

Так реализовывается одноканальный осциллограф.

Код программы приведен в приложении. Запустив программу и подав сигналы на щупы получаем осциллограммы, данная программа написана для шестиканального осциллографа.

Рисунок 17- реализация шестиканального осциллографа на плате Arduino.

Если посмотреть код скетча -- увидим, что Arduino работает с COM-портом на скорости 38400 бод для передачи байта по протоколу RS-232 используется 10 бит (стартовый бит, 8 бит данных, бит чётности (не используется), стоповый бит)

Заключение

Существует множество микроконтроллеров и платформ для осуществления «physical computing». Parallax Basic Stamp, Netmedia's BX-24, Phidgets, MIT's Handyboard и многие другие предлагают схожую функциональность. Все эти устройства объединяют разрозненную информацию о программировании и заключают ее в простую в использовании сборку. Arduino, в свою очередь, тоже упрощает процесс работы с микроконтроллерами, однако имеет ряд преимуществ перед другими устройствами для преподавателей, студентов и любителей:

Низкая стоимость - платы Arduino относительно дешевы по сравнению с другими платформами. Самая недорогая версия модуля Arduino может быть собрана в ручную, а некоторые даже готовые модули стоят меньше 50 долларов.

Кросс-платформенность - программное обеспечение Arduino работает под ОС Windows, Macintosh OSX и Linux. Большинство микроконтроллеров ограничивается ОС Windows.

Простая и понятная среда программирования - среда Arduino подходит как для начинающих пользователей, так и для опытных. Arduino основана на среде программирования Processing, что очень удобно для преподавателей , так как студенты работающие с данной средой будут знакомы и с Arduino.

Программное обеспечение с возможностью расширения и открытым исходным текстом - ПО Arduino выпускается как инструмент, который может быть дополнен опытными пользователями. Язык может дополняться библиотеками C++. Пользователи, желающие понять технические нюансы, имеют возможность перейти на язык AVR на котором основан C++. Соответственно, имеется возможность добавить код из среды AVR-C в программу Arduino.

Аппаратные средства с возможностью расширения и открытыми принципиальными схемами - микроконтроллеры ATMEGA8 и ATMEGA168 являются основой Arduino. Схемы модулей выпускаются с лицензией Creative Commons, а значит, опытные инженеры имеют возможность создания собственных версий модулей, расширяя и дополняя их. Даже обычные пользователи могут разработать опытные образцы с целью экономии средств и понимания работы.

В данном курсовом проекте рассказывается в общем про Arduino , рассказывается про среды разработки и в итоге реализуется простой осциллограф.

Список литературы

1. Лаврентьев Б.Ф.

«Схемотехника электронных средств. Уч. пособ. 2010 год.»

2. Амосов В.В.

«Схемотехника и средства проектирования цифровых устройств. 2007 год.»

3. Чарльз Платт

«Электроника для начинающих 2012 год.»

4. В. Эванс

«Ардуино Блокнот программиста 2009 год.»

Приложение

Код программы

import processing.serial.*;

Serial port; // Create object from Serial class

int valA;

int valB;

int valC;

int valD;

int valE;

int valF;

// this should have been some kind of 2-diminsional array, I guess, but it works.

int[] valuesA;

int[] valuesB;

int[] valuesC;

int[] valuesD;

int[] valuesE;

int[] valuesF;

PFont fontA;

PFont fontB;

void setup()

{

// make sure you have these fonts made for Processing. Use Tools...Create Font.

// "fontA" is a 48 pt font of some sort. It's what we use to show the "now" value.

fontA = loadFont("CourierNewPSMT-48.vlw");

// "fontB" is a 14 pt font of some sort. It's what we use to show the min and max values.

fontB = loadFont("CourierNewPSMT-14.vlw");

// I wouldn't change the size if I were you. There are some functions that don't use

// the actual sizes to figure out where to put things. Sorry about that.

size(550, 600);

// Open the port that the board is connected to and use the same speed

// anything faster than 38.4k seems faster than the ADC on the Arduino can keep up with.

// So, if you want it to be smooth, keep it at or below 38400. 28800 doesn't work at all,

// I do not know why. If you turn on smooth() you need to drop the rate to 19.2k or lower.

// You will probably have to adjust Serial.list()[1] to get your serial port.

port = new Serial(this,"COM1", 38400); // Serial.list()[0]

// These are 6 arrays for the 6 analog input channels.

// I'm sure it could have just as well been a 2d array, but I'm not that familiar

// with Processing yet and this was the easy way out.

valuesA = new int[width-150];

valuesB = new int[width-150];

valuesC = new int[width-150];

valuesD = new int[width-150];

valuesE = new int[width-150];

valuesF = new int[width-150];

// the -150 gives us room on the side for our text values.

// this turns on anti-aliasing. max bps is about 19.2k.

// uncomment out the next line to turn it on. Personally, I think it's better left off.

//smooth();

}

int getY(int val)

{

// I added -40 to this line to keep the lines from overlapping, to

// keep the values within their gray boxes.

return (int)(val / 1023.0f * (height-40)) - 1;

}

void draw()

{

String decoder = "";

while (port.available() >= 3)

{

// read serial until we get to an "A".

decoder = port.readStringUntil(65);

}

// sanity check. make sure the string we got from the Arduino has all the values inside.

if ((decoder.indexOf("B")>=1) & (decoder.indexOf("C")>=1) &

(decoder.indexOf("D")>=1) & (decoder.indexOf("E")>=1) &

(decoder.indexOf("F")>=1))

{

// decoder string doesn't contain an A at the beginning. it's at the end.

valA=int(decoder.substring(0,decoder.indexOf("B")));

//println("A" + str(valA));

valB=int(decoder.substring(decoder.indexOf("B")+1,decoder.indexOf("C")));

//println("B" + str(valB));

valC=int(decoder.substring(decoder.indexOf("C")+1,decoder.indexOf("D")));

//println("C" + str(valC));

valD=int(decoder.substring(decoder.indexOf("D")+1,decoder.indexOf("E")));

//println("D" + str(valD));

valE=int(decoder.substring(decoder.indexOf("E")+1,decoder.indexOf("F")));

//println("E" + str(valE));

valF=int(decoder.substring(decoder.indexOf("F")+1,decoder.indexOf("A")));

//println("F" + str(valF));

}

//shift the new values into the array, move everything else over by one

for (int i=0; i<width-151; i++)

{

valuesA[i] = valuesA[i+1];

valuesB[i] = valuesB[i+1];

valuesC[i] = valuesC[i+1];

valuesD[i] = valuesD[i+1];

valuesE[i] = valuesE[i+1];

valuesF[i] = valuesF[i+1];

}

// -151 because the array is 151 less than the width. remember we

// saved room on the side of the screen for the actual text values.

valuesA[width-151] = valA;

valuesB[width-151] = valB;

valuesC[width-151] = valC;

valuesD[width-151] = valD;

valuesE[width-151] = valE;

valuesF[width-151] = valF;

background(0);

textFont(fontA);

// I'm sure these c/should have been determined using height math, but I don't have the time really.

// Draw out the now values with the big font.

text(valA + 1, (width-140), 108-5);

text(valB + 1, (width-140), 206-5);

text(valC + 1, (width-140), 304-5);

text(valD + 1, (width-140), 402-5);

text(valE + 1, (width-140), 500-5);

text(valF + 1, (width-140), 598-5);

textFont(fontB);

// Draw out the min and max values with the small font.

// the h value (30,128,266,etc) is a function of height,

// but I didn't bother to actually do the math.

// I guess it's (98*n)+30 where n is 0,1,2,3,4,5, but I don't know

// exactly how height (600) relates to 98... ((h/6)-2??)

drawdata("0", width-90, 30, valuesA);

drawdata("1", width-90, 128, valuesB);

drawdata("2", width-90, 226, valuesC);

drawdata("3", width-90, 324, valuesD);

drawdata("4", width-90, 422, valuesE);

drawdata("5", width-90, 520, valuesF);

for (int x=150; x<width-1; x++)

{

// next line adjusts the color of the stroke depending on the x value. (fades out the end of the line)

check(x,255,0,0);

// next line draws the line needed to get this value in the array to the next value in the array.

// the offsets (6+ in the next line) were used to get the values where I wanted them without

// having to actually do real spacial math. There's a hack in getY that offsets a little, too.

line((width)-x,

6+((height/6)*0)+((height-1-getY(valuesA[x-150]))/6), (width)-1-x,

6+((height/6)*0)+((height-1-getY(valuesA[x-149]))/6));

check(x,0,255,0);

line((width)-x,

4+((height/6)*1)+((height-1-getY(valuesB[x-150]))/6), (width)-1-x,

4+((height/6)*1)+((height-1-getY(valuesB[x-149]))/6));

check(x,0,0,255);

line((width)-x,

2+((height/6)*2)+((height-1-getY(valuesC[x-150]))/6), (width)-1-x,

2+((height/6)*2)+((height-1-getY(valuesC[x-149]))/6));

check(x,255,255,0);

line((width)-x,

0+((height/6)*3)+((height-1-getY(valuesD[x-150]))/6), (width)-1-x,

0+((height/6)*3)+((height-1-getY(valuesD[x-149]))/6));

check(x,0,255,255);

line((width)-x,

-2+((height/6)*4)+((height-1-getY(valuesE[x-150]))/6), (width)-1-x,

-2+((height/6)*4)+((height-1-getY(valuesE[x-149]))/6));

check(x,255,0,255);

line((width)-x,

-4+((height/6)*5)+((height-1-getY(valuesF[x-150]))/6), (width)-1-x,

-4+((height/6)*5)+((height-1-getY(valuesF[x-149]))/6));

}

// draw the boxes in gray.

stroke(170,170,170);

// these 5 lines divide the 6 inputs

line(0,108,width-1,108);

line(0,206,width-1,206);

line(0,304,width-1,304);

line(0,402,width-1,402);

line(0,500,width-1,500);

// these four lines make up the outer box

line( 0, 0, width-1, 0); // along the top

line(width-1, 0, width-1, height-1); // down the right

line(width-1, height-1, 0, height-1); // along the bottom

line( 0, height-1, 0, 0); // up the left

}

void drawdata(String pin, int w, int h, int[] values)

{

text("pin: " + pin, w, h);

text("min: " + str(min(values) + 1), w, h + 14);

text("max: " + str(max(values) + 1), w, h + 28);

}

void check(int xx, int rr, int gg, int bb)

{

// floating point operations in Processing are expensive.

// only do the math for the float (fading out effect) if

// we have to. You can change 170 to 160 if you want it to

// fade faster, but be sure to change the other 170 to 160

// and the 20 to 10.

// (20 is the difference between 170 and 150)

if (xx<=170)

{

float kick = (parseFloat(170-xx)/20)*255;

// invert kick so the brighter parts are on the left side instead of the right.

stroke(rr,gg,bb,255-kick);

}

else

{

stroke(rr,gg,bb);

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Анализ GPS-навигаторов для животных. Использование плат и среды программирования Arduino для разработки ошейника с GPS-навигатором для отслеживания маршрута, проделанного животным, и уведомления об этом пользователя. Выбор модели микроконтроллера.

    курсовая работа [2,4 M], добавлен 18.10.2015

  • Представление о системе Arduino. Структура платформы Android. Выбор средств разработки. Разработка структур данных и алгоритмов. Характеристика Bluetooth модуля, блок реле, резисторов, диодов. Графический интерфейс приложения. Написание кода программы.

    дипломная работа [4,0 M], добавлен 19.01.2017

  • Возможности платформы Arduino. Загрузка микроконтроллера прерываниями. Подтягивающие (нагрузочные) резисторы. Аналого-цифровой преобразователь, цоколевка. Прерывание по таймеру, память. Библиотеки Servo, SPI, Stepper. Комбинация фазы синхронизации.

    курсовая работа [53,4 K], добавлен 23.12.2014

  • Реализация задачи использования методики SDLC (управление жизненным циклом разработки программного обеспечения) при внедрении реальной системы информационных технологий. Описание проекта внедрения системы автоматической регистрации участников выставок.

    реферат [585,1 K], добавлен 10.09.2010

  • Обоснование выбора программного обеспечения. Интерфейс Multisim, инструментальные вкладки (панели). Выбор компонентов из базы данных. Редактирование транзисторов, конденсаторов, индуктивности. Механизм симуляции схемы. Выбор цифрового преобразователя.

    дипломная работа [3,5 M], добавлен 13.02.2016

  • Классификация колесных наземных мобильных роботов. Обзор приводов мобильных платформ. Особенности стабилизации скорости мобильной платформы Rover 5 с дифференциальным приводом. Разработка алгоритмов управления на основе микроконтроллера Arduino.

    курсовая работа [1,3 M], добавлен 04.05.2017

  • Сущность тестирования и отладки, методика выявления ошибок в программном обеспечении. Практика отладки приложений в среде Delphi, системы управления версиями приложения и отслеживания ошибок. Применение точек остановки и модификация локальных переменных.

    курсовая работа [303,4 K], добавлен 19.01.2016

  • Технология конструирования программного обеспечения, надежно и эффективно работающего в реальных компьютерах. Модель быстрой разработки приложений (Rapid Application Development) как один из примеров применения инкрементной стратегии конструирования.

    реферат [666,5 K], добавлен 24.06.2009

  • Изучение видов роботов-жуков. Анализ платформ для управления периферийными устройствами, реализации передачи и обработки полученных данных. Основной выбор сервоприводов и дальномеров. Программирование робота через специализированную среду Arduino IDE.

    курсовая работа [588,7 K], добавлен 11.08.2017

  • Назначение и область применения набора MicroCamp, расположение элементов на его плате. Обобщенная структурная схема и технические характеристики мобильного робота. Обзор микроконтроллера Atmega 8. Разработка программного обеспечения для набора MicrоCamp.

    курсовая работа [7,1 M], добавлен 15.07.2012

  • Использование методики управления жизненным циклом разработки программного обеспечения при внедрении реальной информационной системы. Предварительное исследование, проектирование, разработка, применение и обслуживание системы автоматической регистрации.

    контрольная работа [30,6 K], добавлен 16.10.2010

  • Понятие программного обеспечения, вопросы его разработки и использования. Общая характеристика системного программного обеспечения и работа операционной системы. Специфика процесса управления разработкой программного обеспечения и его особенности.

    курсовая работа [636,2 K], добавлен 23.08.2011

  • Технологический процесс в организации и его компоненты. Организационная структура и роли в технологических процессах. Пятиуровневая модель зрелости технологического процесса разработки программного обеспечения. Внутренняя структура уровней зрелости.

    курсовая работа [184,1 K], добавлен 29.06.2010

  • Дослідження роботи портів виводу/вводу на мікроконтролері ATmega328 на платі Arduino UNO, розробка програми для підключення світлодіода та кнопки. Особливості здійснення керування виводами та забезпечення взаємодії з зовнішніми пристроями та сенсорами.

    лабораторная работа [292,9 K], добавлен 13.11.2023

  • Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.

    курсовая работа [355,8 K], добавлен 26.09.2014

  • Разработка приложений для измерения и сбора данных, управления измерительными приборами, анализа данных измерений и составления отчетов. Электронный цифровой двухканальный осциллограф в LabVIEW. Разложение несинусоидального напряжения в ряд Фурье.

    курсовая работа [2,4 M], добавлен 03.06.2019

  • Характеристика и состав Microsoft Solution Framework. Модель команды, её характеристики. Цели качества команды проекта. Модель процессов, её содержание. Принципы управления рисками. Утверждение целей и границ, плана проекта. Модель приложений MSF.

    презентация [752,5 K], добавлен 10.05.2013

  • Требования к пользовательскому интерфейсу программного продукта. Выбор инструментальных средств разработки программы. Описание функциональной схемы, модульной структуры, структурной схемы. Технология разработки справочной системы программного продукта.

    дипломная работа [2,7 M], добавлен 12.05.2016

  • Вживання електричних транспортних засобів з дистанційним управлінням. Канали зв’язку для передачі даних від пульта керування до керуючої машини. Реалізація програмного коду для Arduino Nano. Створення Android-додатку. Автоматизація процесів управління.

    дипломная работа [4,1 M], добавлен 24.07.2014

  • Проблема надежности программного обеспечения, ее показатели и факторы обеспечения. Методы контроля процесса разработки программ и документации, предупреждение ошибок. Этапы процесса отладки ПО, приемы структурного программирования и принцип модульности.

    презентация [379,5 K], добавлен 30.04.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.