Программируем Arduino. Профессиональная работа со скетчами. - страница 12

стр.

Контакты, отмеченные на плате Arduino Uno значком ~ (контакты 3, 5, 6, 9, 10 и 11), можно использовать как аналоговые выходы.


Рис. 1.18. Измерение напряжения на выходе


Если у вас есть вольтметр, установите на нем диапазон измерения 0…20 В постоянного тока и подключите положительный щуп к контакту 6, а отрицательный — к контакту GND (рис. 1.18). Затем загрузите следующий скетч.

// sketch 01_07_pwm

int pwmPin = 6;

void setup()

{

  pinMode(pwmPin, OUTPUT);

  Serial.begin(9600);

}

void loop()

{

  if (Serial.available())

  {

    int dutyCycle = Serial.parseInt();

    analogWrite(pwmPin, dutyCycle);

  }

}

Откройте монитор последовательного порта и введите число в диапазоне от 0 до 255 в текстовое поле в верхней части окна, слева от кнопки Send (Отправить). Затем щелкните на кнопке Send (Отправить) — вы должны увидеть, как на мультиметре изменится напряжение. Если послать число 0, напряжение должно упасть до 0. Отправка числа 127 должна дать середину между 0 и 5 В (2,5 В), а число 255 должно дать напряжение около 5 В.

В этом скетче функция loop начинается с оператора if. Условием для if является результат выполнения команды Serial.available(). То есть если монитор последовательного порта получил сообщение, выполняются коман­ды внутри фигурных скобок. В этом случае команда Serial.parseInt преобразует текст сообщения, введенного в окне монитора порта, в значение типа int, которое затем передается как аргумент команде analogWrite для вывода импульсов на контакт.


Использование библиотек

Так как платы Arduino обладают весьма ограниченным объемом памяти, имеет смысл включать в программу, которая в конечном итоге окажется в плате, только тот код, который действительно потребуется. Один из способов добиться этого — использовать библиотеки. В Arduino и вообще в языке C под библиотекой понимается коллекция функций.

Например, Arduino IDE включает библиотеку для работы со светодиодным жидкокристаллическим дисплеем. Она занимает примерно 1,5 Кбайт памяти для программ. Нет никакого смысла подключать эту библиотеку, если она не используется, поэтому такие библиотеки подключаются только при необходимости.

Подключение выполняется добавлением директив #include в начало скетча. Добавить инструкции include для подключения любых библиотек, поставляемых в составе Arduino IDE, можно с помощью пунктов меню Sketch—>Import Library… (Скетч—>Подключить библиотеку).

В состав Arduino IDE входит большая коллекция официальных библиотек, в том числе:

• EEPROM — для сохранения данных в электрически стираемую программируемую постоянную память (ЭСППЗУ) (Electrically Erasable Programmable Read-Only Memory);

• Ethernet — для реализации сетевых взаимодействий;

• Firmata — стандартная библиотека для реализации взаимодействий через последовательный порт;

• LiquidCrystal — для работы с алфавитно-цифровыми жидкокристаллическими дисплеями;

• SD — для чтения и записи данных на карты флеш-памяти;

• Servo — для управления сервоприводами;

• SPI — для реализации взаимодействий по шине последовательного периферийного интерфейса;

• Software Serial — для реализации взаимодействий по последовательным линиям с использованием любых цифровых выходов;

• Stepper — для управления шаговыми электромоторами;

• WiFi — для доступа к беспроводной сети WiFi;

• Wire — для реализации взаимодействий с периферией по протоколу I2C.

Некоторые библиотеки предназначены для конкретных моделей плат Arduino:

• Keyboard — позволяет платам Arduino имитировать USB-клавиатуру (Leonardo, Due и Micro);

• Mouse — позволяет платам Arduino имитировать USB-мышь (Leonardo, Due и Micro);

• Audio — утилиты для проигрывания звука (только Due);

• Scheduler — для управления выполнением нескольких потоков (только Due);

• USBHost — для подключения USB-периферии (только Due).

Наконец, существует огромное число библиотек, написанных другими пользователями Arduino, которые можно загрузить из Интернета. Далее перечислены некоторые из них, пользующиеся особой популярностью:

• OneWire — для чтения данных из цифровых устройств с интерфейсом 1-wire, выпускаемых компанией Dallas Semiconductor;