Лекция 46 Программирование в Arduino. Базовые знания 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекция 46 Программирование в Arduino. Базовые знания



Цели лекции:

1. Изучение программной среды разработки Arduino IDE.

2. Изучение основных компонентов платы Arduino Uno: цифровые выводы

3. Изучение основных компонентов платы Arduino Uno: аналоговые входы

4. Изучение основ широтно-импульсной модуляции

5. Изучение основ огранизации памяти

6. Знакомство со структурой программы

 

Цифровые выводы

Выводы платформы Arduino могут работать как входы или как выходы. Также ана­логовые входы Arduino (ATmega) могут конфигурироваться и работать так же, как и цифровые порты ввода/вывода.

Выводы Arduino настроены как порты ввода, поэтому не требуется декларации в функции pinMode(). Сконфигурированные порты ввода находятся в высокоимпедансном состоянии. Это означает, что порт ввода дает слишком малую нагрузку на схему, в которую он включен. Для перевода порта ввода из одного состояния в дру­гое требуется маленькое значение тока. Если к выводу ничего не подключено, то значения на нем будут принимать случайные величины, наводимые электрически­ми помехами.

Если на порт ввода не поступает сигнал, то рекомендуется задать порту известное состояние. Это делается добавлением подтягивающих резисторов 10 кОм, подклю­чающих вход либо к питанию +5 В, либо к земле.

Микроконтроллер ATmega имеет программируемые встроенные подтягивающие резисторы 20 кОм. Программирование данных резисторов осуществляется так:

pinMode(pin, INPUT); // назначить выводу порт ввода

digitalWrite(pin, HIGH); // включить подтягивающий резистор

Выводы, сконфигурированные как порты вывода находятся в низкоимпедансном состоянии. Данные выводы могут пропускать через себя достаточно большой ток. Выводы микросхемы ATmega могут быть источником тока до 40 мА. Такого значе­ния тока недостаточно для большинства реле, соленоидов и двигателей.

Короткие замыкания выводов Arduino или попытки подключить энергоемкие уст­ройства могут повредить выходные транзисторы вывода или весь микроконтроллер ATmega.

Аналоговые входы

Микроконтроллеры ATmega, используемые в Arduino, содержат шестиканальный аналого-цифровой преобразователь (АЦП). Разрешение преобразователя составляет 10 битов, что позволяет на выходе получать значения от 0 до 1023.

Аналоговые входы могут использоваться как цифровые выводы портов ввода/вывода, при этом они имеют номера от 14 до 19:

pinMode(14,OUTPUT); digitalWrite(14, HIGH);

Для вывода, работавшего ранее как цифровой порт вывода, команда analogRead будет работать некорректно. В этом случае рекомендуется сконфигурировать его как аналоговый вход.

Широтно-импульсная модуляция

Широтно-импульсная модуляция (ШИМ) — это операция получения изменяюще­гося аналогового значения посредством цифровых устройств. Подавая на выход сигнал, состоящий из высоких и низких уровней, мы моделируем напряжение между максимальным значением (5 В) и минимальным (0 В). Длительность включения максимального значения называется шириной импульса. Для получения различных аналоговых величин изменяется ширина импульса. В результате на выходе будет величина напряжения, равная площади под импульсами, показанные на рисунке

Рисунок 46.1 – Широтно-импульсная модуляция

 

Вызов функции analogWrite() с масштабом 0-255 означает, что значение analogWrite(255) будет соответствовать 5 В (100 % рабочий цикл — постоянное включение 5 В), а значение analogWrite(127) — 2,5 В (50 % рабочий цикл).

Память в Arduino

В микроконтроллерах ATmega168, ATmega328, ATmega1280, ATmega2560, исполь­зуемых на платформах Arduino, существует три вида памяти:

- флеш-память — используется для хранения скетчей;

- ОЗУ (статическая оперативная память) — служит для хранения и работы пере­менных;

- EEPROM (энергонезависимая память) — применяется для хранения постоянной информации.

Флеш-память и EEPROM являются энергонезависимыми видами памяти (дан­ные сохраняются при отключении питания). ОЗУ является энергозависимой па­мятью.

Микроконтроллер ATmega168 имеет:

-  16 Кбайт флеш-памяти (2 Кбайт используется для хранения загрузчика);

-  1024 байта ОЗУ;

-  512 байт EEPROM.

Для ATmega328 эти показатели следующие:

-  32 Кбайт флеш-памяти (2 Кбайт используется для хранения загрузчика);

-  2 Кбайт ОЗУ;

-  1024 байт EEPROM.

Для ATmega1280 эти показатели следующие:

-  128 Кбайт флеш-памяти (2 Кбайт используется для хранения загрузчика);

- 8 Кбайт ОЗУ;

-  4096 байт EEPROM.

Для ATmega2560 эти показатели следующие:

-  256 Кбайт флеш-памяти (2 Кбайт используется для хранения загрузчика);

-  16 Кбайт ОЗУ;

-  9182 байт EEPROM.

При отсутствии свободного места в ОЗУ могут произойти сбои программы.

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.120.109 (0.005 с.)