Strelets Diana

Урок 2. Начало работы с Arduino

Урок 2. Начало работы с Arduino. 

План:

1. Структура программы
2. Порты ввода-вывода микроконтроллера
3. Основные функции языка

 

Хочешь освоить программирование Arduino в аудитории и с преподавателем- записывайся на блиц-курс по робототехнике.

 

Теоретическая часть

 

1. Структура программы

Структура программы для любого микроконтроллера должна содержать главную функцию main. Минимальная программа для микроконтроллера, может иметь вид:

void main(void)

{}


Тело главной функции можно логически разбить на две части:
1) установка начальных параметров – участок кода, который выполняется один раз после включения питания платы. Здесь могут задаваться режимы работы портов, инициалиация переменных и т.д.
2) бесконечный цикл, действия в котором будут повторяться постоянно, пока включено питание платы. Основные действия платы. В программе бесконечный цикл организовывается как while с условием 1 или true.

void main(void)
{
//Инициализация
while (1)
{
//бесконечный цикл
}
}

В Arduino изпользуется язык программирования, который основан на С++, но с некоторыми особенностями и специфичными функциями. Так главная функция main в языке для Arduino явно не задается, но представлена двумя обязательными функциями: void setup() и void loop().

void setup()
{
//начальные настройки
}
void loop()
{
//бесконечный цикл
}

2. Ахритектура микроконтроллера

У микроконтроллеров есть порты ввода-вывода, которые позволяют работать с различными периферийными устройствами. Поскольку каждому выводу порта обычного назначения соответствует 1 бит, то напряжение на соответствующем выводе может меняться, принимая логическое значение либо высокий уровень (HIGH), либо низкий уровень (LOW).

Как правило высокому уровню напряжения соответствуют напряжение, равное или чуть меньше, чем напряжение питания микроконтроллера (для Arduino это +5 вольт), а низкому уровню соответствует либо уровень земли (0 вольт), либо небольшое напряжение (например, +0,2 или +0,6 вольт). Половина напряжения высокого уровня называется высоким нулём (Hi-Z).
и имеют различное назначение:
1) порты, позволяющие работать с аналого-цифровым преобразователем (АЦП). АЦП позволяет считать уровень напряжения на выводе: от 0 до 5В. Минимальному напряжению соответствует значение 0, максимальному – значение 1023.
2) Цифровые порты – напряжение на выводе может находиться в двух состояниях: высокий уровень ( HIGH ) и низкий уровень ( LOW ). Напряжение при низком уровне соответствует 0В, при высоком 5В.
3) порты, которые могут служить выходом широтно-импульсного модулятора (ШИМа) – позволяют генерировать на выходе промежуточное значение между 0 и 5В.

шим

Рисунок 1 – ШИМ

При ШИМе период между импульсами постоянный, а длительность импульсов может меняться. Отношение длительности импульса к периоду называется коэффициентом заполнения D и измеряется, как правило, в процентах. Величина обратная коэффициенту заполнения называется скважностью. Скважность величина безразмерная и обозначается буквой S.
В зависимости от длины импульса меняется результирующее напряжение на выводе. Так при коэффициенте заполнения равном 25% на порте возникает напряжение, равное примерно 1.25В. При D=50% напряжение равно 2.5В, при D=100% U=5В
4) порты, которые могут служить ЮАРТОМ
USART - универсальный синхронный и асинхронный последовательный приёмник и передатчик (Universal Synchronous and Asynchronous serial Receiver and Transmitter). Выводы Digital с маркировкой Rx(reсеiver) Tx(transmitter). Используется для связи с внешними устройствами.

5) Master/Slave SPI - последовательный периферийный интерфейс (Serial Peripheral Interface). Может работать в режиме slave (подчинённый) для программирования микроконтроллера с помощью программатора. В режиме master (мастер) можно подключать различные устройства, имеющие интерфейс SPI – использовать контроллер в качестве программатора или для подключения флеш-карты формата SD Card или MMC.
6) ряд универсальных цифровых портов ввода-выводов.

3. Основные функции языка

pinMode() – устанавливает порт в режим входа или выхода. Принимает параметр номер порта и состояние OUTPUT или INPUT.

pinMode(2,OUTPUT); //устанавливает второй порт в режим выхода.

digitalRead() – чтение состояния цифрового порта. Возвращает целое значение типа int8_t в диапазоне от 0 до 1. Имеет один параметр – номер порта.


a = digitalRead(1); //присваивает переменной а текущее состояние порта 1.


digitalWrite() – устанавливает порт в высокое или низкое состояние. Принимает параметры номер порта и состояние LOW или HIGH.


digitalWrite(2,HIGH); //устанавливает второй порт в высокое состояние.


analogRead() - чтение аналогового порта. Принимает один параметр – номер порта. Может записываться в форме analogRead(0) и analogRead(A0). Возвращает значение, пропорциональное текущему напряжению на указанном порте, в диапазоне от 0 до 255.


b=analogRead(0); //присваивает переменной b значение с порта.

analodWrite() – реализация ШИМа. Устанавливает на цифровом порту промежуточное напряжение от 0 до 5В. Принимает параметр номер порта и значение от 0 до 1023.

Практическая часть

Написать программу, которая включает и выключает светодиод с интервалом в 1000 миллисекунд. Светодиод подключен к первому порту.

void setup()
{
pinMode(1,OUTPUT);
}
void loop()
{

digitalWrite(1,HIGH);
delay(1000);
digitalWrite(1,LOW);
delay(1000);
}

 


Урок 1


Учебная программа курса


Урок 3


Похожие посты:

Уроки по Arduino: Урок 2

Учебный год 2016/2017 ЦР "Boteon" - условия оплаты

0
Комментировать
Введите код: