[Перевод] Хранение данных во флеше вместо RAM

Ключевое слово PROGMEM - это модификатор переменной. Он должен использоваться только с типами данных, указанными в файле pgmspace.h. Он говорит компилятору "положи эту информацию во флеш память" вместо SRAM, куда она обычно попадает.

PROGMEM - это часть библиотеки pgmspace.h, которая доступна только для архитектуры AVR.

[Перевод] Оверклоккинг АЦП и семплирование высокоимпедансных источников

Это продвинутый материал для тех, кто хочет выжать из АЦП атмеги всё. Мы поговорим о внутренней работе АЦП Atmega328p (просто на случай, если вы используете Arduino) и покажем, на какие компромиссы приходится идти для оверклокинга или семплирования высокоимпедансных источников.

Увеличение числа входов-выходов через i2c

Иногда возникают ситуации, когда на Arduino уже не хватает пинов ввода-вывода для подключения всего, что душе угодно, или необходимо сосредоточить некоторое количество кнопок\светодиодов на удалении от контроллера. На помощь приходит микросхема PCF8674 - удаленный 8-битный расширитель портов ввода-вывода для шины i2c. Сегодня мы пристально ее рассмотрим, подключим и закодим. Поехали!

Arduino без кварца

Есть ли жизнь на марсе без кварца? Конечно же есть! В чипе Atmega328P, который стоит в Arduino, есть встроенный RC-генератор на 8 МГц. Он не очень точный, и его частота может плавать в зависимости от таких параметров, как температура окружающей среды. Тем не менее, для некоторых задач может быть не важна точность тактирования, а отсутствие кварца и его обвязывающих конденсаторов может сыграть существенную роль. Сегодня в номере разберем много полезного: как настроить FUSE-биты, как подключить программатор к Arduino, как добавить собственный девайс в список плат Arduino IDE, не переключайтесь!

Прерывания на всех пинах Arduino

При обработке нажатий кнопок лучше всего использовать прерывания. Если сделать опрос пинов, к которым подключены кнопки, через digitaRead() в программе, есть риск того, что контроллер будет занят не пойми чем и пропустит нажатие.

Начало работы с Arduino Create

Arduino только что представила веб-платформу, которая называется Create. По замыслу, это площадка, с которой пользователь Arduino никуда не должен уходить, пока не сделает свой проект с нуля и до конца. Сегодня мы познакомимся с одной из самых важных частей Arduino Create - Веб-редактором. Прикол этой штуки в том, что ты пишешь в браузере код и заливаешь его на ардуину, которая подключена к компьютеру. На компьютере у тебя нет ни компилятора, ни библиотек - все онлайн.

blink на прерывании таймера

В прошлый раз мы сделали блинк с использованием функции millis(). Сегодня попробуем написать еще более правильный блинк - с использованием прерывания таймера.

blink на millis

Все помнят базовый пример blink.ino:

1
2
3
4
5
6
7
8
9
10
11
12
int led = 13;
 
void setup() {                
	pinMode(led, OUTPUT);     
}
 
void loop() {
	digitalWrite(led, HIGH);
	delay(1000);
	digitalWrite(led, LOW);
	delay(1000);
}

Использование функции задержки delay() во многих случаях себя оправдывает, но лучше стараться этого избегать там, где это возможно, поскольку контроллер ничего не делает длительное время, а тратит ресурсов столько, что как-будто что-то делает. Кроме того, такие задержки заставляют ждать весь ваш последующий код, и, например, вы не сможете опросить кнопку простым digitalRead(), пока выполняется delay().

Один из самых простых способов избавиться от задержек в программе - использовать функцию millis() на пару с переменной-счетчиком.

Как работает digitalWrite

Все любят простую функцию digitalWrite(pin, LEVEL), с помощью которой так легко зажигать и гасить светодиодики на Arduino. Что она скрывает за собой? Скандалы, интриги, расследования!