Задания контрольной работы. Промышленных технологий и дизайна»

ПРОМЫШЛЕННЫХ ТЕХНОЛОГИЙ И ДИЗАЙНА»

ВЫСШАЯ ШКОЛА ТЕХНОЛОГИИ И ЭНЕРГЕТИКИ

Институт безотрывных форм обучения

Кафедра информационно-измерительных технологий и систем

управления

 

 

КОНТРОЛЬНАЯ РАБОТА

по дисциплине: Микроконтроллеры и микропроцессоры в системах управления

 

на тему: Работа с Arduino

Выполнил   студент учебной группы № 7-648 шифр 146-091   Цепелев Дмитрий Александрович
  (фамилия, имя, отчество)
Проверил  
(должность, фамилия, имя, отчество)
   

 

Санкт-Петербург

2017­

Содержание

Введение………………………………………………….……………...…….…2

1.Задания контрольной работы.………………………….……….………….3

2.Код программы……………………………………………..…...….….......…5

3. Консоль…………………………………………………….......………………7

4. Схема подключения…………………………………...…...………..……….8

5. Описание команд…………………………………….……...……….…….....9

5.1 Операторы……………………………………………..…….…….………..9

5.2 Типы данных……………………………………....……………….…....…10

5.3 Переменные………………………………………………….……....…..…11

5.4 Функции…………………………………………………………………….11

6. Вывод……………………………………………………………….…...…….15

Библиографический список……………………………….……….…..……..16

 

 

Введение

 

Arduino - аппаратная вычислительная платформа, состоящая из двух основных компонентов: плата ввода-вывода и среда разработки на языке Processing/Wiring. Arduino удобна для разработки электронных устройств как для новичков, так и для профессионалов. Эта платформа пользуется огромной популярностью во всем мире из-за простого языка программирования, открытой архитектуры и программного кода. Особенность данной платформы является то что она программируется без использования программаторов через USB. С помощью Arduino компьютер может выйти за рамки виртуального мира в физический, благодаря множеству датчиков которые можно подключить к плате. Датчики могут получать информацию об окружающей среде, а также управлять различными исполнительными устройствами.

Может и взаимодействовать с программным обеспечением на компьютере (например, Flash,Processing,MaxMSP).

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

Рис.1 Плата ArduinoUNO

Плата Arduino содержит инвертирующую схему для конвертирования уровней сигналов RS-232(RecommendedStandart 232, физический уровень дляасинхронного интерфейса) в уровни ТТЛ (Транзисторно-транзисторная логика-разновидность цифровых логических микросхем, построенных на основе биполярных транзисторов (трёхэлектродный полупроводниковый прибор) и резисторов.), и наоборот.

Интегрированная среда разработки ArduinoIDE (Рис.2) – это кроссплатформенное приложение на Java, включающая в себя редактор кода, компилятор и модуль передачи прошивки в плату. Язык программирования используемый для Arduino очень похож на СИ++, дополненный некоторыми библиотеками.

Рис.2 ArduinoIDE

 

Целью этой контрольной работы является знакомство и обучение с Arduino. Развитие умения разрабатывать проекты простых устройств на базе микроконтроллера Arduino. Обучение основам работы в среде разработке ArduinoIDE.

 

 

Задания контрольной работы

 

1) Мигание светодиода при нажатой кнопке.

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

2) Вывод информации о нажатой кнопке в консоль.

Отображение текущего состояния кнопки в консоли. (1- нажата, 0- нет)

3) Определение положения потенциометра. Вывод и измерение информации в консоль.

Отображение в консоли в процентах положения потенциометра, от 0 до 100%

4) Вывод информации о температуре в консоль

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

5) Изменение яркости светодиода в зависимости от положения потенциометра.

 

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

 

 

intled = 13; // объявляем переменную led (светодиод)

intkey = 7; // объявляем переменную key (кнопка)

voidsetup() {

pinMode(led, OUTPUT); // задействован 13 пин как выход

pinMode (key, INPUT); // задействован 7 пин как вход

Serial.begin (9600); // установка скорости передачи данных

}

 

voidloop() {

intpot = analogRead (A1); // объявляем переменную pot (потенциометр)

intkeyl = digitalRead (key); // объявляем переменную keyl (кнопка)

intproc = pot * (100.0 / 1023.0); // значение потенциометра в процентах

float u = 5.0 / 1023.0 * (pot); // значение напряжения

floattemp = analogRead (A2) * 50.0 * 5.0 / 1023.0; // перевод значений ШИМ в вольты, из вольт в градусы

analogWrite (11, proc * (255.0 / 100.0)); // Яркость светодиода от потенциометра

Serial.print ("key="); Serial.println (keyl); // отображение кнопки, нажата или нет

Serial.print ("pot="); Serial.print (proc, 1); Serial.println ("%"); // отображение значения потенциометра в процентах

Serial.print ("ADC="); Serial.println (pot); // отображение значения АЦП

Serial.print ("U="); Serial.print (u); Serial.println ("V"); // отображение значения напряжения в вольтах

Serial.print ("Temp="); Serial.print (temp, 1); Serial.println ("oC"); // отображение температуры в градусах цельсии

Serial.println (); // пустая строка для консоли

delay (500); // задержка пол секунды

if (digitalRead (key)) { // кнопка нажата

digitalWrite (led, HIGH); // включение светодиода

delay (500); // задержка пол секунды

digitalWrite (led, LOW); // выключение светодиода

delay (500); // задержка пол секунды

 

}

}

 

Консоль

 

Настройка консоли (Рис.3) происходит в коде программы, при выборе скорости передачи данных. Скорость передача данных должна быть одинаковой, как в коде программы так и в консоли.

 

 

Рис.3Консоль ArduinoIDE

 

 

Схема подключения

 

Схема подключения датчика температуры, светодиодов, кнопки и потенциометра показана на Рис.4.

 

 

 

Рис.4:Принципиальная схема подключения

 

Описание команд

Операторы

Функция Setup

Setup()

Функция setup() вызывается, когда стартует скетч. Используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д. Функция setup запускает только один раз, после каждой подачи питания или сброса платы Arduino.

Функция Loop

loop()

После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле.

Функция void

Ключевое слово void используется при объявлении функций, если функция не возвращает никакого значение при ее вызове

Оператор If

if (условие) и ==,!=, <, > (операторы сравнения)

if(условие)
{

 

// выполнять действия
}

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

; (точка с запятой)

; (точка с запятой) используется для обозначения конца оператора.

// (комментарий)

Комментарии – это строки в программе, которые используются для информирования вас самих или других о том, как работает программа. Они игнорируются компилятором и не экспортируются в процессор, таким образом, они не занимают место в памяти микроконтроллера Atmega.

Типы данных

Int

Тип данных int (от англ. integer - целое число) один их наиболее часто используемых типов данных для хранения чисел. int занимает 2 байта памяти, и может хранить числа от -32 768 до 32 767.

intvar = val;

  • var - имя переменной;
  • val - значение присваиваемое переменной;

Float

Тип данных float служит для хранения чисел с плавающей запятой. Этот тип часто используется для операций с данными, считываемыми с аналоговых входов. Диапазон значений — от -3.4028235E+38 до 3.4028235E+38. Переменная типа float занимает 32 бита (4 байта) в памяти.

Переменные

Переменная – это место хранения данных. Она имеет имя, значение и тип. Например, данное объявление (называется декларацией):

intpin = 13;

Создает переменную с именем pin, значением 13 и типом int. Затем в программе имеется возможность обратиться к данной переменной через имя с целью работы с ее значением.

Функции

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

ФункцияPinMode:

Устанавливает режим работы заданного вход/выхода(pin) как входа или как выхода.

pinMode(pin, mode)

  • pin: номер вход/выхода(pin), который Вы хотите установить
  • mode: режим одно из двух значение - INPUT или OUTPUT, устанавливает на вход или выход соответственно.

Функция digitalWrite:

Подает HIGH или LOW значение на цифровой вход/выход (pin).

Если вход/выход (pin) был установлен в режим выход (OUTPUT) функцией pinMode(), то для значение HIGH напряжение на соответствующем вход/выходе (pin) будет 5В (3.3В для 3.3V плат), и 0В(земля) для LOW.

Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор. Подача LOW в свою очередь отключает этот резистор. Нагрузочного резистра достаточно чтобы светодиод, подключенный к входу, светил тускло. Если вдруг светодиод работает, но очень тускло, возможно необходимо установить режим выход (OUTPUT) функцией pinMode().

digitalWrite(pin, value)

  • pin: номер вход/выхода(pin)
  • value: значение HIGH или LOW

Функция digitalRead:

Функция считывает значение с заданного входа - HIGH или LOW.

digitalRead(pin)

pin: номер вход/выхода(pin) который хотите считать

 

 

Функция analogWrite:

Выдает аналоговую величину (ШИМ волну) на порт вход/выхода. Функция может быть полезна для управления яркостью подключенного светодиода или скоростью электродвигателя. После вызова analogWrite() на выходе будет генерироваться постоянная прямоугольная волна с заданной шириной импульса до следующего вызова analogWrite (или вызова digitalWrite или digitalRead на том же порту вход/выхода). Частота ШИМ сигнала приблизительно 490 Hz.

Для вызова analogWrite() нет необходимости устанавливать тип вход/выхода функцией pinMode().

analogWrite(pin, value)

  • pin: порт вход/выхода на который подаем ШИМ сигнал.
  • value: период рабочего цикла значение между 0 (полностью выключено) and 255 (сигнал подан постоянно).

Функция analogRead:

Функция считывает значение с указанного аналогового входа.

analogRead(pin)

pin: номер порта аналогового входа с которого будет производиться считывание (0..5 для большинства плат).

Serial:

Набор функций Serial служит для связи устройства Ардуино с компьютером или другими устройствами, поддерживающими последовательный интерфейс обмена данными.

 

1) Serial.begin(speed)

  • speed: скорость в бит/c (бод).

Инициирует последовательное соединение и задает скорость передачи данных в бит/c (бод).

2) Serial.print(val)
Serial.print(val, format)

  • val: данные для передачи через последовательное соединение
  • format: базис для целых чисел или количество знаков после запятой для вещественных

Передает данные через последовательный порт как текст.

3) Serial.println(val)
Serial.println(val, format)

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

 

Вывод

При нажатии кнопки загорается светодиод №1 и начинает моргать в соответствии с заданным интервалом. При повороте ручки потенциометра происходит регулирование яркости светодиода №2, в диапазоне 0% - не горит до 100% горит ярко. При подключении к персональному компьютеру в консоли отображается следующая информация:

1) Нажата кнопка или нет

2) Положение потенциометра в процентах.

3) Аналоговое значение потенциометра. АЦП.

4) Значение напряжения в вольтах.

5) Значение температуры с датчика температуры, в цельсиях.

 

В рамках курсовой работы были выполнены основные этапы:

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

2) Получен практический опыт подключения к плате Arduinoразличных датчиков и модулей.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: