Уроки ардуино для начинающих
Содержание:
Sketch
A sketch is the name that Arduino uses for a program. It’s the unit of code that is uploaded to and run on an Arduino board.
Comments
The first few lines of the Blink sketch are a comment:
/*
* Blink
*
* The basic Arduino example. Turns on an LED on for one second,
* then off for one second, and so on… We use pin 13 because,
* depending on your Arduino board, it has either a built-in LED
* or a built-in resistor so that you need only an LED.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
Everything between the and is ignored by the Arduino when it runs the sketch (the at the start of each line is only there to make the comment look pretty, and isn’t required). It’s there for people reading the code: to explain what the program does, how it works, or why it’s written the way it is. It’s a good practice to comment your sketches, and to keep the comments up-to-date when you modify the code. This helps other people to learn from or modify your code.
There’s another style for short, single-line comments. These start with and continue to the end of the line. For example, in the line:
int ledPin = 13; // LED connected to digital pin 13
the message «LED connected to digital pin 13» is a comment.
Variables
A variable is a place for storing a piece of data. It has a name, a type, and a value. For example, the line from the Blink sketch above declares a variable with the name , the type , and an initial value of 13. It’s being used to indicate which Arduino pin the LED is connected to. Every time the name appears in the code, its value will be retrieved. In this case, the person writing the program could have chosen not to bother creating the variable and instead have simply written 13 everywhere they needed to specify a pin number. The advantage of using a variable is that it’s easier to move the LED to a different pin: you only need to edit the one line that assigns the initial value to the variable.
Often, however, the value of a variable will change while the sketch runs. For example, you could store the value read from an input into a variable. There’s more information in the Variables tutorial.
Functions
A function (otherwise known as a procedure or sub-routine) is a named piece of code that can be used from elsewhere in a sketch. For example, here’s the definition of the function from the Blink example:
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output}
The first line provides information about the function, like its name, «setup». The text before and after the name specify its return type and parameters: these will be explained later. The code between the and is called the body of the function: what the function does.
You can call a function that’s already been defined (either in your sketch or as part of the Arduino language). For example, the line calls the function, passing it two parameters: and . These parameters are used by the function to decide which pin and mode to set.
pinMode(), digitalWrite(), and delay()
The function configures a pin as either an input or an output. To use it, you pass it the number of the pin to configure and the constant INPUT or OUTPUT. When configured as an input, a pin can detect the state of a sensor like a pushbutton; this is discussed in a later tutorial. As an output, it can drive an actuator like an LED.
The functions outputs a value on a pin. For example, the line:
digitalWrite(ledPin, HIGH);
set the (pin 13) to HIGH, or 5 volts. Writing a LOW to pin connects it to ground, or 0 volts.
The causes the Arduino to wait for the specified number of milliseconds before continuing on to the next line. There are 1000 milliseconds in a second, so the line:
delay(1000);
creates a delay of one second.
setup() and loop()
There are two special functions that are a part of every Arduino sketch: and . The is called once, when the sketch starts. It’s a good place to do setup tasks like setting pin modes or initializing libraries. The function is called over and over and is heart of most sketches. You need to include both functions in your sketch, even if you don’t need them for anything.
Exercises
1. Change the code so that the LED is on for 100 milliseconds and off for 1000.
2. Change the code so that the LED turns on when the sketch starts and stays on.
Blink
This example shows the simplest thing you can do with an Arduino or Genuino to see physical output: it blinks the on-board LED.
Arduino or Genuino Board
optional
- LED
- 220 ohm resistor
Circuit
This example uses the built-in LED that most Arduino and Genuino boards have. This LED is connected to a digital pin and its number may vary from board type to board type. To make your life easier, we have a constant that is specified in every board descriptor file. This constant is LED_BUILTIN and allows you to control the built-in LED easily. Here is the correspondence between the constant and the digital pin.
- D13 — 101
- D13 — Due
- D1 — Gemma
- D13 — Intel Edison
- D13 — Intel Galileo Gen2
- D13 — Leonardo and Micro
- D13 — LilyPad
- D13 — LilyPad USB
- D13 — MEGA2560
- D13 — Mini
- D6 — MKR1000
- D13 — Nano
- D13 — Pro
- D13 — Pro Mini
- D13 — UNO
- D13 — Yún
- D13 — Zero
If you want to lit an external LED with this sketch, you need to build this circuit, where you connect one end of the resistor to the digital pin correspondent to the LED_BUILTIN constant. Connect the long leg of the LED (the positive leg, called the anode) to the other end of the resistor. Connect the short leg of the LED (the negative leg, called the cathode) to the GND. In the diagram below we show an UNO board that has D13 as the LED_BUILTIN value.
The value of the resistor in series with the LED may be of a different value than 220 ohm; the LED will lit up also with values up to 1K ohm.
Code
After you build the circuit plug your Arduino or Genuino board into your computer, start the Arduino Software (IDE) and enter the code below. You may also load it from the menu File/Examples/01.Basics/Blink .
The first thing you do is to initialize LED_BUILTIN pin as an output pin with the line
In the main loop, you turn the LED on with the line:
This supplies 5 volts to the LED anode. That creates a voltage difference across the pins of the LED, and lights it up. Then you turn it off with the line:
That takes the LED_BUILTIN pin back to 0 volts, and turns the LED off. In between the on and the off, you want enough time for a person to see the change, so the commands tell the board to do nothing for 1000 milliseconds, or one second. When you use the command, nothing else happens for that amount of time. Once you’ve understood the basic examples, check out the BlinkWithoutDelay example to learn how to create a delay while doing other things.
Once you’ve understood this example, check out the DigitalReadSerial example to learn how read a switch connected to the board.
See Also
- setup()
- loop()
- pinMode()
- digitalWrite()
-
delay()
- AnalogReadSerial — Read a potentiometer, print its state out to the Arduino Serial Monitor.
- BareMinimum — The bare minimum of code needed to start an Arduino sketch.
- DigitalReadSerial — Read a switch, print the state out to the Arduino Serial Monitor.
- Fade — Demonstrates the use of analog output to fade an LED.
- ReadAnalogVoltage — Reads an analog input and prints the voltage to the serial monitor.
Last revision 2015/07/28 by SM
Bit-banging Pulse Width Modulation
You can «manually» implement PWM on any pin by repeatedly turning the pin on and off for the desired times. e.g.
void setup(){
pinMode(13, OUTPUT);}void loop(){
digitalWrite(13, HIGH);
delayMicroseconds(100); // Approximately 10% duty cycle @ 1KHz
digitalWrite(13, LOW);
delayMicroseconds(1000 — 100);}
This technique has the advantage that it can use any digital output pin. In addition, you have full control the duty cycle and frequency. One major disadvantage is that any interrupts will affect the timing, which can cause considerable jitter unless you disable interrupts. A second disadvantage is you can’t leave the output running while the processor does something else. Finally, it’s difficult to determine the appropriate constants for a particular duty cycle and frequency unless you either carefully count cycles, or tweak the values while watching an oscilloscope.
Пишем первую программу
Вместо всем привычных Hello World’ов в Arduino принято запускать скетч Blink, который можно найти в Файл→Примеры→01.Basics→Blink. Там же можно найти множество других учебных скетчей на разные темы.
Почти на всех платах размещён светодиод, номер пина которого содержится в переменной . Его можно использовать в отладочных целях. В следующем скетче будет рассмотрен пример управления таким светодиодом.
Рассмотрим скетч Blink:
Прошивка
После написания необходимо «залить» скетч на микроконтроллер. Как уже говорилось, платформа Arduino берёт весь процесс прошивки микроконтроллера на себя — вам лишь необходимо подключить плату к компьютеру.
Перед прошивкой микроконтроллера нужно выбрать вашу плату из списка в IDE. Делается это во вкладке Инструменты→Плата. Большинство существующих плат уже там есть, но при необходимости можно добавлять другие через Менеджер Плат.
После этого нужно подключить плату Arduino к любому USB-порту вашего компьютера и выбрать соответствующий порт во вкладке Инструменты→Порт.
Теперь можно приступать к прошивке микроконтроллера. Для этого достаточно нажать кнопку Загрузка, либо зайти на вкладку Скетч→Загрузка. После нажатия начнётся компиляция кода, и в случае отсутствия ошибок компиляции начнётся прошивка микроконтроллера. Если все этапы выполнены правильно, на плате замигает светодиод с периодом и интервалом в 1 сек.
7
Arduino UNO: прошивка, память
Arduino UNO программирование для начинающих
Программирование платы происходит в бесплатной среде Arduino IDE на русском, которую можно скачать на официальном сайте. Для подключения устройств и модулей используются коннекторы («папа-папа» и «папа-мама»), которые подключаются к портам Ардуино. Чтобы начать работать с платформой, перейдите в раздел Arduino uno r3 «Уроки для начинающих» , где представлены подробные инструкции с примерами.
Плата поддерживает три типа памяти:
Flash – память объемом 32 кБ, используется для хранения программы. Когда контроллер прошивается скетчем через USB, он записывается именно во Flash – память. Чтобы очистить память Arduino UNO следует загрузить пустой скетч.
SRAM память — это оперативная память Ардуино объемом 2 кБ. Здесь хранятся переменные и объекты, создаваемые в скетче. SRAM память энерго-зависимая, при отключении источника питания от платы, все данные удалятся.
EEPROM — это энергонезависимая память объемом 1кБ. Сюда можно записывать данные, которые при выключении питания не исчезнут. Минус EEPROM в ограничении циклов перезаписи — 100 000 раз по утверждениям производителя.
PWM examples
PWM has several uses:
- Dimming an LED
- Providing an analog output; if the digital output is filtered, it will provide an analog voltage between 0% and 100% .
- Generating audio signals.
- Providing variable speed control for motors.
- Generating a modulated signal, for example to drive an infrared LED for a remote control.
Simple Pulse Width Modulation with analogWrite
The Arduino’s programming language makes PWM easy to use; simply call analogWrite(pin, dutyCycle), where dutyCycle is a value from 0 to 255, and pin is one of the PWM pins (3, 5, 6, 9, 10, or 11). The analogWrite function provides a simple interface to the hardware PWM, but doesn’t provide any control over frequency. (Note that despite the function name, the output is a digital signal, often referred to as a square wave.)
Probably 99% of the readers can stop here, and just use analogWrite, but there are other options that provide more flexibility.
Что можно и чего нельзя
Ардуино работает на одноядерном и не шибко шустром процессоре. Его тактовая частота — 16 мегагерц, то есть 16 миллионов процессорных операций в секунду. Это не очень быстро, плюс ядро только одно, и оно исполняет одну команду за другой.
Вот какие ограничения это на нас накладывает.
Нет настоящей многозадачности. Можно симулировать многозадачность с помощью приёма Protothreading, но это скорее костыль. Нельзя, например, сказать: «Когда нажмётся такая-то кнопка — сделай так». Вместо этого придётся в основном цикле писать проверку: «А эта кнопка нажата? Если да, то…»
Нет понятия файлов (без дополнительных примочек, библиотек и железа). На контроллер нельзя ничего сохранить, кроме управляющей им программы. К счастью, есть платы расширения, которые позволяют немножко работать с файлами на SD-карточках.
Аналогично с сетью: без дополнительных плат и библиотек Ардуино не может ни с чем общаться (кроме как включать-выключать электричество на своих выходах).
Полегче со сложной математикой: если вам нужно что-то сложное типа тригонометрических функций, будьте готовы к тому, что Ардуино будет считать их довольно медленно. Для вас это одна строчка кода, а для Ардуино это тысячи операций под капотом. Пощадите.
Отчёты? Ошибки? Только при компиляции. У Ардуино нет встроенных средств сообщить вам, что ему нехорошо. Если он завис, он не покажет окно ошибки: во-первых, у него нет графического интерфейса, во-вторых — экрана. Если хотите систему ошибок или отчётность, пишите её
Если серьёзно, то перед заливом программы на контроллер компилятор проверит код и найдёт в нём опечатки или проблемы с типами данных. Но на этом всё: если у вас случайно получилась бесконечная петля в коде или при каких-то обстоятельствах вы повесите процессор делением на ноль — жмите перезагрузку и исправляйте код.
Курс «Ардуино программирование для начинающих»
ВведениеАрдуино: что это такое?Алгоритмы в робототехникеОсновные законы электричества
Модуль 1. «Ардуино — Старт»
1.1. Назначение пинов на Ардуино
1.2. Подключение светодиода к Ардуино
1.3. Мигание светодиода на Ардуино
1.4. Включение светодиода кнопкой
1.5. Задержки Ардуино — delay и millis
1.6. Подключение пьезоизлучателя к Ардуино
1.7. Монитор порта Arduino IDE
1.8. Аналоговый и цифровой выход на Ардуино
1.9. Подключение RGB светодиода к Ардуино
1.10. Аналоговые порты на Ардуино
1.11. Подключение потенциометра к Ардуино
1.12. Циклы for и while в Ардуино
1.13. Плавное включение светодиода
1.14. Последовательное включение светодиодов
1.15. Подключение датчика воды к Ардуино
1.16. Подключение фоторезистора к Ардуино
1.17. Подключение тактовой кнопки к Ардуино
1.18. Включение светодиода кнопкой Ардуино
1.19. Подключение датчика LM35 к Ардуино
1.20. Подключение транзистора к Ардуино
1.21. Подключение лазерного светодиода
1.22. Подключение моторчика к Ардуино
1.23. Семисегментный индикатор Ардуино
1.24. Сдвиговый регистр 74hc595 Ардуино
1.25. Датчик сердцебиения KY-039 Ардуино
1.26. Локальные и глобальные переменные
Модуль 2. «Ардуино — Шилд»
2.1. Подключение реле к Ардуино
2.2. Подключение датчика препятствия
2.3. Подключение сервопривода к Ардуино
2.4. Плавное вращение сервопривода
2.5. Управление Ардуино с компьютера
2.6. Подключение датчика звука к Ардуино
2.7. Подключение датчика движения к Ардуино
2.8. Подключение датчика вибрации к Ардуино
2.9. Подключение модуля с кнопкой
2.10. Подключение датчика освещенности
2.11. Подключение ИК приемника к Ардуино
2.12. Подключение УЗ дальномера к Ардуино
2.13. Подключение датчика DHT11 к Ардуино
2.14. Подключение LCD дисплея к Ардуино
2.15. Русский шрифт на LCD дисплее
2.16. Подключение джойстика к Ардуино
2.17. Управление сервоприводом джойстиком
2.18. Как подключить шаговый двигатель
2.19. Подключение датчика цвета к Ардуино
2.20. Подключение мотор шилд к Ардуино
2.21. Подключение датчика пламени Ардуино
2.22. Подключение датчика геркона к Ардуино
2.23. Подключение датчика тока к Ардуино
2.24. Подключение тензодатчика к Ардуино
2.25. Подключение энкодера к Ардуино
2.26. Четырехразрядный семисегментный индикатор
Модуль 3. «Ардуино — IoT»
3.1. Изменение частоты ШИМ Ардуино
3.2. Arduino EEPROM запись, чтение данных
3.3. Подключение LED ленты к Ардуино
3.4. Подключение DS18B20 к Arduino
3.5. Подключение DF Player mini к Ардуино
3.6. Радио модуль nRF24L01: описание, распиновка
3.7. Подключение модуля nRF24L01 к Ардуино
3.8. Подключение блютуз модуля к Ардуино
3.9. Прошивка блютуз модуля HC-05/06
3.10. Подключение модуля HR911105A к Ардуино
Реализуемые проекты
Машинка с управлением от смартфонаЛодка на Ардуино с ИК управлениемМетеостанция на Ардуино и Андроид
Что дают уроки для начинающих по Ардуино? Arduino UNO — это электронный конструктор, пользующийся огромной популярностью благодаря простоте программирования и возможностью создавать устройства, выполняющие разнообразные функции. Программирование производится на языке C++ или при помощи языка визуального программирования Scratch for Arduino.
Установка Arduino IDE
Прежде чем начать работу с Arduino необходимо установить среду программирования Arduino IDE на ваш компьютер/ноутбук. Все описанные далее шаги по установке данной программной среды будут ориентированы на операционную систему Windows, для остальных операционных систем последовательность действий будет примерно такой же. Если возникнут проблемы с другими системами, то помощь можно найти по следующим ссылкам – для пользователей Mac и пользователей Linux. Перед началом установки Arduino IDE убедитесь что вы обладаете правами администратора на вашем компьютере – это облегчит установку.
Шаг 1. Загрузите Arduino IDE с официального сайта — https://www.arduino.cc/download_handler.php.
Шаг 2. Запустите скачанный exe файл.
Шаг 3. В открывшемся окне кликните на “I Agree” чтобы согласиться с условиями лицензии Arduino.
Шаг 4. В окне опций установки отметьте все галочки (см. рисунок).
Шаг 5. На этом шаге необходимо выбрать место установки Arduino IDE. По умолчанию стоит путь установки в Program files на диске C – крайне рекомендуется оставить именно этот путь.
Шаг 6. На этом шаге вы можете наблюдать как Arduino IDE устанавливается на ваш компьютер (см. рисунок). После того как установка будет завершена нажмите кнопку “completed”.
Шаг 7. После завершения установки запустите на выполнение файл Arduino.exe. Откроется окно IDE с минимумом кода внутри него – см. рисунок.
Описание Arduino IDE
Дистрибутив можно скачать на официальном сайте . Скачиваем архив, он занимает чуть более 100 мб. Установка стандартная, как и все приложения для Windows. Драйвера для всех типов плат должны быть установлены в пакете. И вот каким образом выглядит рабочее окно программы.
Среда разработки Arduino состоит из:
- редактора программного кода;
- области сообщений;
- окна вывода текста;
- панели инструментов с кнопками часто используемых команд;
- нескольких меню
Настройки Arduino IDE
Программа, написанная в среде разработки Arduino, называется скетчем. Скетч пишется в текстовом редакторе , который имеет цветовую подсветку создаваемого программного кода. Пример простенькой программы на картинке ниже.
Дополнительная функциональность может быть добавлена с помощью библиотек, представляющих собой оформленный специальным образом код. В основном он находится в закрытом от разработчика доступе. Среда обычно поставляется со стандартным набором, который можно постепенно пополнять. Они находятся в подкаталоге libraries каталога Arduino.
Многие библиотеки снабжаются примерами, расположенными в папке example. Выбор библиотеки в меню приведет к добавлению в исходный код строчки:
Arduino
#include <library.h>
1 | #include <library.h> |
Это директива — некая инструкция, заголовочный файл с описанием объектов, функций, и констант библиотеки. Многие функции уже разработаны для большинства типовых задач. Поверьте, это облегчает жизнь программисту.
После того как мы подключили электронную плату к компьютеру. Мы осуществляем следующие настройки — выбираем плату Arduino и Com-порт по которому будем соединяться.
Далее пишем простенькую программу для мигания 13-ого светодиода на плате. (есть в примерах example) и загружаем в контроллер.
Arduino
void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000);
1 2 3 4 5 6 7 8 9 10 |
voidsetup(){ // initialize digital pin 13 as an output. pinMode(13,OUTPUT); } voidloop(){ digitalWrite(13,HIGH); delay(1000); digitalWrite(13,LOW); delay(1000); |
Так, кстати говоря, удобно проверять работоспособность платы, пришедшей с магазина. Быстро и легко.
Есть ещё одна удобная вещь. Называется она Монитор последовательного порта (Serial Monitor). Отображает данные, посылаемые в платформу Arduino. Я обычно смотрю, какие сигналы выдают мне различные датчики, подключённые к плате.
Подключение библиотек
Существуют разные способы для добавления пользовательских функции. Подключить библиотеки можно тремя способами:
- С помощью Library Manager
- С помощью импорта в виде файла .zip
- Установка вручную.
1. С помощью Library Manager. В рабочем окне программы выбираем вкладку Скетч. После этого нажимаем на кнопку Подключить библиотеку . Перед нами откроется менеджер библиотек. В окне будут отображаться уже установленные файлы с подписью installed, и те, которые можно установить.
2.С помощью импорта в виде файла .zip. Часто в просторах интернета можно встретить запакованные в архивы файлы библиотек с расширением zip. В нём содержится заголовочный файл .h и файл кода .cpp. При установке не нужно распаковывать архив. Достаточно в меню Скетч — Подключить библиотеку — Add .ZIP library
3.Установка вручную. Сначала закрываем программу Arduino IDE. Наш архив мы сначала распаковываем. И файлы с расширением .h и .cpp переносим в папку с тем же названием, как и архив. Закидываем папку в корневой каталог.