Данный документ описывает создание библиотеки для Arduino. Объяснение начнется с написания скетча передачи кода Морзе посредством светодиода. Затем будет показано как конвертировать скетч в библиотеку. Это позволит другим пользователям легко использовать созданный код, обновлять и дополнять его.
Скетч, воспроизводящий код Морзе:
int pin = 13;
void setup()
{
pinMode(pin, OUTPUT);
}
void dot()
{
digitalWrite(pin, HIGH);
delay(250);
digitalWrite(pin, LOW);
delay(250);
}
void dash()
{
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(250);
}
«Робототехника». Уровень 5. Занятие 3.
Тема занятия: Библиотеки SPI и Stepper.
Продолжительность занятия: 2 часа.
Библиотека SPI
Библиотека SPI позволяет контроллеру Arduino взаимодействовать с
устройствами поддерживающими SPI протокол. Arduino в данном случае
выступает в качестве ведущего устройтва.
Коротко о Serial Peripheral Interface (SPI).
Последовательный периферийный интерфейс (SPI) — это последовательный
синхронный протокол передачи данных используемый микроконтроллерами
для обмена данными с одним или несколькими периферийными устройствами
на небольших расстояниях.
Для организации соединения SPI необходимо одно ведущее устройство,
обычно это микроконтроллер, которое управляет соединением с ведомыми
устройствами. Обычно подключение осуществляется тремя общими линиями
и линией выбора периферийного (ведомого) устройства:
Master In Slave Out (MISO), переводится как "вход ведущего выход
ведомого", используется для передачи данных от ведомого к ведущему.
Master Out Slave In (MOSI) — выход ведущего вход ведомого, для
передачи данных от ведущего к периферийным устройствам.
Serial Clock (SCK) — синхронизирующая линия, синхросигнал
генерируется ведущим устройством.
Slave Select pin — вход на ведомых устройствах с помощью которого
ведущий может инициировать обмен данными с периферийным устройством.
Если на этом входе LOW, то ведомый взаимодействует с ведущим,
если HIGH, то ведомый игнорирует сигналы от ведущего.
При работе с SPI устройствами надо учитывать следующие моменты:
Какой порядок вывода данных используется: Most Significant Bit (MSB
старший бит (разряд)) or Least Significant Bit (LSB младший бит) первый.
Порядок может быть изменен функцией SPI.setBitOrder().
Уровень сигнала синхронизации — по какому синхронизирующему
сигналу (HIGH или LOW) передаются данные.
Фаза синхронизации — влияет на последовательность установки и
выборки данных. Фаза синхронизации SPI и уровень сигнала задается
функцией SPI.setDataMode().
Скорость на которой работает SPI устанавливается
функцией SPI.setClockDivider().
Производители SPI устройств несколько по разному реализуют протокол,
поэтому необходимо внимательно ознакомиться с техническим описанием к
устройству. Комбинация фазы синхронизации (CPHA) и уровня сигнала
синхронизации (CPOL) задают режим логики работы интерфейса SPI. Режим
устанавливается функцией SPI.setDataMode().
Режим Уровень сигнала (CPOL) Фаза (CPHA)
0
1
2
3
0
0
1
1
0
1
0
1
Подключение
На контроллерах Arduino Duemilanove и других на базе ATmega168 /328,
шина SPI использует выходы 10 (SS), 11 (MOSI), 12 (MISO), и 13 (SCK). На
Arduino Mega — 50 (MISO), 51 (MOSI), 52 (SCK), и 53 (SS). Обратите
внимание, что даже если вы не используете выход SS, он должен быть
установлен как выход, в противном случае интерфейс может оказаться в
режиме ведомого и библиотека не будет работать как надо.
В качестве SS выхода может быть использован выход отличный от 10го.
Например, при работе с Arduino Ethernet shield контроллер использует выход
4 для взаимодействия с SD картой по SPI и выход 10 для работы с Ethernet
контроллером.Функции
begin()
end()
setBitOrder()
setClockDivider()
setDataMode()
transfer()
Библиотека Stepper
Библиотека Stepper предоставляет удобный интерфейс управления
биполярными и униполярными шаговыми двигателями. Для управления
шаговым двигателем, в зависимости от его типа (биполярный или
униполярный) и выбранного способа подключения, понадобятся некоторые
дополнительные электронные компоненты.
Подключение
1) Униполярный шаговый двигатель, управление через 2 выхода. В
данном и следующем подключение используется микросхема драйвера
нагрузки ULN2003 или ULN2004 (Darlington array).2) Униполярный шаговый двигатель, управление через 4 выхода.
3) Биполярный шаговый двигатель, управление через 2 выхода.
Подключение на примере микросхемы L293D.4) Биполярный шаговый двигатель, управление через 4 выхода.
Подключение с помощью микросхемы SN754410NE.
Функции
Stepper(steps, pin1, pin2)
Stepper(steps, pin1, pin2, pin3, pin4)
setSpeed(rpm)
step(steps)