Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод. указания к лаб. раб. по (КУПТО).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.91 Mб
Скачать

Лабораторная работа №3 Основы работы с аппаратной платформой Arduino

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

Программа работы

1. Ознакомиться со структурой программ на языке Wiring (скетчей).

2. Разработать скетч для Arduino Uno, осуществляющий включение/выключение встроенного светодиода с периодом в Т=0.5 с.

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

4.Разработать скетч, обеспечивающий кодирование заданных символов с помощью азбуки Морзе.

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

6.Сделать выводы по работе

Методические указания

к п.1. Создание скетчей для аппаратной платформы Arduino выполняется в интегрированной среде разработки Arduino IDE (рис. 1)

Рис. 1 – Вид главного окна Arduino IDE

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

Структуру скетча рассмотрим на следующем примере:

//Подключение внешних модулей, необходимых для выполнения скетча

#include <SPI.h>

#include <Ethernet.h>

//Объявление глобальных переменных в формате:

//ТипПеременой ИмяПеременной = НачальноеЗначение;

byte mac[] = {

0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress ip(192,168,1, 177);

IPAddress gateway(192,168,1, 1);

IPAddress subnet(255, 255, 0, 0);

EthernetServer server(23);

boolean alreadyConnected = false;

//Функция инициализации setup.

//Работа скетча начинается с ее выполнения.

//Данная функция вызывается автоматически и выполняется один раз

void setup() {

Ethernet.begin(mac, ip, gateway, subnet);

server.begin();

Serial.begin(9600);

while (!Serial) {}

Serial.print("Chat server address:");

Serial.println(Ethernet.localIP());

}

//Главная функция loop

//Эта функция содержит программный код основных действий программы

void loop() {

EthernetClient client = server.available();

if (client) {

if (!alreadyConnected) {

client.flush();

Serial.println("We have a new client");

client.println("Hello, client!");

alreadyConnected = true;

}

if (client.available() > 0) {

char thisChar = client.read();

server.write(thisChar);

Serial.write(thisChar);

}

}

}

к п.2-4. Для разработки данного скетча удобно воспользоваться примером Blink

(рис. 2).

Рис. 2 – Загрузка скетча Blink

Рассмотрим текст функции loop данного примера:

Void loop() {

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

delay(1000); // пауза

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

delay(1000); // пауза

}

Период включений светодиода задается параметром, передаваемым функции delay().

Таким образом, для оформления включения-выключения светодиода в виде функции программный код, выполняемый в теле функции loop(), поместить в тело создаваемой функции. А в теле функции loop() достаточно лишь выполнять вызов созданной функции.

Для кодирования символов азбуки Морзе целесообразно будет создать 2 функции: длинного и короткого включения.

к п 5. Для разработки данного скетча можно воспользоваться следующим шаблоном:

int led = ???;

int brightness = 0; // величина яркости светодиода

int fadeAmount = 5; // величина изменения яркости светодиода за 1 такт