Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Arduino_labs

.pdf
Скачиваний:
159
Добавлен:
01.03.2016
Размер:
828.21 Кб
Скачать

11

платы Arduino. Вновь подсоедините плату и выберите нужный последовательный порт.

Рисунок 1.7 – Выбор платы

Теперь нажимаем кнопку «Загрузить» на панели инструментов для помещения программы в контроллер. В случае успешной загрузки появится сообщение «Загрузка выполнена»:

Рисунок 1.8 – Загрузка программы в контроллер

Язык программирования Arduino очень похож на Си. Здесь, как и в Си, применимы такие конструкции:

if…else if…else if…else

do{…} while (…); while(…) {…} for(…;…;…) {…}

и многие другие

Допустимые операции: Арифметические:

=, +, -, *, /, %

Операторы сравнения: == равно != не равно

< меньше, чем > больше, чем <= меньше равно >= больше равно

Булевые операторы

&& И || ИЛИ

12

! НЕ Побитовые операторы: & И | ИЛИ

^ ИСКЛЮЧАЮЩЕЕ ИЛИ ~ НЕ << сдвиг влево

>> сдвиг вправо Другие операторы: ++ Инкремент на 1 -- Декремент на 1

Также допустимы следующие типы переменных:

boolean, char, byte, int, word, long, short, float, double, string (массив символов) и другие.

Все тонкости и подробности языка Arduino можно узнать на сайте http://arduino.cc/en/Reference/HomePage.

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

1)Ознакомиться с теоретическими сведениями.

2)Выполнить установку программного обеспечения, согласно п.п.1.3.

3)Выполнить подключение платы Adruino Uno (см. пункт 1.4)

4)Ознакомиться с синтаксисом и основными возможностями языка

Adruino.

5)Написать программу, которая управляет миганием светодиода, согласно вашего варианту задания, указанного в таблице 1.2.

6)Оформить отчет по работе.

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

Таблица 1.2 – Варианты заданий

Задание

 

Реализовать вывод на светодиодный индикатор сообщения на азбуке

 

Морзе, которое состоит из ваших имени и фамилии. Длительность

0..9

короткого сигнала – 0.2 сек. Длительность длинного сигнала – 0.6

 

сек. Задержка между сигналами – 0.2 сек. Задержка между буквами

 

0.6 сек. Задержка между словами – 1.4 сек. В отчете привести

 

алфавит азбуки Морзе и транслированное сообщение.

13

Рисунок 1.9 – Азбука Морзе

1.6 Содержание отчета

Отчёт о выполнении лабораторной работы должен содержать:

номер и название работы;

цель работы;

краткие теоретические сведения;

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

постановка задачи;

текст программы, разработанной согласно варианта задания, содержащий необходимые комментарии и пояснения;

особенности функционирования IDE Arduino;

выводы.

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

1)Какие операции, операторы, типы, конструкции допустимы в языке программирования Arduino?

2)Дайте характеристику контроллеров Arduino.

3)Дайте описание технических характеристик контроллера Arduino Uno.

4)Дайте краткое описание среды разработки Arduino.

5)Особенности языка программирования устройств Arduino.

6)Перечислите достоинства использования Arduino.

7)Перечислите основные недостатки использования Arduino.

14

2 ЛАБОРАТОРНАЯ РАБОТА №2 ПЕРЕДАЧА ДАННЫХ ЧЕРЕЗ ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ.

ИНДИКАЦИЯ НА LCD-ДИСПЛЕЕ

2.1 Цель работы

Изучить основные принципы организации обмена данными между контроллером Arduino и компьютером через виртуальный COM-порт. Научится производить индикацию на LCD-дисплее.

2.2 Подключение дополнительных библиотек

Для выполнения данной работы будут необходимы некоторые внешние библиотеки. Множество из этих библиотек можно скачать с официального сайта http://www.arduino.cc в виде обычного ZIP-архива.

Для автоматической установки выполните команду Скетч -> Импортировать библиотеку -> Add Library. Затем выберите скачанный ZIP- архив с библиотекой (рисунок 2.1).

Рисунок 2.1 – Импортирование библиотеки

В случае успеха программа в окне сообщений появится информация об успешном подключении: «Library added to your libraries. Check “Import library” menu».

Теперь библиотеку можно подключать к проекту (рисунок 2.2).

Рисунок 2.2 – Подключение библиотеки к проекту

15

2.3 Последовательный порт

Последовательный порт или интерфейс стандарта RS-232это одно из многих средств передачи информации между устройствами.

Все СОМ-порты обладают несколькими свойствами:

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

выстраиваться в очередь на передачу и очередь на прочтение данных процессором. Любая программа может обратиться к СОМ-порту и получить данные из его буфера, тем самым очистив его.

2)Набор сервисных сигналов. Сервисные сигналы, предусмотренные стандартом RS-232c, позволяют организовать обмен данными между двумя устройствами одновременно в обоих направлениях. Сервисные сигналы представлены отдельными цифровыми входами и выходами с памятью.

3)Программная независимость. Для реализации этой независимости используется UART (Universal Asynchronous Receiver-Transmitter). UART –

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

полностью реализован аппаратно и не зависит от программного обеспечения

иОС.

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

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

Плата Arduino не подключается через реальные COM-порты. Она подключается через интерфейс USB, но для связи с компьютером все равно использует виртуальный COM-порт.

Для обмена данными с устройствами, которые поддерживают последовательный интерфейс используется набор функций Serial. Для обмена данными Serial используют цифровые порты ввод/вывода 0 (RX) и 1 (TX), а также USB порт. Важно учитывать, что при использовании функций Serial нельзя одновременно использовать порты 0 и 1 для других целей.

16

Среда разработки Arduino имеет встроенный монитор последовательного интерфейса (Serial monitor), который можно вызвать командой Сервис -> Монитор порта или нажатием комбинации клавиш

Ctrl+Shif+M.

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

Ниже в таблице 2.1 представлен набор основных функций Serial.

Таблица 2.1 – Основные функции для работы с последовательным портом

Функция

Описание

 

 

 

available()

Возвращает количество байт, доступных для чтения из

 

буфера. Это те байты, которые уже поступили и записаны

 

в буфер последовательного порта. Буфер может хранить

 

до 64 байт.

 

 

 

begin(speed)

Инициирует последовательное соединение и задает

 

скорость передачи данных в бит/c. Для обмена данными с

 

компьютером обычно используется значение 9600.

end()

Закрывает последовательное соединение. Порты RX и TX

 

освобождаются

и могут

быть

использованы для

 

ввода/вывода.

 

 

 

find(chr)

Читает данные из буфера, пока не найдет символ chr

findUntil(chr,

Читает данные из буфера, пока не найдет символ chr.

term)

Прерывает поиск при нахождении символа term.

flush()

Ожидает окончания передачи исходящих данных

parseFloat()

Возвращает число типа float из буфера

 

parseInt()

Возвращает число типа int из буфера

 

peek()

Возвращает следующий доступный байт из буфера.

print(val, [opt])

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

 

порт

 

 

 

 

 

val: данные для передачи через последовательное

 

соединение

 

 

 

 

[opt]: базис для целых чисел или количество знаков после

 

запятой для вещественных.

 

 

 

Примеры:

 

 

 

 

Serial.print(22) передается как «22»

 

Serial.print(1.2) передается как «1.2»

 

Serial.print('А') передается как «А»

 

Serial.print("Hello") передается как «Hello»

 

Serial.print(78, BIN) выводит «1001110»

 

Serial.print(78, HEX) выводит «4E»

 

 

println(val, [opt])

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

 

ASCII текст с

следующим

за ним

символом переноса

 

17

 

 

 

строки.

read()

Cчитывает очередной доступный байт из буфера.

setTimeout()

Устанавливает время ожидания данных через порт. По

 

умолчанию равно 1000 мс.

write()

Передает данные как бинарный код. Данные послаются

 

как один или серия байтов. Для того, чтобы передать

 

данные как символы следует использовать функцию

 

print().

serialEvent()

Функция void serialEvent() вызывается каждый раз при

 

поступлении новых данных в буфер. Пользователь может

 

переопределить эту функцию для обработки данных.

Serial

Переменная Serial возвращает true, если порт доступен.

2.5 Подключение LCD-дисплея

При работе с Arduino возникает необходимость вывести какие-либо данные на дисплей, но передавать для этого данные на ПК имеет смысл только если устройство будет использоваться в связке с ПК. Если же планируется автономная работа устройства без привязки к ПК, то нужно использовать дополнительные устройства индикации. Для этого можно использовать, например, LCD-дисплеи.

Дисплей, который используется в данной работе, имеет опциональную подсветку и может отображать 2 строки по 16 символов. Разрешение символов — 5x8 точек.

Для работы LCD-дисплея необходимо подключить дополнительную библиотеку «LiquidCrystal».

На рисунке 2.3 приведена схема подключения дисплея к плате Arduino.

18

Рисунок 2.3 – Схема подключения LCD-дисплея

Ниже приведена программа, которая считывает строку с COM-порта и отображает ее на дисплее, так же статически строкой выше выводит

Stu.cn.ua:

#include <LiquidCrystal.h>

// инициализация

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

// устанавливаем количество столбцов и строк: lcd.begin(16, 2);

//инициализуруем последовательный порт передачи данных

Serial.begin(9600);

}

void loop() {

// когда приходят данные с порта...

if (Serial.available())

{

//ждем 0.1 сек delay(100);

//очищаем экран дисплея lcd.clear();

int i = 0;

// считываем поочередно все символы

19

while (Serial.available() > 0)

{

lcd.setCursor(i, 1); //устанавливаем курсор i++;

// отображаем символ на дисплее lcd.write(Serial.read());

}

} else { lcd.setCursor(0,0); lcd.write(“Stu.cn.ua”);

}

}

Теперь, если открыть монитор порта, ввести в нем строку, например «Hello, world» и нажать «Send» на дисплее увидим соответствующую надпись.

Рисунок 2.4 – Результат выполнения программы

Ниже представлены некоторые функции lcd.

home() – возвращает курсор в начало экрана.

clear() – возвращает курсор в начало экрана и стирает все данные с дисплея.

write(ch) – выводит одиночный символ ch на дисплей.

cursor() и noCursor() – позволяют показать курсор на дисплее (символ подчёркивания) и скрыть его.

blink() и noBlink() – включить и выключить мигание курсора, если включено его отображение.

display() и noDisplay() – включить и выключить дисплей.

scrollDisplayLeft() и scrollDisplayRight() – прокрутить экран на один символ влево или вправо.

20

autoscroll() и noAutoscroll() – включить и выключить режим автопрокрутки. В этом режиме при выводе каждого следующего

символа содержимое экрана будет смещено на один символ влево (или вправо, если включен режим вывода справа налево), а выводимый символ займёт место первого сдвинутого. В этом

режиме все последующие символы выводятся в одно и то же место, вытесняя текущее содержимое экрана.

leftToRight() и rightToLeft() – устанавливают направление вывода текста: слева направо и справа налево, соответственно.

createChar(ch, bitmap) - создание своего символа с кодом ch (от 0 до 7), с использованием массива битовых масок для задания тёмных и светлых точек.

2.6Работа с дисплеем Nokia 5110, 84*48

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

Nokia 5110 LCD подключается по следующей схеме: RST pin6

CE pin7 DC pin5 Din pin4 Clk pin3 Vcc 3.3v BL 3.3v Gnd Gnd

Ниже приведет пример кода с использованием Nokia 5110 LCD:

#include <PCD8544.h>

// Создание собственного символа(смайлик)

static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };

static PCD8544 lcd;

void setup() {

// PCD8544-совместимые с данной библиотекой дисплеи могут иметь разное разрешение

lcd.begin(84, 48);

// Заменяем "0" в таблице ASCII смайликом lcd.createChar(0, glyph);

}

void loop() {

//Показываем что программа не статическая static int counter = 0;

//Напишем текст на первой строке lcd.setCursor(0, 0); lcd.print("cs.stu.cn.ua”);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]