Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Казалось бы, вот стоит у нас задача поуправлять реле модулем, как известно он управляется цифровым выводом. Так в чем проблема? К примеру, на плате Arduino UNO у нас их аж целых  14, так лепи к какому хочешь. Ну вот и начнем по порядку. Пусть будет D0. С одной стороны верно, работать то будет. Но вот одним вечером мы решаем, что теперь нам хочется управлять нашей релюшкой дистанционно, возьмем к примеру блютуз. Вот тут и возникает проблема, ведь он работает по интерфейсу UART, а это цифровые пины 0 и 1.  Теперь придется переподключать. Если собрано на беспаечной макетке, то особых проблем быть не может, но вот если мы уже что-то куда-то подпаяли, то начинается веселая жизнь)

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

 

 

В данной статье произведем разбор полетов для Arduino UNO. Она имеет на своем борту 14 цифровых входов/выходов и 6 аналоговых входов. Начнем наш рассказ, пожалуй, с пинов отвечающих за интерфейсы.

 

1. Интерфейсы

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

Раз уж заговорили про UNO, то и рассмотрим на примере контроллера который установлен в нем - ATmega328. 

ATmega328 имеет 3 интерфейса:

 

UART

D0 - RX (Прием данных)

D1 - TX  (Отправка данных)

 

SPI

D13 - CSK (Выход тактирования данных)

D12 - MISO  (Вход данных для последовательного программирования)

D11 - MOSI  (Выход данных для последовательного программирования)

 

I2C

A4 - SDA (последовательная линия данных)

A5 - SCL  (последовательная линия тактирования)

 

Вот уже 5 цифровых из 14ти и 2 аналоговых из 6ти можно зарезервировать на самый крайний случай.

 

2. Цифровые выводы с поддержкой ШИМ (PWM)

Далее я бы присмотрелся к цифровым входам/выходам которые имеют поддержку ШИМ. На понятии ШИМ останавливаться не будем, более подробно можно почитать . Скажем вкратце, что с помощью ШИМ'а мы сможем регулировать яркость светодиодов, задавать скорости вращения двигателей, управлять сервоприводами с помощью стандартной библиотеки servo.h (правда для управления сервами используется не совсем ШИМ).

 

Цифровые пины с поддержкой ШИМ Atmega328:

D3, D5, D6, D9, D10, D11 (D11 задействует интерфейс SPI).

 

Казалось бы все, да нет). Дам вам еще один совет.

Для рассмотрения в статье, я специально за пример взял контроллер Atmega328 в DIP корпусе. Как мы знаем, у меги 328ой имеются два младших брата, также поддерживаемых средой Arduino IDE - это Atmega168 и Atmega8. ATmega168 не намного дешевле ATmega328 и отличается только количеством памяти.  А вот ATmega8 намного дешевле 328, её и можно будет и вставлять в готовый проект (если конечно хватит памяти). Однако расплатой за более низкую цену, помимо маленького объема памяти, является еще и урезанное количество цировых выводов с поддержкой ШИМ.

 

Цифровые пины с поддержкой ШИМ Atmega8:

D9, D10. D11 (D11 задействует интерфейс SPI).

 

3. Выводы поддерживающие прерывания

Важное дополнение было написано в комментариях.

: "Я бы не стал называть "пустышками" выводы D2 и D3 на atmega328. На них можно вешать внешние аппаратные прерывания".

Так что если вы собираетесь использовать в проекте прерывания, то выводы D2 и D3 также можно сразу кидать в резерв.

 

4. Итог: Рекомендуемая последовательность

Как мы видим, пустышками остается очень мало пинов.

Ну что, составим таблицу рекомендуемой последовательности:

 

Пустышки. Используем в первую очередь:

D4, D7, D8, A0, A1. A2. A3

 

ШИМ выводы, если в конечном проекте планируется переход на Atmega 8:

D5, D6

 

ШИМ выводы, если в конечном проекте планируется переход на Atmega 328:

D5, D6, D9, D10

 

Прерывания

D2, D3

 

Выводы интерфейсов. Пускаем в ход по крайней необходимости:

D0, D1, D11, D12, D13, A4, A5

 

Иллюстрация вышеописанного

 

Полезная информация

Кстати хочется упомянуть еще одну очень полезную штуку. Все аналоговые входы могут работать как цифровые выходы. Инициализация и работа абсолютно одинаковая с обычными цифровыми выводами. Необходимо просто в коде задавать порты A0...A5  как  14...19.

К примеру для того чтобы поморгать светодиодом c аналогового входа А0:

void setup() { pinMode(14, OUTPUT); // инициализируем аналоговый вход как цифровой } void loop() { digitalWrite(14, HIGH); // зажигаем светодиод delay(1000); // ждем секунду digitalWrite(14, LOW); // выключаем светодиод delay(1000); // ждем секунду }

В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.


Источник: http://zelectro.cc/development_of_the_device

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино

Устройства на ардуино


X