Материал: Sb97585

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторная работа 1. ПЛАТФОРМА ARDUINO: ЗАГРУЗКА СКЕТЧЕЙ, ЦИФРОВОЙ ВВОД–ВЫВОД

Цель работы – ознакомление со средой разработки Arduino, написание и загрузка программы, реализующей ввод и вывод цифровых данных.

Порядок выполнения работы

1. Создание скетча

Программа, написанная в среде Arduino IDE, называется скетч. Скетч пишется в текстовом редакторе на языке С. В любой программе Arduino есть две обязательные функции setup() и loop(). При включении питания или перезагрузке микроконтроллер начнет выполнять скетч, сначала вызвав функцию setup(), а потом циклически повторяя функцию loop(). Таким образом, функция setup() выполняется один раз при загрузке приложения;

вней инициализируются данные, режимы работы портов ввода–вывода и других устройств микроконтроллера. Цикл loop() выполняется бесконечно. Один раз загрузив скетч, мы записываем его в память микроконтроллера. Чтобы изменить загруженный скетч, обновленный код программы требуется скомпилировать и загрузить еще раз.

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

вменю Инструменты → Порт. В ОС Mac последовательный порт может обо-

значаться как dev/tty.usbserial-1B1 или /dev/tty.USA19QW1b1P1.1. В ОС

Windows порты могут обозначаться как COM1, COM2 и так далее. В ОС Linux порты могут обозначаться как /dev/ttyUSB0, /dev/ttyUSB1.

Для выбора платформы требуется указать в меню Инструменты → Пла-

та: Название платы наименование используемой вами платы (например Uno

или Nano).

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

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

6

void setup()

{

// set the switch pin to be an input

pinMode(2,

INPUT);

pinMode(8, OUTPUT);

// set the red LED pin to be an output

}

 

 

void

loop() {

 

// read the switch input:

 

if (digitalRead(2) == HIGH) {

 

// if the switch is closed:

}

digitalWrite(8, LOW);

// turn on the red LED

 

 

else {

 

 

// if the switch is open:

// turn off the red LED

}

digitalWrite(8, HIGH);

 

 

}

 

 

В вариантах заданий на лабораторную работу предлагается усложнить этот пример. Для осуществления задержек по времени используйте функции delay, millis или таймер, задействовав библиотеку TimerOne.

2. Сборка примера на макетной плате

Пример сборки приведен на рис. 1. К цифровому входу 2 платы Arduino

подключается кнопка. Дополнительно к пину 2 подключается согласующий

резистор, обеспечивающий напряже-

 

ние низкого уровня в момент, когда

 

кнопка разомкнута. В противном

 

случае схема будет работать неста-

 

бильно. Светодиод необходимо под-

 

ключить через токоограничительный

 

резистор ~220 Ом, чтобы он не пере-

 

горел. Можно использовать резистор

 

большего номинала, но при этом све-

Рис. 1. Сборка на макетной плате

тодиод будет гореть менее ярко.

для выполнения лабораторной работы 1

3. Загрузка скетча

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

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

7

Варианты заданий

1.Кнопка с памятью. Нажатие на кнопку включает светодиод, повторное нажатие выключает. Длительное удержание кнопки (больше 1с) не приводит к переключению светодиода.

2.«Велосипедный фонарик». Моделируется логика работы фонаря для велотранспорта. Удержание кнопки включает светодиод. Для выключения светодиода необходимо дважды щелкнуть по кнопке.

3.«Налобный фонарик». Имитация режимов работы налобных фонари-

ков и т. д. Чтобы включить или выключить фонарик, необходимо удерживать кнопку нажатой более 1 с. Нажатие на кнопку в режиме свечения переключает режимы непрерывного свечения и мигания.

4.Диммер. Нажатие на кнопки переключает режимы яркости светодиода: выключен – уровень 1 – … уровень N (максимальный) – выключен. Для управления яркостью светодиода используйте ШИМ.

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

иснова переключается на красный. Следующее включение возможно только при окончании таймаута (например 10 с).

6.Гирлянда. Осуществляется режим бегущего огня. Необходимо подключить к плате еще 2–3 светодиода.

Лабораторная работа 2. ПЛАТФОРМА ARDUINO: АНАЛОГОВЫЙ ВВОД–ВЫВОД, СОМ-ПОРТ

Цель работы – модифицировать проект, созданный в лабораторной работе 1 таким образом, чтобы управление светодиодом осуществлялось командами с компьютера, а также с помощью потенциометра, расположенного на макетной плате (рис. 2).

Большинство микроконтроллеров обладают множеством портов ввода– вывода. В этой работе изучается работа протокола UART, реализованного в последовательных COM-портах.

Для организации работы порта UART служит функция Serial.begin(). Единственным параметром функции является скорость передачи данных (обычно равная 9600 бод).

8

Рис. 2. Вид макетнойплаты для выполнения лабораторной работы 2

Для записи значения в порт используются следующие функции:

Serial.write() записывает в порт данные в двоичном виде.

Serial.print() может иметь много значений, но все они служат для вывода информации различного типа в удобной для пользователя форме.

Serial.println() делает то же, что и

Serial.print(), но после вывода информации посылает символ переноса на следующую строку.

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

Пример использования функций:

INT VAL = 0;

VOID SETUP() { SERIAL.BEGIN(9600);

}

VOID LOOP() {

IF (SERIAL.AVAILABLE() > 0) {

VAL = SERIAL.READ();

IF (VAL=='H') DIGITALWRITE(13,HIGH); IF (VAL=='L') DIGITALWRITE(13,LOW);

}

}

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

Порядок выполнения работы

1.Откройте проект, созданный при выполнении лабораторной работы 1.

2.Измените код в соответствии с индивидуальным заданием на лабораторную работу.

3.Загрузите код в память микроконтроллера. Для проверки корректности работы вашего кода необходимо, чтобы на компьютере работала терминальная программа, принимающая данные от COM-порта. Для ее вызова из среды Arduino выберите в меню Сервис → Монитор порта.

9

4.Поставьте на плату потенциометр с номиналом от 1 кОм (10 кОм, 100 кОм и т. д.).

5.Организуйте управление режимами свечения светодиода с помощью потенциометра в соответствии с заданием.

Варианты заданий

1.Включение светодиода осуществляется отправкой символа T (true) на Arduino, выключение – отправкой F (false). При этом светодиод мигает, а частота его мигания задается потенциометром.

2.Аналогично п.1, но потенциометр задает яркость свечения. Для управления яркостью используйте ШИМ.

3.Потенциометр задает яркость светодиода в режиме реального времени, как если бы светодиод был подключен непосредственно через потенциометр. Раз в секунду Arduino отсылает на ПК уровень напряжения. По командам T и F режим оповещения об уровне напряжения включается и отключается.

4.Потенциометр задает режим работы светодиода: левое положение ручки задает режим «непрерывное свечение», среднее – «мигание с малой частотой», правое – «мигание с высокой частотой». В момент перехода в другой режим контроллер отсылает соответствующее сообщение на компьютер. По командам T и F режим оповещения об уровне напряжения включается и отключается.

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

Контрольные вопросы

1.Какое максимальное напряжение может быть достигнуто на ползунке потенциометра номиналом 1, 10, 100 кОм, если голубой резистор имеет номинал 10 кОм, а напряжение на шине «+» 3,3 В?

2.Если АЦП имеет 1024 уровня (в диапазоне от 0 до 3,3 В), то какому уровню соответствует напряжение, рассчитанное в п. 1?

Лабораторная работа 3. ПЛАТФОРМА ARDUINO: ПОДКЛЮЧЕНИЕ ШИЛДОВ И МОДУЛЕЙ

Цель работы – приобретение навыков аппаратного и программного подключения модулей расширения к платам Arduino.

Шилд (англ. – Shield) – это специальная плата, устанавливающаяся на платформу Arduino (как правило, используется типоразмер Uno), реализую-

10

Источник: https://studfile.net/preview/16439025/