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