Содержание
- 1 Передача массива в функцию (Pro)
- 2 Класс
- 3 3. Подключение платы Arduino к компьютеру
- 4 Пространство имён (Pro)
- 5 Как настроить Ардуино?
- 6 Критерии выбора
- 7 Железо
- 8 С чего начать работу с Ардуино
- 9 Из чего состоит Arduino?
- 10 Платы и модули для функционала
- 11 Деструктор
- 12 Важные страницы
- 13 Дребезг контактов
- 14 Элементы платы
- 15 Raspberry Pi
- 16 Физические свойства вольфрама:
- 17 Главный Глупый Вопрос
- 18 Beaglebone Black
- 19 Нужно ли знать программирование?
Передача массива в функцию (Pro)
Иногда бывает нужно передать в функцию массив (мы о них уже говорили), передать именно массив целиком, а не отдельный его элемент. В этом случае уже не обойтись без указателей (читай урок про указатели). В следующем примере наша функция будет суммировать элементы массива, который в неё передаётся. Функция заранее знает, сколько в массиве элементов, потому что я явно цифрой указал количество в цикле .
int c; int myArray[] = {100, 30, 890, 645, 251}; void setup() { c = sumFunction(myArray); // результат 1916 } void loop() { } int sumFunction(int *intArray) { int sum = 0; // переменная для сложения for (byte i = 0; i < 5; i++) { sum += intArray; } return sum; }
Что из этого нужно запомнить: при описании функции параметр массива указывается со звёздочкой, т.е. . При вызове массив передаётся как . И в целом всё.
Давайте покажу как сделать универсальную функцию, которая суммирует массив любого размера. Для этого нам поможет оператор , возвращающий размер в байтах. Этот размер нам нужно будет передать как аргумент функции:
int c; int myArray[] = {100, 30, 890, 645, 251, 645, 821, 325}; void setup() { // передаём сам массив и его размер в БАЙТАХ c = sumFunction(myArray, sizeof(myArray)); } void loop() { } int sumFunction(int *intArray, int arrSize) { // переменная для суммирования int sum = 0; // находим размер массива, разделив его вес // на вес одного элемента (тут у нас int) arrSize = arrSize / sizeof(int); for (byte i = 0; i < arrSize; i++) { sum += intArray; } return sum; }
И вот мы получили функцию, которая суммирует массив типа данных любой длины и возвращает результат.
Важно! Переданный в функцию массив не дублирует исходный массив! Любые действия, совершённые с переданным массивом, влияют на “оригинальный” массив!
Класс
Класс является одним из самых крупных и важных понятий и инструментов языка C++, именно он делает язык объектно-ориентированным и очень мощным. Мы очень часто пользуемся объектами и методами, ведь 99% библиотек являются просто классами! Объекты, методы, что это? Я могу привести несколько официальных определений (хотя вы сами можете их загуглить), но не буду, потому что они очень абстрактные и ещё сильнее вас запутают. Давайте рассмотрим всё на примере библиотеки, пусть это будет стандартная и всем знакомая библиотека Servo. Возьмём из неё пример Knob и разберёмся, где кто и как называется.
#include <Servo.h> // подключаем заголовочный ФАЙЛ библиотеки, Servo.h Servo myservo; // создаём ОБЪЕКТ myservo КЛАССА Servo int potpin = 0; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // применяем МЕТОД attach к ОБЪЕКТУ myservo } void loop() { val = analogRead(potpin); val = map(val, 0, 1023, 0, 180); myservo.write(val); // применяем МЕТОД write к ОБЪЕКТУ myservo delay(15); }
Итак, мы можем создать объект класса, и применять к нему методы. Какую первую мысль вызывает использование объекта? Правильно, “ой, как удобно“! Ведь мы можем создать несколько объектов Servo, и управлять каждым в отдельности при помощи одинаковых методов, но каждый объект будет обладать индивидуальным набором настроек, которые хранятся где-то внутри него. Это и есть объектно-ориентированный подход, позволяющий создавать очень сложные многоуровневые программы, не испытывая особых трудностей.
Классы очень похожи на , как по объявлению, так и по использованию, но класс является гораздо более мощной единицей языка: если в структуре мы под одним именем храним переменные разных типов, то в классе мы храним не только переменные, но и собственные функции класса. Функции внутри класса кстати и называются методами.
3. Подключение платы Arduino к компьютеру
- Соедините Arduino с компьютером по USB-кабелю. На плате загорится светодиод «ON» и начнёт мигать светодиод «L». Это значит, что на плату подано питание и микроконтроллер начал выполнять прошитую на заводе программу «Blink».
- Для настройки Arduino IDE под конкретную модель узнайте, какой номер COM-порта присвоил компьютер вашей плате. Зайдите в «Диспетчер устройств» Windows и раскройте вкладку «Порты (COM и LPT)».
Операционная система распознала плату Arduino как COM-порт и назначила номер . Если вы подключите к компьютеру другую плату, операционная система назначит ей другой номер
Если у вас несколько платформ, очень важно не запутаться в номерах COM-портов.
Что-то пошло не так?
После подключения Arduino к компьютеру, в диспетчере устройств не появляются новые устройства? Это может быть следствием следующих причин:
- Неисправный USB-кабель или порт
- Блокировка со стороны операционной системы
- Неисправная плата
Пространство имён (Pro)
Пространство имён – очень удобная возможность языка, с её помощью можно разделить функции или переменные с одинаковыми именами друг от друга, то есть защитить свой набор данных инструментов от конфликтов имён с другими именами. “Именная область” определяется при помощи оператора :
namespace mySpace { // функции или данные };
Чтобы использовать содержимое из пространства имён, нужно обратиться через его название и оператор разрешения области видимости
mySpace::имя_функции
Более подробный пример:
namespace mySpace { byte val; void printKek() { Serial.println("kek"); } }; void setup() { Serial.begin(9600); // printKek(); // приведёт к ошибке mySpace::printKek(); }
Также есть оператор , позволяющий не использовать каждый раз обращение к пространству имён. Например, в отдельном файле у нас есть пространство имён с различными функциями. Чтобы в основном файле программы каждый раз не писать ярлык пространства имён с , можно написать
using имя_пространства_имён;
И ниже по коду можно будет пользоваться содержимым пространства имён без обращения через
Как настроить Ардуино?
Одним из главных преимуществ конструктора является его безопасность относительно настроек пользователя. Ключевые настройки, потенциально опасные для Arduino, являются защищенными и будут недоступны.
Поэтому даже неопытный программист может смело экспериментировать и менять различные опции, добиваясь нужного результата. Но на всякий случай очень рекомендуем прочитать три важных материала по тому как не испортить плату:
- Как уберечь Arduino и другие платы от кривых рук
- 10 способов «убить» микроконтроллер Arduino
Алгоритм классической настройки программы Arduino выглядит так:
- установка IDE, которую можно загрузить ниже или здесь или с сайта производителя;
- установка программного обеспечения на используемый ПК;
- запуск файла Arduino;
- вписывание в окно кода разработанную программу и перенос ее на плату (используется USB кабель);
- в разделе IDE необходимо выбрать тип конструктора, который будет использоваться. Сделать это можно в окне «инструменты» — «платы»;
- проверяете код и жмете «Дальше», после чего начнется загрузка в Arduino.
1.8.7 | Код на Github |
1.8.6 | Код на Github |
1.8.5 | Код на Github |
1.8.4 | Код на Github |
1.8.3 | Код на Github |
1.8.2 | Код на Github |
1.8.1 | Код на Github |
1.8.0 | Код на Github |
1.6.13 | Код на Github |
1.6.12 | Код на Github |
1.6.11 | Код на Github |
1.6.10 | Код на Github |
1.6.9 | Код на Github |
1.6.8 | Код на Github |
1.6.7 | Код на Github |
1.6.6 | Код на Github |
1.6.5 | Код на Github |
1.6.4 | Код на Github |
1.6.3 | Код на Github |
1.6.2 | Код на Github |
1.6.1 | Код на Github |
1.6.0 | Код на Github |
1.5.8 BETA | Код на Github |
1.5.7 BETA | Код на Github |
1.5.6-r2 BETA | Код на Github |
1.5.5 BETA | Код на Github |
1.5.4 BETA | Код на Github |
1.5.3 BETA | Код на Github |
1.5.2 BETA | Код на Github |
1.5.1 BETA | Код на Github |
1.5 BETA | Код на Github |
Критерии выбора
Если проект разрабатывается самостоятельно или плата покупается для различных экспериментов, то стоит брать более универсальные модели. В этом плане зарекомендовало себя устройство Arduino Uno.
Также при выборе стоит обратить внимание на такие параметры:
- Количество выводов. Их не всегда хватает при подсоединении большого количества датчиков и внешних устройств. Например, для подключения простого ЖК-экрана может понадобиться от 6 выводов.
- Память. Загрузчик занимает заданный объем памяти контроллера. В отдельных случаях ее недостаточно (если программа громоздкая). То же касается ОЗУ.
- Питание. Есть платы с низким энергопотреблением и питанием (от 3,3 В), со стандартными показателями (5 В) или с возможностью подключения источника до 12 В (например, для автомобиля).
- Тактовую частоту, размер платы, наличие USB-порта.
Новая плата от Ардуино.
Железо
Помимо микроконтроллера на отладочной плате стоит обвязка, необходимая для его работы: это кварцевый генератор, задающий частоту работы процессора, и “рассыпуха” – конденсаторы и резисторы, выполняющие фильтрующие и подтягивающие функции.
Arduino “на минималках”: кварц, конденсаторы и прочее
Давайте так: что нужно сделать для того, чтобы собрать устройство на микроконтроллере? Нужно подключить к выходам микроконтроллера необходимые устройства (далее – “железо”), загрузить на микроконтроллер прошивку, которая будет управлять этим железом, и обеспечить всё это дело стабильным питанием. Цель разработчиков ардуино была совместить вышеуказанное с простотой и удобством работы и модульностью, тем самым превратив разработку электронных устройств в мощный универсальный конструктор. Эта цель была достигнута так: на плате, вместе с микроконтроллером, разместили “программатор” для загрузки прошивки, usb порт и стабилизатор питания, позволяющий питать плату от широкого диапазона постоянных напряжений: 5-19 вольт. Микроконтроллеру нужно 5 вольт, что стабилизатор ему и обеспечивает.
С чего начать работу с Ардуино
Если вы делаете первые шаги в мире Ардуино, то советуем вам заранее приготовиться к двойному потоку знаний. Во-первых, вам придется разобраться с тем, что такое контроллер Arduino, какие устройства можно к нему подключить и как это сделать. Потребуется разобраться с основами электроники. Во-вторых, придется научиться навыкам программирования в Arduino. Для профессиональной работы нужны знания C++, для начинающих доступны многочисленные графические среды с блочным программированием. Например, mBlock или ArduBlock. При отсутствии реальной платы можно воспользоваться одним из эмуляторов ардуино.
Все это потребует и времени, и знаний, но результатом станет удивительное ощущение восторга от сделанных своими руками умных устройств
Счастья от того, что вы стали почти волшебником, приближаясь шаг за шагом к вершинам технического мастерства. Крайне важно, чтобы теория сочеталась с практикой и вы как можно быстрее переходили от чтения статей к созданию реальных устройств
Из чего состоит Arduino?
На аппаратном уровне это серия смонтированных плат, мозгом которых являются микроконтроллеры семейства AVR.
Платы имеют на борту всё необходимое для комфортной работы, но их функциональности часто бывает недостаточно. Чтобы сделать свой проект более интерактивным, можно использовать различные модули и платы расширений, совместимые с платформой Arduino. Сюда входят датчики (температуры, освещения, влаги, газа/дыма, атмосферного давления), устройства ввода (клавиатуры, джойстики, сенсорные панели) и вывода (сегментные индикаторы, LCD/TFT дисплеи, светодиодные матрицы).
На программном уровне платформа Arduino представляет собой бесплатную среду разработки Arduino IDE. Микроконтроллеры надо программировать на языке C++, с некоторыми отличиями и облегчениями, созданными для быстрой адаптации начинающих. Компиляцию программного кода и прошивку микроконтроллера среда разработки берёт на себя.
Существует также s4a.cat — сервис, базирующийся на Scratch, позволяющий более наглядно вести разработку на Arduino. Он подойдёт для обучения детей, а также если вы разово хотите создать простое устройство без изучения языка программирования Arduino и различных документаций. Для остальных же случаев лучше придерживаться традиционного процесса разработки.
2
Платы и модули для функционала
Существует много плат Arduino, описание которых говорит о различиях в объеме памяти, портах, питании, тактовой частоте и др. Одни предназначены для решения простых задач, другие — для решения более сложных.
К популярным платам относятся следующие виды:
-
Arduino Uno.
Наиболее распространенная плата. Есть большой выбор уроков. Плата допускает замену контроллера. Оснащена 14 цифровыми вводами-выводами (6 ШИМ), 6 аналоговыми входами, флеш-памятью 32 Кб (ATmega328), из которых 0,5 Кб использует загрузчик. -
Arduino Mega 2560.
Создана на базе микроконтроллера ATmega2560. Флеш-память — 256 Кб, из которых 8 Кб использует загрузчик. Имеет 54 цифровых вводов-выводов (14 ШИМ), 16 аналоговых входов, 8 Кб оперативной памяти. Среди всех плат «Ардуино» у этой самый большой размер. -
Arduino Due.
Оснащена 54 цифровыми вводами-выводами (12 ШИМ), 12 аналоговыми входами (2 выходами). Создана на базе микроконтроллера AT91SAM3X8E с рабочим напряжением 3,3 В и флеш-памятью 512 Кб. -
Arduino Pro Mini 3.3V.
Самая миниатюрная плата в семействе Arduino. Напряжение — 3,3 В. Требует использования внешнего программатора. Память данных составляет 2 Кб. Создана на базе микроконтроллера ATmega328P. Количество цифровых выводов — 14 линий (6 из которых — ШИМ), аналоговых — 6. -
Arduino Pro Mini 5V.
Аналог предыдущей модели с напряжением 5 В. -
Arduino Nano V3.0.
Создана на базе ATmega328. Сдержит 32 Кб памяти, из которых 2 Кб использует загрузчик. Имеет 14 цифровых вводов-выводов (6 ШИМ), 6 аналоговых входов, встроенный порт USB. Напряжение — 5 В. -
Arduino Micro.
Разновидность платы c возможностью имитировать различные USB-устройства при подключении к ПК. Оснащена 20 цифровыми вводами-выводами (7 ШИМ), 12 аналоговыми входами.
Кроме того, существуют дополнительные модули и датчики с нужными ответвлениями:
-
Датчики.
Системы, считывающие, отправляющие и обрабатывающие информацию. Расширяют аппаратные функции проекта. -
Модули.
Дополнения, которые позволяют расширить вычислительные мощности проекта. К ним относят карты памяти, вспомогательные процессы.
Датчики можно разделить на категории:
-
Устройства получения информации.
Датчики и сканеры, позволяющие получить сведения об окружающей среде: давлении, температуре, влажности, расстоянии до объектов. Есть возможность вводить параметры, зависящие от этих показаний. С помощью датчика расстояния можно создавать роботы-пылесосы, которые передвигаются по комнате, избегая препятствий. -
Устройства обработки информации.
Реализуются отдельно или совместно с предыдущими датчиками. Используются для совершения промежуточных операций. -
Устройства вывода информации.
Это ЖК-экраны, светодиодные индикаторы, сенсорные экраны, динамики и т. д.
Среди наиболее популярных модулей «Ардуино» можно выделить:
-
Ультразвуковой дальномер HC-SR04.
Датчик, позволяющий с помощью ультразвука измерить расстояние от 2 см до 4 м. -
Инфракрасный дальномер Sharp.
Измеряет расстояние от 20 см до 1,5 м посредством инфракрасного излучения. -
Модуль температуры и влажности DHT11.
Измеряет температуру в диапазоне от 0 до +50°C и влажность от 20 до 90%. Используется для теплиц или в качестве комнатного термометра. Часто приобретается для умного дома. -
Датчик влажности почвы FC-28.
Измеряет влажность почвы или другой среды. Нужен для автоматизированного полива растений. -
Bluetooth HC-06.
Помогает организовать беспроводную связь с другими устройствами.
Деструктор
Наряду с конструктором класса существует также деструктор (от англ. destruct – разрушать), который выполняет противоположное действие: уничтожает объект, убирает его из динамической памяти. Как и конструктор, деструктор создаётся автоматически, если не указывать его явно. Деструктор также можно объявить самостоятельно, для выполнения каких-то действий при уничтожении класса, например для освобождения динамической памяти. Деструктор объявляется точно так же, как конструктор, т.е. имя совпадает с именем класса, возвращаемого типа данных нет. Единственное отличие – тильда ~ перед именем. Рассмотрим наш класс из этого урока, у него деструктор будет
Рассмотрим пример, заодно вспомним про область видимости переменных. Если создать объект вне функций – он будет создан глобальным, и будет существовать на протяжении всего времени работы программы. Если создать его внутри функции или блока кода – он будет существовать только в пределах этого блока, то есть переменные класса будут занимать память на протяжении выполнения этого блока кода. Рассмотрим вот такой класс:
class Color { // класс Color public: Color() {}; // конструктор void printHello() { Serial.println("Hello"); }; ~Color() { // деструктор Serial.println("destruct"); }; byte someVar; // какая-то переменная private: };
В нём есть пустой конструктор, печатающий hello метод и деструктор. Выполним вот такой код:
Color myColor3; void setup() { Serial.begin(9600); myColor3.printHello(); }
В выводе порта увидим Hello и всё, потому что объект глобальный и деструктор не вызвался в процессе работы, потому что объект не уничтожался.
Внесём создание объекта в блок функции и посмотрим, что будет
void setup() { Serial.begin(9600); Color myColor3; myColor3.printHello(); } // тут myColor3 уничтожается
Объект создан внутри функции, и при выходе из этой функции, то есть сразу после прохождения через закрывающую фигурную скобку , объект будет уничтожен, будет вызван деструктор и в порт выведется .
Как и зачем применять это на практике: читайте урок про динамическую память, в жизни она вам врядли пригодится, но без неё цикл уроков не был бы полным. Если внутри объекта выделяется память под какие-то действия, то в деструкторе эту память хорошо-бы освобождать. Как пример можно рассмотреть стандартный класс , объекты которого – строки с символами, располагаются в динамической памяти, и если создавать строку локально – она уничтожается после выхода из блока её функции, потому что так написано в деструкторе:
String::~String() { free(buffer); }
Итак, мы с вами поэтапно создали класс и изучили большую часть особенностей работы с классами. На этом завершается раздел программирования, и начинается раздел базовых уроков Ардуино. А к классам мы ещё вернёмся, когда будем писать свою собственную библиотеку!
Важные страницы
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
Дребезг контактов
Очень хорошо, когда всё идеально. Но к сожалению всё на так и идеально. И с кнопками та же проблема. Механические контакты кнопки не могут замыкаться/размыкаться мгновенно. Это называется «дребезг контактов». Как это понять. На вход микроконтроллера поступают импульсы. Но вместо того чтоб просто получить 1 или 0 из-за данного явления на вход поступает целая кучка импульсов. Это может создать ложные сигналы. И именно поэтому мы делаем небольшую задержку в нашей программе. На скорость это особо не повлияет, но обеспечит нас от ошибки.
На этом у нас конец второй части
Спасибо за внимание
Элементы платы
Микроконтроллер ATmega328P
Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц.
Контроллер обладает тремя видами памяти:
- 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Arduino Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
- 2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
- 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению — это аналог жёсткого диска для Arduino.
Микроконтроллер ATmega16U2
Микроконтроллер не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.
общается с ПК через по интерфейсу UART используя сигналы и , которые параллельно выведены на контакты и платы Arduino Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
ON | Индикатор питания платформы. |
L | Пользовательский светодиод на пине микроконтроллера. Используйте определение для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается. |
RX и TX | Мигают при прошивки и обмене данными между Arduino Uno и компьютером. А также при использовании пинов и . |
Порт USB Type-B
Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобиться кабель USB (A — B).
Понижающий регулятор 5V
Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.
Понижающий регулятор 3V3
Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.
ICSP-разъём ATmega328P
ICSP-разъём выполняет две полезные функции:
- Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах , , и .
- Предназначен для загрузки прошивки в микроконтроллер через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет .
А подробности распиновки .
Raspberry Pi
LCD Series
- Rpi
HD 3.5 inch TFT* - USB
16×2 RGB LCD - Raspberry
pi 0.91 inch OLED Module SKU:385011 - 2.2
inch TFT Display SKU:398437 - 16×2
LCD with Keypad and Backlit SKU:297384 - MZTX06A
2.2 inch IPS TFT LCD Module SKU:318482 - Robopeak
2.8 inch USB TFT Module SKU:284995 - 3.2
Inch TFT Lcd Touch Screen SKU:340835 - 3.5
inch TFT LCD Touch Screen SKU:363295(HOT) - 5
inch HDMI TFT LCD Touch Screen SKU:384212(HOT) - 7
inch Digital LCD Screen SKU:275810 - 7
inch Digital Touch Screen SKU:318884 - 7
inch HDMI TFT Capacitive Touch Screen 800×480 SKU:400579 - 7
inch HDMI TFT Capacitive Touch Screen 1024×600 SKU:408999 - Raspberry
Pi Official 7 Touch Screen SKU:414167(HOT) - 10.1
inch Digital IPS Screen SKU:275804 - 7
inch HDMI IPS Capacitive Touch Screen 1024×600 - RPI
10.1 inch Capacitive IPS HDMI LCD 1280*800
HIFI Series
- RPI
HIFI DiGi+ Digital Audio Card SKU:366963 - RPI
HIFI DAC+ Digital Audio Card SKU:363003 - RPI
HIFI Digi Digital Audio Card(for Model B) SKU:347529 - AD/DA
Shield Module SKU:359719 - 4
in 1 Temperature Pressure Altitude Light Sensor SKU:359549 - 16-Channel
Servo Control Board SKU:340853 - Cascading
and Overlapping Base Board SKU:357254 - MPR121
Capacitive Touch Sensor Module SKU:374406 - VGA
Shield SKU:369600
X Serial expansion
board
Other
- Dual
MicrofCard Adapter - USB
to TTL - RPI
Screws Prototype Add-on V2.0 - RPI
Arduino OLED Add-on V2.0 SKU:414671 - Mini
USB Camera SKU:408731 - Raspberry
Pi Add-On GPS HAT Module SKU:424254 - Raspberry
Pi DIDO Board SKU:424282 - 170
Degree Fisheye Lens HD Camera - 160
degree Fisheye Lens Raspberry pi Camera SKU:423129 - Wireless
2.4GHz USB Mini Keyboard SKU:288368 - Mini
Wireless 2.4GHz Keyboard SKU:269008 - Mini
Bluetooth V3.0 76-key Keyboard SKU:204344 - Explore
— NFC, Near Field Communications SKU:317433 - GertBoard
GertDuino — RPI, Arduino-Like ATMEGA I/O Board SKU:317444 - Pi
Lite Pi Matrix SKU:323187 - Pi
Lite Pi Matrix SKU:323733 - Unlimited
Cascading IO Expansion Board SKU:324760 - Raspberry
Pi Model B+ SKU:334720 - Full
Function Expansion Board Development Kits SKU:338435 - EnOcean
Pi 868MHz Radio Transceiver Gateway Module SKU:351832 - 8
x 8 x 2 LED Matrix Module SKU:354749 - 1-Port
USB Network Card 3-Port USB Hub SKU:369296 - Raspberry
Pi 2 Model B SKU:378251 - PiFace
Digital 2 SKU:382231 - MEGA2560/1280
Proto Shield SKU:384877 - NodeMcu
Lua ESP8266 SKU: - GPS
Module SKU:384916 - DFRobot
V3 RPSMA Wi-Fi Shield SKU:388060 - TTL
to USB Serial Debug Cable SKU:391535 - TI
EK-TM4C123GXL LAUNCHPAD, TIVA C Kit SKU:391891 - I2C
RTC Real Time Clock Module SKU:398854 - Aluminum
Enclosure / Case Box + 2.2 SKU:400578 - Mini
CPU Memory Display Shield V3.1 SKU:401126 - Cirrus
Logic Audio Card SKU:409786 - Sim800
Expansion Board with GSM / GPRS / SMS SKU:414207 - GPS
Expansion Board SKU:414213 - Raspberry
PI to Arduino Expansion Board V2.0 SKU:414670 - HAT
with Orientation, Pressure, Humidity and Temperature Sensors SKU:415439 - Stepper/Motor/Servo
Robot Expansion Board SKU:418460 - Raspberry
Pi Official Case SKU:397320 - EXP
Expresscard GDC Video Card SKU: 412508 - RPI
Lithium Battery Expansion Board SKU:435230
Физические свойства вольфрама:
Главный Глупый Вопрос
У новичков в электронике, которые не знают закон Ома, очень часто возникают вопросы вида: “а каким током можно питать Ардуино“, “какой ток можно подать на Ардуино“, “не сгорит ли моя Ардуина от от блока питания 12V 10A“, “сколько Ампер можно подавать на Arduino” и прочую чушь. Запомните: вы не можете подать Амперы, вы можете подать только Вольты, а устройство возьмёт столько Ампер, сколько ему нужно. В случае с Arduino – голая плата возьмёт 20-22 мА, хоть от пина 5V, хоть от Vin. Ток, который указан на блоке питания, это максимальный ток, который БП может отдать без повреждения/перегрева/просадки напряжения. Беспокоиться стоит не об Arduino, а об остальном железе, которое стоит в схеме и питается от блока питания, а также о самом блоке питания, который может не вывезти вашу нагрузку (мотор, светодиоды, обогреватель). Общий ток потребления компонентов не должен превышать возможностей источника питания, вот в чём дело. А будь блок питания хоть на 200 Ампер – компоненты возьмут ровно столько, сколько им нужно, и у вас останется “запас по току” для подключения других. Если устройство питается напряжением, то запомните про максимальный ток источника питания очень простую мысль: кашу маслом не испортишь.
Beaglebone Black
Нужно ли знать программирование?
Первые шаги по работе с платой Arduino начинаются с программирования платы. Программа, которая уже готова к работе с платой, называют скетчем. Переживать о том, что вы не знаете программирование не нужно. Процесс создания программ довольно несложный, а примеров скетчей очень много в интернете, так как сообщество Ардуинщиков очень большое.
После того как программа составлена она загружается (прошивается) на плату. Ардуино в этом случае имеет неоспоримое преимущество – для программирования в большинстве случаев используется USB-кабель. Сразу после загрузки программа готова выполнять различные команды.
Начинающим работать с Arduino нужно знать две ключевые функции:
- setup() – используется один раз при включении платы, применяется для инициализации настроек;
- loop() – используется постоянно, является завершающим этапом настройки setup.
Пример записи функции setup():
void setup() { Serial.begin(9600); // Открываем serial соединение pinMode(9, INPUT); // Назначаем 9 пин входом pinMode(13, OUTPUT); // Назначаем 13 пин выходом }
Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства.
Функция loop() выполняется после функции setup(). Loop переводится как петля, или цикл. Функция будет выполняться снова и снова. Так микроконтроллер ATmega328 (большинстве плат Arduino содержат именно его), будет выполнять функцию loop около 10 000 раз в секунду.
Также вы будете сталкиваться с дополнительными функциями:
- pinMode – режим ввода и вывода информации;
- analogRead – позволяет считывать возникающее аналоговое напряжение на выводе;
- analogWrite – запись аналогового напряжения в выходной вывод;
- digitalRead – позволяет считывать значение цифрового вывода;
- digitalWrite – позволяет задавать значение цифрового вывода на низком или высоком уровне;
- Serial.print – переводит данные о проекте в удобно читаемый текст.
Помимо этого Ардуино начинающим понравится то, что для плат существует множество библиотек, которые представляют собой коллекции функций, позволяющих управлять платой или дополнительными модулями. К числу наиболее популярных относятся:
- чтение и запись в хранилище,
- подключение к интернету,
- чтение SD карт,
- управление шаговыми двигателями,
- отрисовка текста
- и т. д.