Целые 16-битные значения со знаком | |||
unsigned int | 2 | 0…65 535 | Используется для увеличения точности в расчетах, где не используются отрицательные числа. Применяйте с осторожностью, так как при использовании в выражениях совместно со значениями типа int могут получаться неожиданные результаты |
long | 4 | –2 147 483 648…+ 2 147 483 647 | Требуется только для представления очень больших чисел |
unsigned long | 4 | 0…4 294 967 295 | См. описание типа unsigned int |
float | 4 | –3,4028235E+38…+3,4028235E+38 | Используется для представления вещественных чисел |
double | 4 | Как для типа float | Этот тип должен был бы занимать 8 байт и иметь более широкий диапазон и более высокую точность по сравнению с типом float. Но в Arduino тип double является полным аналогом типа float |
Команды Arduino
В библиотеке Arduino доступно большое число команд. В табл. 1.2 перечислены наиболее часто используемые из них вместе с примерами.
Таблица 1.2. Функции из библиотеки Arduino
Команда | Пример | Описание |
---|---|---|
Цифровой ввод/вывод | ||
pinMode | pinMode(8, OUTPUT); | Переводит контакт 8 в режим работы цифрового выхода. Поддерживаются также режимы INPUT и INPUT_PULLUP |
digitalWrite | digitalWrite(8, HIGH); | Устанавливает высокий уровень напряжения на контакте 8. Чтобы установить низкий уровень напряжения, используйте константу LOW вместо HIGH |
digitalRead | int i; i = digitalRead(8); | Присваивает переменной i значение HIGH или LOW в зависимости от уровня напряжения на указанном контакте (в данном случае — на контакте 8) |
pulseIn | i = pulseIn(8, HIGH); | Возвращает продолжительность в микросекундах следующего импульса с напряжением HIGH на контакте 8 |
tone | tone(8, 440, 1000); | Генерирует на контакте 8 серию импульсов с частотой 440 Гц продолжительностью 1000 мс |
noTone | noTone(); | Прерывает любые серии импульсов, запущенные вызовом tone |
Аналоговый ввод/вывод | ||
analogRead | int r; r = analogRead(0); | Присваивает переменной r значение в диапазоне от 0 до 1023. Значение 0 соответствует напряжению 0 В на контакте 0, а значение 1023 — напряжению 5 В (или 3,3 В, если для питания платы используется напряжение 3,3 В) |
analogWrite | analogWrite(9, 127); | Выводит широтно-импульсный сигнал. Протяженность положительного импульса может изменяться в диапазоне от 0 до 255, где число 255 соответствует 100%. Этой функции можно передавать номера контактов, обозначенных на плате как PWM (контакты 3, 5, 6, 9, 10 и 11) |
Команды для работы со временем | ||
millis | unsigned long l; l = millis(); | Переменные типа long в Arduino хранят 32-битные значения. Значение, возвращаемое функцией millis(), — это число миллисекунд, прошедших с момента последнего сброса платы. Примерно через 50 дней значение обнуляется и счет начинается заново |
micros | long l; l = micros(); | Действует подобно millis, но возвращает число микросекунд, прошедших с момента последнего сброса платы. Значение обнуляется примерно через 70 минут |
delay | delay(1000); | Приостанавливает работу скетча на 1000 мс, или на 1 с |
delayMicroseconds | delayMicroseconds(10000) | Приостанавливает работу скетча на 10 000 мкс. Обратите внимание: минимальная задержка составляет 3 мкс, максимальная — около 16 мс |
Прерывания (глава 3) | ||
attachInterrupt | attachInterrupt(1, myFunction, RISING); | Устанавливает функцию myFunction, как обработчик положительного фронта прерывания 1 (контакт D3 в UNO) |
detachInterrupt | detachInterrupt(1); | Запрещает обработку сигналов от прерывания 1 |
Полный перечень всех команд Arduino вы найдете в официальной документации на сайте Arduino: http://arduino.cc [6].
В заключение
Из-за ограниченного объема книги в этой главе было дано очень краткое введение в мир Arduino. Более подробную информацию об основах вы найдете на многочисленных онлайн-ресурсах, включая бесплатные руководства по Arduino на сайте http://www.learn.adafruit.com.
В следующей главе мы заглянем под капот Arduino и посмотрим, как действует эта плата и что происходит у нее внутри, используя для этого удобную среду программирования Arduino.
2. Под капотом
Самое замечательное в Arduino — в большинстве случаев нет необходимости знать, что происходит за кулисами после того, как вы выгрузите скетч. Но так как вы собираетесь вникнуть в особенности работы Arduino и узнать больше о ее возможностях, вы должны знать чуть больше о происходящем в ее глубинах.
Краткая история Arduino
Первая плата Arduino была создана в 2005 году в итальянском Институте проектирования взаимодействий (Interaction Design Institute) в городе Ивреа, близ Турина. Целью было создание недорогого и простого в использовании инструмента для обучения студентов искусству проектирования интерактивных систем. Программное обеспечение для Arduino, которое обеспечило этой плате значительную долю успеха, является доработкой открытого фреймворка с названием Wiring, созданного студентом этого же института.
Доработанная версия для Arduino получилась очень близкой к оригиналу Wiring, а среда разработки Arduino IDE написана с использованием фреймворка Processing, старшего брата Wiring, способного работать на PC, Mac и других персональных компьютерах. Вам стоит обратить внимание на Processing, если вы работаете над проектом, в котором плата Arduino должна обмениваться информацией с PC через USB или Bluetooth.
Аппаратура Arduino все эти годы продолжала развиваться, но современные платы Arduino Uno и Leonardo сохранили форму и набор контактов, доставшиеся от оригинала.
Устройство Arduino
На рис. 2.1 изображена структурная схема платы Arduino Uno. Модель Leonardo имеет схожее устройство, но интерфейс USB в ней