ПРОМЫШЛЕННЫХ ТЕХНОЛОГИЙ И ДИЗАЙНА»
ВЫСШАЯ ШКОЛА ТЕХНОЛОГИИ И ЭНЕРГЕТИКИ
Институт безотрывных форм обучения
Кафедра информационно-измерительных технологий и систем
управления
КОНТРОЛЬНАЯ РАБОТА
по дисциплине: Микроконтроллеры и микропроцессоры в системах управления
на тему: Работа с 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различных датчиков и модулей.