5. Programming Arduino
In this lesson, we will take a whirlwind tour through the syntax you need as you write sketches. This lesson is long, and I thought about breaking it up, but I think it will be helpful to have a single quick reference to go back to, in addition to the exceedingly useful Arduino language reference.
When you finish this lesson, it is important to proceed without much delay to the next lesson, where you will put some of the aspects of Arduino programming learned here to use.
Review of last lessons
You will remember in the previous lessons that we have already established a few key syntactical rules.
All variables have to have a type declaration. So far, we have only seen int data types, some of which we declared as const , meaning that the value of the variable cannot change.
All functions have to have a type declaration for their return value. We have seen void , but we could have int or other data types we will introduce here.
All commands end in a semicolon.
Every Arduino sketch has a setup() and a loop() function. The setup() function is run upon upload of the compiled sketch and upon reset, and the loop() function is then run over and over again.
The core Arduino libraries have built-in functions and variables. For variables, we have seen INPUT , OUTPUT , HIGH , and LOW . We actually also saw LED_BUILTIN in the setup lesson .
Comments start with // or appear between /* and */ .
We will now proceed to learn about programming the Arduino microcontroller.
A general note about programming in Arduino: keep it simple
You may have experience coding in C++ and have used all of its rich object orientation in your code. You may have constructed complicated, but powerful data types. You can do a lot of that with Arduino, but I have found that it is easier not to. The main reason is that you have only 2 kB of RAM to work with. This means that if you are doing to do something like dynamic memory allocation, which you would do in almost any C++ program, you should try to accomplish the same task in ARduino with static arrays. Unforeseen problems, such as memory fragmentation, can rear their ugly heads.
It is safe to use pointers and work with them, e.g., to make two-dimensional arrays, but we will not discuss them here. Nonetheless, be careful when doing so.
Since we ultimately will be using the Arduino Uno to run and instrument and collect and send data, we will be connecting it to your computer. You computer is much more powerful that the Arduino Uno (that’s why it probably costs two orders of magnitude more). Furthermore, you can program whatever manipulations you need to do to the data in Python, which, being a high-level interpreted language, is much easier to quickly write functional code with than C++.
With that in mind, let us proceed to learn about programming Arduino.
Data types
As I have mentioned, every variable in an Arduino sketch has a type, and that type must be declared when the variable first appears. It is ok to declare it before you use it. That is, this is ok:
They give the same result.
Scalar data types
bool : A bool stores a single bit of information. It can take values of 0 or 1. In your sketches, though, use the Boolean constants true and false for the values of a bool .
byte : A byte is an unsigned 8-bit integer. It can take values from 0 to 255; that is 0 to 2⁸ – 1.
int : An int in an Arduino sketch is a signed 16-bit integer. That means that the values of an int range from –32,768 to 32,767; that is –2⁻¹⁵ to 2¹⁵ – 1. The int is by far the most-used variable type. Note that the 10-bit ADC converts voltages to 10-bit integers that range from 0 to 1023. You can safely store these as int s. If you use an external 16-bit ADC, because an int cannot store 16-bit numbers, you will have to use an unsigned int .
unsigned int : An unsigned int is also a 16-bit integer, but negative numbers are not allowed. Therefore unsigned int s can range from zero to 65,535; that is 0 to 2¹⁶ – 1, which means you an store a 16-bit integer with it.
word : A word is equivalent to unsigned int . Many programmers suggest using word instead of unsigned int for clarity, but I do not have a strong opinion on this.
long : A long is a signed 32-bit integer. They range from –2,147,483,648 to 2,147,483,647; that is –2⁻³¹ to 2³¹ – 1. To denote an integer as a long , it must be followed by an L . For example to store the number 3252 in a variable named shoulderToShoulder as a long, you would do long shoulderToShoulder = 3252L .
unsigned long : A unsigned long is an unsigned 32-bit integer. They range from 0 to 4,294,967,295; that is 0 to 2³² – 1. An unsigned long must also be followed by an L when written out as a number. unsigned long s are very often used when comparing times, since the values returned by the millis() and micros() functions (described below) are unsigned long s.
size_t : This is a special data type used to represent the size of a variable (or any object, really) in bytes.
float : A float in an Arduino sketch is a 32-bit floating point number. A float can take values between –3.4028235×10³⁸ and 3.4028235×10³⁸. It provides six or seven digits of precision.
Note that on an Ardunio Uno, there is no double data type. Note also that the data type short is equivalent to int .
Arrays
As I mentioned above, we will not discuss complicated array structures. For this class, simple static one-dimensional arrays will suffice.
Declaring arrays
There is no array data type. Rather, an array is an ordered collection of elements of a single data type. An array is declared with the data type of its elements. To declare an array of 5 int s, the syntax is
Indexing an array
To access the elements of an array, I use indexing with brackets. Indexing in C++ is 0-based.
If I asked for myArray[4] , which does not exist, the compiler will not give an error, and I’ll get weird results when I run the code. It is therefore very important that you are careful not to overrun an array.
Directly creating an array
Alternatively, I can create an array using braces.
When creating an array in this case, I do not need to specify how many entries; the compiler will infer it.
Determining the number of elements in an array
Later on in a program, I might like to know how many entries are in an array. There is no built-in function to do that. But you can use the sizeof() function, which returns the number of bytes that an object occupies in memory. Since every entry in an array is of the same type, you can use the sizeof() function to get the number of entries by dividing the size of the array by the size of an entry.
Mutating arrays
Because I do not have const in front of the declaration, I can change the values of entries in the array.
Using entries of an array in a calculation
I can also access entries of an array with indexing and use their values.
I can also pluck values out of an array and store them.
Character and string data types
char : A single character, like ‘A’ is stored as a char . When defining a char , it is in single quotes, e.g., char myGradeInBE189 = ‘A’; .
string : A string is an array of char s. They are constructed using double quotes. char myString[] = "Hello, world." string s are null-terminated, which means that the last element of the array of characters is a special character called a null character. This character is \0 . It is important because it lets functions that work with strings know where the string ends.
The String class
While I gave a warning about using C++’s object orientation, the core libraries have some handy classes that you can make use of. The String class is particularly useful.
To construct a String instance, you use String() as a function. You have to make sure to declare your variable to be of a String type.
The variable myString now has many methods to use. Here are a few:
You can also use operators with the string.
You can also convert a number to a string, and a string to a number.
Unless you are RAM constrained, you should just use String objects when handling strings. They have a bigger footprint in RAM, but the benefits are substantial.
Type conversion
You can change types of a variable using casting. To cast, place the data type you want to convert to in parentheses before the variable you are converting. Here are a few examples.
Operators
Now that we have a handle on data types, we can look into operators.
Arithmetic operators
We have already seen the assignment operator, = , and it works as you might intuit. Other arithmetic operators are:
+ : Addition. It is overloaded for String objects, doing concatenation instead.
% : Mod. 6 % 3 gives 0 . 6 % 4 gives 2.
Note that there is no floor division. This can be accomplished with casting, e.g., (int) 6 / 4 will give 1 .
There is also no raise-to-power operator. This is achieved using the pow() function.
Comparison operators
These are the same as in Python and give a bool , either true or false , as a result.
<= : Less than or equal to.
>= : Greater than or equal to.
Boolean operators
The three Boolean operators are:
Here are some examples.
Compound operators
Compound operators are used to change the values of variables in place. The operators are best explained by considering equivalent expressions.
compound operator expression
Bitwise operators
Bitwise operations work on numbers at the level of their binary representations. While I have not used these operators very often in my various hacking pursuits, they do come up fairly often in programming devices, especially in the context of communications where data are sent and received as bits and bytes.
I think the operators are best explored by example. To keep the binary representations short, we will use byte s instead of int s. Say we have a byte variable 01001101 . This corresponds to the decimal number 77. The number 10001110 is 142. Let us now consider some bitwise operators on these two numbers to see how they work. It helps to look at these two binary numbers on top of each other to make easy comparisons
In what follows, assume that we have already executed the code
& : Bitwise AND. Two numbers with the same number of bits (e.g., both int s, both byte s, both long int s, etc.) are compared. The result has a 1 in a given bit position if both numbers have a 1 in that position. So, x & y gives 12 , which has a binary representation of 00001100 .
| : Bitwise OR. Two numbers with the same number of bits are compared. The result has a 1 in a given bit position if either of the numbers has a 1 in that position. So, x | y gives 207 , which has a binary representation of 11001111 .
^ : Bitwise XOR. Two numbers with the same number of bits are compared. The result has a 1 in a given bit position if the two numbers have different numbers in that position. So, x ^ y gives 195 , which has a binary representation of 11000011 .
We will not consider operations that work on the binary representation of a single number.
: Bitwise NOT. I call this operator a bit-flipper, since it flips the bits of a number, changing a 1 to a 0 and a 0 to a 1.
x gives -78 . Wait…. WHAT!? It turns out that the
operator does not work on byte s, but on int s. The compiler will case the byte variable as an int in order to perform the
operation. Remember that an int is a signed integer, meaning that one of the bits is used to indicate the sign of the number. By convention, that is the first bit, the so-called highest bit. The variable x as an int has representation 0000000001001101 . The highest bit is the sign, which is zero in this case, indicating a positive number. Applying bitwise NOT gives -78 , which has a binary representation of 1111111110110010 . For any int x ,
x is equivalent go -x — 1 .
<< : Left bitshift. This operation slides the 1 s and 0 s leftward a set number of steps, padding the right bits with zeros and discarding bits that get shifted off to the left. x << 3 will shift the bits three places to the left and gives 616 . Wait….. WHAT AGAIN!? The result of a bitshift operation is an int . So, this bitshift results in 0000001001101000 , which has a decimal value of 616. Conversely, x << 13 gives -24576 , which has a binary representation of 1010000000000000 . Note that the second operand (in our case, we used 3 and 13 ) must be less than or equal to 32.
>> : Right bitshift. This operations slides 1 s and 0 s rightward a set number of steps, discarding bits that are shifted off to the right. Be careful, the bits that are padded to the left are whatever the highest bit is if you are using an int . That means that negative integers are padded with 1 s and positive integers are padded with 0 s. This method of padding is called sign extension. So, x >> 3 gives 9, which has a binary representation of 0000000001001 . Conversely, consider a right bitshift on -77 , which has a binary representation of 1111111110110011 . -77 >> 3 gives -10 , which has a binary representation of 1111111111110110 .
Conditionals
We have now seen the various data types and operations we can do with them. Let us now turn our attention to control flow, starting with conditionals.
if statements
An if statement has the following syntax.
The else clause may be omitted. You may also chain if statements together.
Руководство по Arduino для начинающих
Данная статья поможет вам начать работу с Arduino и включает в себя описание различных типов Arduino, как загрузить среду разработки программного обеспечения Arduino, и описывает различные платы и принадлежности, доступные для Arduino, и которые понадобятся вам для разработки проектов на Arduino.
Arduino – это одноплатный контроллер с открытыми исходными кодами, который можно использовать в множестве различных приложений. Это возможно самый простой и самый дешевый вариант из микроконтроллеров для любителей, студентов и профессионалов для разработки проектов на основе микроконтроллеров. Платы Arduino используют либо микроконтроллер Atmel AVR, либо микроконтроллер Atmel ARM, и в некоторых версия имеет интерфейс USB. Они также имеют шесть или более выводов аналоговых входов и четырнадцать или более выводов цифровых входов/выходов (I/O), которые используются для подключения к микроконтроллеру датчиков, приводов и других периферийных схем. Цена на платы Arduino в зависимости от набора функций составляет от шести до сорока долларов.
Типы плат Arduino
Существует множество различных типов плат Arduino, как показано в списке ниже, каждая из которых обладает собственным набором функций. Они отличаются по скорости обработки, памяти, портам ввода/вывода и подключению, но основная составляющая их функционала остается неизменной.
На разнообразие плат Arduino и их технические описания можно посмотреть в подразделе «Arduino» раздела «Купить» данного сайта.
Программное обеспечение (IDE)
Программное обеспечение, используемое для программирования Arduino, представляет собой интегрированную среду разработки Arduino IDE. IDE представляет собой Java приложение, которое работает на множестве различных платформ, включая системы PC, Mac и Linux. Она разработана для начинающих, которые не знакомы с программированием. Она включает в себя редактор, компилятор и загрузчик. Также в IDE включены библиотеки кода для использования периферии, например, последовательных портов и различных типов дисплеев. Программы для Arduino называются «скетчами», и они написаны на языке, очень похожем на C или C++.
USB кабель
Большинство плат Arduino подключаются к компьютеру с помощью USB кабеля. Это соединение позволяет загружать скетчи на вашу плату Arduino, а также обеспечивает плату питанием.
USB кабель для Arduino
Программирование
Программирование Arduino легко: сначала вы используете редактор кода IDE для написания программы, а затем компилируете и загружаете её одним кликом.
Программа для Arduino включает в себя две основные функции:
- setup()
- loop()
Вы можете использовать функцию setup() для инициализации настроек платы. Эта функция выполняется только один раз, при включении платы.
Функция loop() выполняется после завершения функции setup() , и в отличие от функции setup() она работает постоянно.
Функции программ
Ниже приведен список наиболее часто используемых функции при программировании Arduino:
- pinMode – устанавливает вывод в режим входа или выхода;
- analogRead – считывает аналоговое напряжение на аналоговом входном выводе;
- analogWrite – записывает аналоговое напряжение в аналоговый выходной вывод;
- digitalRead – считывает значение цифрового входного вывода;
- digitalWrite – задает значение цифрового выходного вывода в высокий или низкий уровень;
- Serial.print – пишет данные в последовательный порт в виде удобочитаемого текста ASCII.
Библиотеки Arduino
Библиотеки Arduino представляют собой коллекции функций, которые позволят вам управлять устройствами. Вот некоторые из наиболее широко используемых библиотек:
- EEPROM – чтение и запись в «постоянно» хранилище;
- Ethernet – для подключения к интернету, используя плату Arduino Ethernet Shield;
- Firmata – для связи с приложениями на компьютере, используя стандартный последовательный протокол;
- GSM – для подключения к сети GSM/GRPS с помощью платы GSM;
- LiquidCrystal – для управления жидкокристаллическими дисплеями (LCD);
- SD – для чтения и записи SD карт;
- Servo – для управления сервоприводами;
- SPI – для связи с устройствами, используя шину SPI;
- SoftwareSerial – для последовательной связи через любые цифровые выводы;
- Stepper – для управления шаговыми двигателями;
- TFT – для отрисовки текста, изображений и фигур Arduino TFT экранах;
- WiFi – для подключения к интернету, используя плату Arduino WiFi shield;
- Wire – двухпроводный интерфейс (TWI/I2C) для передачи и приема данных через сеть устройств или датчиков.
Этапы настройки Arduino
- Во-первых, установите IDE. Вы можете скачать IDE с сайта Arduino.
- Установите программное обеспечение на свой компьютер.
- Теперь запустите .exe файл Arduino IDE. IDE выглядит так:
- Напишите в редакторе кода свою программу и загрузите её в Arduino. Чтобы сделать это, необходимо подключить Arduino к компьютеру, используя USB кабель.
- В IDE выберите тип Arduino, который вы используете, через меню Tools (Инструменты) → Boards (Платы).
- Теперь проверьте свой код, нажав на значок «галки» вверху окна IDE, затем нажмите на соседний значок «стрелка вправо», чтобы скомпилировать и загрузить код в Arduino.
Внимание: возможно, вам понадобится установить драйвера, если ваша система не обнаружит Arduino.
Платы расширения Arduino
Платы расширения Arduino (Arduino Shields) – это платы, которые подключаются к Arduino, чтобы предоставить вам возможность подключать к Arduino периферийные устройства, датчики и приводы. Ниже приведен список некоторых популярных плат расширения:
- GSM Shield;
- Ethernet Shield;
- WiFi Shield;
- Motor Shield;
- Proto Shield;
- Joystick Shield;
- Bluetooth Shield;
- Xbee shield.
Комплектующие и принадлежности
Ниже приведен список всех комплектующих и принадлежностей, обычно используемых совместно с Arduino для разработки проектов:
Всё, что необходимое для макетирования, вы можете найти в подразделе Макетирование раздела сайта Купить
Первая программа на микроконтроллере Arduino
Arduino — это аппаратная и программная платформа для простой разработки электроники и обучения программированию. Аппаратная часть включает в себя большое количество разновидностей плат Arduino и дополнительные модули, а программная часть состоит из среды разработки Arduino IDE — программы для написания скетчей и прошивки микроконтроллеров Arduino. Также, для упрощения разработки, имеется возможность подключения готовых библиотек.
Начало работы с Arduino
Прежде всего, вам потребуется приобрести плату Arduino. На сегодняшний день существует множество видов плат под любые задачи. Например:
Arduino Uno
Наибольшее распространение получила плата Arduino Uno. Она имеет 14 дискретных (цифровых) каналов ввода/вывода, а также 6 аналоговых. К слову, данная плата является одной из самых дешевых.
Arduino Mega 2560
Arduino Mega 2560 немного больше Arduino Uno. Она имеет значительно большее количество каналов ввода/вывода: 54 цифровых и 16 аналоговых. На плате разведены 4 аппаратных UART порта, что делает ее идеальной платформой для коммуникации с несколькими устройствами одновременно.
Arduino Nano
Arduino Nano — это, размещённый на миниатюрной плате, функциональный аналог Arduino Uno. Arduino Nano используется там, где важна компактность. Ее размеры (без USB разъема) всего 42 мм в длину и 19 мм в ширину.
Среда разработки Arduino IDE:
Для того, чтобы программировать и прошивать платы Arduino нам потребуется официальная среда разработки — Arduino IDE. Переходим по ссылке и скачиваем установщик под свою операционную систему, а затем запускаем его. Далее, после стандартного процесса установки, среда разработки готова к работе.
Программирование Arduino:
Плата Arduino исполняет программы на языке, основанном на C++, поэтому, имея опыт работы с ним, программирование платы не составит для вас большого труда. Давайте разберем программу для мигания светодиодом — Blink.
Первым делом, открываем установленную среду разработки Arduino IDE, нажимаем «Файл», затем «Примеры», «01. Basics» и «Blink». На экране откроется программа мигания светодиодом.
Для начала, подключите плату к компьютеру. Затем, в меню «Инструменты» > «Порт» выберите порт к которому подключена ваша плата (рядом с его номером указано название платы). Например, в моем случае, это плата Arduino Uno на 17 порту.
После выбора порта загрузите программу (нажав на зеленую стрелочку) и посмотрите на плату. Если программа успешно загрузилась, то, вы увидите, что светодиод на плате Arduino мигает с частотой в 1 секунду.
А теперь давайте разберемся и поймем, как работает программа управляющая светодиодом.
Для начала, обратим внимание на то, что часть кода написана серым цветом — это комментарии, они не исполняются платой и нужны для пояснения.
Существуют два способа добавить комментарий. Первый способ позволяет закомментировать одну строку, используя символы «//»:
Второй способ позволяет закомментировать сразу несколько строк. Для этого используются символы «/*» и «*/»:
В программе отчетливо выделяются два блока — void setup() и void loop():
Setup переводится как «настройка», а Loop как «цикл». Команды блока void setup() выполняются только один раз, сразу после запуска контроллера, а команды блока «loop» — бесконечно, до отключения его питания.
Мы видим, что внутри void setup() находится только одна команда — pinMode. Давайте переведем эту команду на русский язык. Pin означает «порт», а mode — «режим». Этой командой мы объясняем Arduino, как работать с устройством. Так как мы можем либо посылать сигналы устройству, либо считывать их, то и режимов работы существует всего два: OUTPUT — отправка сигналов и INPUT — прием сигналов.
В данном примере Arduino работает со светодиодом, на него сигналы посылаются, поэтому написано OUTPUT. А LED_BUILTIN в команде pinMode(LED_BUILTIN, OUTPUT) означает, что мы управляем светодиодом, расположенным на плате (вместо этого можно просто указать номер пина — 13).
Перейдем к блоку void loop():
В этом блоке описаны действия со светодиодом.
Команда digitalWrite состоит из двух слов: digital — «цифровой» и write — «писать». Значит мы можем перевести эту команду как «цифровая запись».
Рассмотрим параметры этой команды. Нам снова встретилась константа LED_BUILTIN, которая, обозначает порт к которому подключен светодиод на плате Arduino. Второй параметр представлен двумя значениями: HIGH и LOW. Переводятся они как «высокий» и «низкий» и включают и выключают светодиод.
Задержка задается командой delay, которая переводится как «ждать». Команда delay приостанавливает программу на время в миллисекундах, указанное в скобках (1000 миллисекунд = 1 секунде).
Таким образом, наши команды образуют следующий алгоритм:
- Включить светодиод на плате;
- Подождать 1 секунду;
- Выключить светодиод на плате;
- Подождать 1 секунду;
А так как эти команды расположены в блоке void loop(), то они будут повторяться, пока на микроконтроллер подается питание.
На этом все, ну а если у вас возникли вопросы — смело пишите их в комментариях)
Уроки Arduino от Jeremy Blum. Первые шаги.
Всем привет. Я Джереми Блум. Рад представить вам новую серию туториалов по Arduino.
Arduino – это потрясная open-source платформа с микроконтроллером, которую можно использовать для создания электронных проектов. Для автоматизации вещей, в которых есть входы-выходы, прерывания, и т.п. Мы поговорим обо всем этом в этой серии туториалов.
Это должно быть очень увлекательно. Неважно, новичок ли вы, который никогда не связывался с электроникой до этого или вы «ветеран», который плотно работал с микроконтроллерами, но никогда не использовал Arduino. Должен получится отличный цикл гайдов. Первые смогут начать с изучения основ Arduino: как это работает, как устанавливать софт, собирать простые схемы типа мигающих светодиодов и т.п., а затем и более сложные вещи. Давайте начнем.
Вещи, которые могут вам понадобится в нашем цикле уроков и для того, чтобы работать с Arduino
- Конечно же, вам понадобится сама плата Arduino.
- Вам понадобится USB-кабель, для того, чтобы программировать Arduino. Так же через него идет питание от вашего компьютера. Если вы хотите использовать Arduino не подключенным к компьютеру, после того, как вы закончили с программированием, вам понадобится блок питания.
- Вам также понадобится (breadboard) (доска для прототипирования, макетная плата, монтажная плата). Брэдборды крайне удобны для сборки прототипов электронных схем. Мы соберем несколько различных схем, которые вы сможете использовать для управления светодиодами, динамиками, моторами и всякими такими вещами.
- Вам понадобятся светодиоды и резисторы (220 Ом, 1 кОм, 10 кОм, 100 кОм) для тестов, которые мы будем проводить.
- Вам может понадобиться динамик или парочка, чтобы вы могли извлекать звук из Arduino.
- Моторы. Мы будем использовать постоянные моторы, сервоприводы и, если хватит времени, шаговые моторы.
- Еще несколько сенсоров по ходу дела. Я буду говорить о них по ходу дела. Но для затравки скажу, что, возможно, мы будем использовать датчики изгиба, сенсоры давления и датчики света.
Что же такое Arduino?
Arduino – это open-source платформа для прототипирования устройств,которые основаны на микроконтроллерах ATmega Atmel. Вы можете программировать их сами по себе через штуковину, называемую ISP-программатор. И программировать их на языке С. Этим способом я сделал несколько проектов в лабораторном классе в универе. И это круто на самом деле. Вы можете сделать много забавных вещей с их помощью.
Но для среднестатистического человек С-код может быть зануден и запутан. И это может создавать трудности при создании интересных устройств, которые позволяют делать микроконтроллеры. Что делает Arduino – это абстрагирует путь, через который вы все это делаете. Вы получаете среду программирования Arduino, которая значительно проще С. Это работает через небольшую программку, прошитую в микропроцессоре. Прошивка Arduino зашита в ATmega чип, который установлен на плату Arduino. И вы программируете на языке Arduino, о котором мы будем говорить на протяжении этой серии уроков. Итак, это Arduino UNO:
Мы будем использовать ее в большинстве туториалов. Но вы можете использовать любую разновидность Arduino. Arduino держит спецификации открытыми. Это означает, что на самом деле не обязательно брать именно Arduino с Arduino-брендом. Они публикуют схемы в открытый доступ. И вы можете собрать свою собственную плату из частей, которые у вас есть или купить их. Вы можете прошивать их через ISP программатор, если захотите. Существует множество способов, как использовать микроконтроллеры Arduino. Мы будем работать с UNO, поскольку его просто достать.
У него есть USB-порт для программирования, гнездо для внешнего питания, регулятор напряжения для него. Вы можете запитать его от батарейки или блока питания, включенного в розетку. Есть кнопка RESET, ISP-программатор. Сам ATmega чип и набор контактов, к которым вы подключаете своих входы и выходы.
Как вам настроить компьютер, чтобы могли программировать свой Arduino
Начните с посещения сайта Arduino, чтобы загрузить оттуда открытую среду программирования Arduino. Это arduino.cc. Кликайте по кнопке Download
Проскрольте вниз. Найдите версию операционки, на которой вы сидите. У меня сейчас Windows.
И загрузите этот файл.
На самом деле вам не нужно ничего устанавливать, поэтому загрузите его на рабочий стол или куда угодно. Куда хотите. Скачайте и подождите, пока он распакуется. Вот и все, вы готовы программировать.
После этого просто запускайте скачанное приложение.
Когда среда Arduino стартует в первый раз, я сразу же сохраняю файл, чтобы мы смогли его использовать.
Я сохраню его на рабочий стол.
Программа Arduino сохраняется в папку с тем же именем, что и скет. Скетч – это то, как называется программа в Arduino. Их называют скетчами.
Следующая вещь, которую надо сделать – это убедиться, что вы работаете с правильной разновидностью Arduino. Идите в Tools-Board. Затем дождитесь, когда выпадет список. У нас Arduino Uno. Поэтому выбираем Uno. Если у вас другой Arduino, убедитесь, что вы правильно его выбрали здесь. Теперь мы готовы программировать наш Arduino.
Простая программа для Arduino
Для начала давайте сделаем очень простую программку для Arduino. Все, что программа будет делать – просто мигать светодиодом, встроенном на плате. У всех Arduino есть светодиод, подключенный к контакту 13, Поэтому вам не понадобится никакой внешней схемы. Мы будем включать и выключать встроенный светодиод.
Это хорошая мысль – начать с комментирования своего кода. На языке Arduino двойной слеш означает однострочный комментарий. А слеш-звездочка – многострочный. Назовем это «первой программой Джереми. Она прекрасна».
Что мы сделаем – объявим константы в начале нашей программы. Давайте сделаем это.
Для тех, кто не программировал раньше: все, что мы сделали – это присвоили integer 13. Integer – это просто число. И это константа. Эта переменная определяет, на каком из контактов находится светодиод Arduino. Это контакт 13.
Все программы на Arduino обязаны иметь два метода. Первый — это void setup. Он выглядит так:
Содержимое должно быть между этими скобками
Вторая часть любой программы Arduino (она может быть пустой, если хотите) – это void loop:
Для чего нужны две эти части. Первая делает, все, что будет запущено один раз – в самом начале, когда Arduino включается. А функция loop отвечает за вещи, которые будут крутиться непрерывно, в бесконечном цикле, пока Arduino включен. И это то, что вы обычно будете хотеть от микроконтроллера: делать что-то бесконечно, пока вы его не выключите.
Функция setup. Давайте будем комментировать происходящее. Мы проинициализируем контакты в качестве выходов. Все контакты на Arduino могут быть использованы и как входы и как выходы. И мы еще поговорим об этом подробнее. Но сейчас для включения и выключения светодиода мы должны убедиться, что контакт с ним установлен как выход. В среде Arduino вы можете использовать это через команду pinMode. pinMode принимает два аргумента. Сам контакт, которые вы хотите настроить, это ledPin и хотите ли вы, чтобы он был входом или выходом. Мы хотим, чтобы он был выходом – OUTPUT. И всегда нужно завершать строку точкой с запятой.
Теперь мы напишем наш цикл. Он очень простой. Все, что он делает – это устанавливает светодиод в HIGH, то есть включает, ждет немного, выключает и снова ждет немного. И он будет повторяться попеременно, выключая/выключая светодоиод.
Для того, чтобы установить цифровой выход используется команда digitalWrite. Опять же, она принимает два аргумента. Первый – это контакт, на который мы хотим повлиять. Нам нужен ledPin. Устанавливаем его в HIGHT и LOW. HIGHT означает включить, LOW – выключить. Мы начинаем с установки HIGHT.
Теперь мы хочем оставаться HIGHT до следующего действия. Поэтом у добавим здесь задержку: delay. Принимаем аргумент задержки в миллисекундах. В секунде 1000 миллисекунд, поэтому напишем здесь 1000. Это оставит светодиод включенным на 1 секунду, пока мы не выполним следующую команду: digitalWrite(ledPin, LOW). Это его выключит. И нам нужно остаться LOW на секунду: delay(1000). Светодиод выключенный на секунду.
В конце он перейдет от последней сделанной вещи к началу цикла и включится снова. Мы получили светодиод, который попеременно включается и выключается, задерживаясь на секунду каждый раз. Это наша первая готовая программа на Arduino! И это все, что она делает.
Теперь я беру USB кабель и подключаю его к компьютеру и к Arduino. Видите, Arduino засветился:
Если вы сидите с Arduino под Windows как и я, у вас может выскочить предупреждение о том, что драйвер Arduino Uno не установлен. Это из-за изменений, которые были сделаны в интерфейсе платы Uno по сравнению с предыдущими версиями Arduino. Если у вас более старая версия Arduino, она должна встать сама по себе. Если у вас Uno, необходимо выполнить следующие действия. Откройте меню «Пуск». Затем «Панель управления». Идем в «Система и безопасность». Кликнем по «Категории». Затем нужно выбрать «Система». Идем в «Менеджер устройств». И вы видите Arduino Uno здесь.
Кликните на нем и выберите «Обновить драйвер». Дальше выбираем «Найти драйвер на компьютере». Драйвер на самом деле был загружен, когда мы скачивали среду Arduino, поэтому нам нужно зайти в эту папку. Она Находится у меня на рабочем столе. И выбираете папку «drivers». Жмем «OK», «Далее». Появляется сообщение «Производитель не может бать установлен». Это нормально. Все равно жмем «Установить». И все, готово! Жмем «Закрыть», закрываем открытые окна. И мы готовы прошивать наш Arduino.
Для прошивки все, что нужно сделать – это нажать кнопку «Upload»:
Это запустит компиляцию и загрузит все на плату Arduino. Убедитесь, что выбран нужный COM-порт. Высветилось «Uploaded».
Теперь посмотрите на вашу плату Arduino. Как видите, светодиод мигает каждую секунду. Поздравляю, вы создали вашу первую программу на Arduino!
Послесловие и видеоурок
Это все технические моменты на этот раз. Мне не хотелось устраивать вам вывих мозга. Я просто рассказал, как настроить систему, чтобы убедиться, что вам удалось завести Arduino Uno или другой микроконтроллер. Я упомянул о брэдбордах, проводах, резисторах, светодиодах. Вы уже можете начинать экспериментировать с ними.
На следующем уроке мы окунемся в использование входов, выходов и более сложные вещи с использованием Arduino.
Полный первый видеоурок от Джереми Блума приведен на видео ниже:
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!