arduino-1-80
.pdfОПЫТ 8 |
|
|
|
|
8 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Серводвигатель |
|
|
|
|
|
|
|
|
|
|
|
|
|
Pin |
9 |
|
"Серво", сокращение от серводвигателя, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
это двигатель, который включает в себя |
|
Серводвигатель |
|
|
|
электронную схему с обратной связью. |
||||||||||||
|
|
|
Серводвигатели идеально подходят для |
|||||||||||||
|
|
|
сигнал (белый) |
|
|
применения в электронике и автоматике, |
||||||||||
|
|
|
|
|
потому что обладают высокими скоростными |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
+5 (красн) |
характеристиками и умеют очень точно |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
устанавливаться в нужное положение, что |
|
|
|
GND (черный) |
|
|
|
|
|
|
не умеют обычные двигатели. |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Достаточно простое управление, при помощи |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
импульсов переменной длительности. Например, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
импульс 1,5 мс установит сервопривод в |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
положение 90 градусов. |
|
|
|
|
GND (-) |
|
|
|
|
|
+5 Вольт (5V) |
|
||||||
|
|
|
|
|
|
|
В этом опыте вы узнаете, как использовать |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ШИМ (широтно-импульсную модуляцию) для |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
управления серводвигателем. |
|
детали:
X 1
Пров
X 8
p.48
Опыт 8: Серводвигатель
a |
b |
c |
d |
e |
f |
g |
h |
i |
1 |
|
|
|
|
|
|
|
1 |
2 |
|
|
|
|
|
|
|
2 |
3 |
|
|
|
|
|
|
|
3 |
4 |
|
|
|
|
|
|
|
4 |
5 |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
6 |
7 |
|
|
|
|
|
|
|
7 |
8 |
|
|
|
|
|
|
|
8 |
9 |
|
|
|
|
|
|
|
9 |
10 |
|
|
|
|
|
|
|
10 |
11 |
|
|
|
|
|
|
|
11 |
12 |
|
|
|
|
|
|
|
12 |
13 |
|
|
|
|
|
|
|
13 |
14 |
|
|
|
|
|
|
|
14 |
15 |
|
|
|
|
|
|
|
15 |
16 |
|
|
|
|
|
|
|
16 |
17 |
|
|
|
|
|
|
|
17 |
18 |
|
|
|
|
|
|
|
18 |
19 |
|
|
|
|
|
|
|
19 |
20 |
|
|
|
|
|
|
|
20 |
21 |
|
|
|
|
|
|
|
21 |
22 |
|
|
|
|
|
|
|
|
23 |
|
|
|
|
|
|
|
|
24 |
|
|
|
|
|
|
|
|
25 |
|
|
|
|
|
|
|
|
26 |
|
|
|
|
|
|
|
|
27 |
|
|
|
|
|
|
|
27 |
28 |
|
|
|
|
|
|
|
28 |
29 |
|
|
|
|
|
|
|
29 |
30 |
|
|
|
|
|
|
|
30 |
a |
b |
c |
d |
e |
f |
g |
h |
i |
Компоненты |
Обозначение |
|
|
Серводвигатель |
|
e5 |
e6 e7 |
Провод перемычка |
|
e5 |
|
Провод перемычка |
|
e6 |
|
Провод перемычка |
|
e7 |
|
Провод перемычка |
Pin 9 |
a7 |
|
Провод перемычка |
|
b5 |
|
Провод перемычка |
|
a6 |
+ |
|
5V |
|
+ |
|
GND |
|
|
Расширьте свои возможности с помощью библиотек:
У Arduino имеется полезный набор встроенных команд для выполнения
сновных операций ввода / вывода. Она может принимать решения, используя
логику, а также решать математические задачи и пр.. Но реальной силой
Arduino является огромное сообщество заинтересованных людей, а также их готовность поделиться результатами своей работы.
Библиотекиэто сборники новых команд, которые собраны вместе для того,
чтобы их можно было легко подключить к вашему проекту. Ардуино поставляется с несколькими полезными библиотеками, такими как Wire, LiquidCrystal, Ethernet, Servo и пр.. Servo - библиотека сервоприводов, как раз используемая в этом опыте. Дополнительную информацию см. на:
http: //arduino.cc/en/Reference/Libraries список библиотек и информации об их использовании.
Если вы собираетесь использовать новый датчик или устройство, есть вероятность того, что кто-то уже создал библиотеку, для взаимодействия с вашим устройством. Для многих датчиков и устройств библиотеки давно созданы, их остается только найти. Вам в помощь Google и Yandex.
Чтобы использовать библиотеку в проекте, выберите его из меню
ArduinoIDE > Sketch > Import Library (Скетч> Импортировать Библиотеку)
File Edit Скетч Tools Help |
|
|
|
Проверить / Компилировать |
|
|
|
|
|
Показать папку Скетчей |
|
|
Добавить файл... |
|
|
Импортировать Библиот. |
EEPROM |
|
|
Ethernet |
|
|
Firmata |
|
|
LiquidCrystal |
|
|
SD |
|
|
Servo |
|
|
SoftwareSerial |
|
|
SPI |
|
|
Stepper |
|
|
Wire |
8 |
|
Код Arduino: |
|
Откройте в Arduino IDE // Файл > Примеры > MaxKit.ru > lesson_7 |
|||
На заметку: |
|
|
|
|
#include специальная директива препроцессора, которая вставляет |
||
#include <Servo.h> |
библиотеку (или любой другой файл) в ваш проект. Вы можете ввести |
||
эту команду вручную, или выбрать установленную библиотеку из меню |
|||
|
|||
|
ArduinoIDE: Скетч> Импортировать Библиотеку> Add Library. |
||
|
Библиотека Servo содержит новые команды, которые позволяют |
||
Servo servo1; |
управлять различными сервоприводами. Чтобы подготовить Arduino |
||
|
для управления серводвигателем, вы должны сначала создать |
||
servo1.attach(9); |
«объект» Servo для каждого сервопривода (мы назвали его "servo1"), |
||
|
а затем прикрепить (attach) его к цифровому порту (у нас это порт 9). |
||
|
Сервоприводы не умеют вращаться по кругу, но умеют занимать |
||
|
определенную позицию. Мы используем команду write() библиотеки |
||
servo1.write(180); |
Servo, чтобы установить сервопривод в указанное число градусов |
||
|
(от 0 до 180). Помните, что сервоприводу требуется время, чтобы |
||
|
достичь определенной позиции, поэтому дайте ему задержку delay(). |
||
Что вы должны увидеть: |
|
||
Вы должны увидеть, как ваш серводвигате |
|
||
переходит в различные позиции на разных |
|
||
скоростях. Если двигатель не двигается, |
|
||
проверьте соединения и убедитесь, |
|
||
что код загружен в Arduino, или |
|
||
воспользуйтесь советами по |
|
||
устранению неполадок ниже. |
|
||
Возможные трудности: |
Применение в жизни: |
||
Servo не крутится |
|
Роботизированные механические руки, которые |
|
Даже с цветными проводами есть шанс |
|||
используются на автомобильных заводах. |
|||
подключить серво в обратном направлении. |
|||
|
|||
Проверьте правильность соединений. |
|
||
Тем не менее не работает |
|
||
Ошибка, которую мы сделали несколько раз - |
|
||
забыли подключить провода питания +5 вольт |
|
||
и землю. |
|
|
|
Двигается рывками |
|
|
|
Если серво начинает двигаться рывками и |
|
||
мигает светодиод на борту Arduino, это говорит |
|
||
о том, что не хватает мощности питания. |
|
||
Воспользуйтесь сетевым адаптером вместо |
|
||
USB, это должно решить проблему. |
|
|
ОПЫТ 9 |
|
|
9 |
|
+5 вольт |
|
Датчик изгиба |
|
|
(5V) |
Pin A0 |
||
|
резистор |
|
В этом опыте мы используем Flex Sensor, или |
|
|
(10 КоМ) |
|
“Датчик Изгиба”. Его основа - пластиковая |
|
|
(Коричн.-Черн.-Оранж.) |
|
||
|
|
полоска с нанесенным слоем угля. Также |
||
|
|
|
||
|
|
|
как у переменного резистора, у него меняется |
|
|
flex |
|
сопротивление, но вместо поворота ручки, вам |
|
|
sensor |
|
приходится сгибать его, тем самым изменяя |
|
|
|
+5 вольт |
сопротивление. Для обнаружения этих |
|
|
|
изменений, мы снова используем “делитель |
||
|
|
(5V) |
||
|
|
|
напряжения”. Наклоняя “Датчик” в одном |
|
|
|
Pin 9 |
направлении, он изгибается, и чем больше он |
|
|
|
изгибается, тем выше становится его |
||
|
|
|
||
|
|
|
сопротивление. Приблизительный интервал |
|
|
|
|
изменений от 10 кОм до 35 ком. В этой схеме |
|
|
опривод |
|
мы будем использовать Flax Sensor для |
|
|
|
контроля положения сервопривода. |
|
|
|
|
|
|
|
|
|
GND |
|
|
|
|
(земля) (-) |
|
|
: |
F |
Рез |
П |
|
ДЕТАЛИ |
|
|||
|
10 К |
|
|
|
1 |
1 |
X11 |
|
|
|
Если в вашем наборе |
|
|
|
|
отсутствует датчик изгиба, |
|
|
|
|
вы можете заменить его, |
|
|
|
|
не меняя схемы, |
|
|
|
|
фоторезистором. |
|
|
|
|
Подправив код. |
|
|
|
|
см. коментарий в скетче. |
|
|
Опыт 9: Flex Sensor (Датчик Изгиба)
a |
b |
c |
d |
e |
f |
g |
h |
i |
1 |
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
11 |
|
|
|
|
|
|
|
|
12 |
|
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
|
14 |
|
|
|
|
|
|
|
14 |
15 |
|
|
|
|
|
|
|
15 |
16 |
|
|
|
|
|
|
|
16 |
17 |
|
|
|
|
|
|
|
17 |
|
|
|
|
|
|
|
|
18 |
|
|
|
|
|
|
|
|
19 |
|
|
|
|
|
|
|
|
20 |
21 |
|
|
|
|
|
|
|
21 |
22 |
|
|
|
|
|
|
|
22 |
23 |
|
|
|
|
|
|
|
23 |
24 |
|
|
|
|
|
|
|
24 |
25 |
|
|
|
|
|
|
|
25 |
26 |
|
|
|
|
|
|
|
26 |
27 |
|
|
|
|
|
|
|
27 |
28 |
|
|
|
|
|
|
|
28 |
29 |
|
|
|
|
|
|
|
29 |
30 |
|
|
|
|
|
|
|
30 |
a |
b |
c |
d |
e |
f |
g |
h |
i |
Компоненты Обозначение
Серводвигатель
Провод перемычка
Провод перемычка
Провод перемычка
Flex Sensor
10K Резистор
Провод перемычка
Провод перемычка
Провод перемычка
Провод перемычка
Провод перемычка
Провод перемычка
Провод перемычка
Провод перемычка
|
|
|
|
Отладка скетча с использованием Монитора порта: |
|
e1 |
e2 |
e3 |
Такое может случиться с каждым: программа написана, успешно |
||
|
|
|
|
||
|
|
|
|
скомпилирована, загружена, но не понятно почему, работает не так как |
|
e1 |
|
|
задумано. У компьютера есть монитор, клавиатура, мышь, с их помощью |
||
|
|
|
|
легко и удобно отлаживать код, но у Arduino подобных аксессуаров нет. |
|
e2 |
|
|
“Ключ" - в видимости состояния выходов микроконтроллера. Этим ключиком |
||
|
|
|
|
может стать практически что угодно - светодиод, зуммер, и пр., но один из |
|
e3 |
|
|
самых полезных инструментов Serial Monitor. Используя Serial.print() и println(), |
||
|
|
вы можете с легкостью вывести, в понятном для человека виде, текст и |
|||
|
|
|
|
||
|
|
|
|
данные от Arduino, на экран компьютера. Это отличная возможность для |
|
h19 |
h20 |
проверки и окончательной отладки Вашей программы. |
|||
|
|
||||
i20 |
i24 |
for (x = 0; x < 8; x++) |
Допустим, ваш цикл "for()" со счетчиком |
||
|
|
|
|
от 1 до 8, кажется работает не правильно. |
|
|
|
|
|
{ |
|
|
|
|
|
Для проверки добавьте Serial.begin(9600); |
|
i19 |
|
|
Serial.print(x); |
||
|
|
в функцию setup(), а также добавьте |
|||
|
|
|
|
} |
|
|
|
|
|
Serial.print() или println() в loop(). |
|
|
|
|
|
|
|
A0 |
j20 |
|
|
|
|
h24 |
|
+ |
Вы хотели от 1 до 8, но счетчик, на самом деле ситает от |
||
|
|
|
|
0 до 7. Следовательно нужно подправить код. |
|
b1 |
|
|
|
01234567 |
|
|
|
|
|
|
|
a2 |
|
+ |
|
|
|
Pin 9 |
a3 |
|
for (x = 1 ; x < 9 ; x++) |
И после повторного запуска получите |
|
|
|
|
|
||
|
|
|
|
{ |
нужный результат: |
5V |
|
+ |
|
Serial.print(x); |
|
|
|
|
|
} |
12345678 |
|
|
|
|
|
|
GND |
|
|
|
|
|
9
Код Arduino:
Откройте в Arduino IDE // Файл > Примеры > MaxKit.ru > lesson_9
На заметку:
|
В связи с тем, что значения делителя напряжения Flex |
|
|
Sensor / резистор, находятся в пределах от 600 до 900, а не |
|
servoposition = map(flexposition, 600, 900, 0, 180); |
от 0 до 1023 (0 - 5 Вольт), нам понадобится функция map(), |
|
как удобный способ преобразовать один диапазон в другой. |
||
servoposition = constrain(servoposition, 0, 180); |
||
В дополнении мы используем функцию constrain(), которая |
||
|
||
|
проверит и если надо задаст новые значения, так чтобы они |
|
|
“вписались” в область необходимых: от 0 до 180. |
|
Serial.print("sensor: "); |
Serial.print(”sensor: ”); напечатает sensor:, добавит значение |
|
Serial.print(flexposition); |
из переменной flexposition, далее Serial.print(” servo: ”); |
|
напечатает servo:, с пробелом перед словом servo, добавит |
||
Serial.print(" servo: "); |
||
значение из переменной servoposition, и после этого, из за |
||
|
||
Serial.println(servoposition); |
Serial.println, переведет курсор на новую строку. |
|
Что вы должны увидеть: |
|
|
Вы должны увидеть поворот |
|
|
серводвигателя в соответствии с тем, |
|
|
на сколько много вы изогнули гибкий |
|
|
датчик. Если схема не работает, |
|
|
убедитесь в том, что все собрано |
|
|
правильно, а также загружен ли код в |
|
|
Arduino, или просмотрите советы по |
|
|
устранению неполадок ниже. |
|
|
Возможные трудности: |
Применение в жизни: |
|
Servo не поворачивается |
Яркий пример применения датчиков изгиба- |
|
Даже в цветных проводах идущих от серво |
это игровые консоли Nintendo “Power Glove”. |
|
легко ошибиться. Возможно ошибка в этом. |
Это был первый игровой видео контроллер, |
|
Servo не движется, как ожидалось |
который использовал имитацию движения рук |
|
на экране в реальном времени. |
||
Датчик предназначен для изгиба в одном |
|
|
направлении, попытайтесь изгибать полоску |
|
|
в противоположную сторону. |
|
|
Малый диапазон поворота Servo |
|
|
Вам нужно попытаться изменить диапазон |
|
|
значений в функции map(). |
|
ОПЫТ 10
|
|
|
|
|
|
|
|
|
|
16x2 LCD |
|
|
+5 Вольт |
VSS |
VDD |
VO |
RS |
R/W |
E |
DB0 |
DB1 DB2 DB3 DB4 |
DB5 |
DB6 |
||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GND (Земля)
: |
Потенциометр |
|
ДЕТАЛИ |
|
|
X1 ЖКИ |
X1 |
DB7 |
A |
K |
PIN 2
PIN 3
PIN 4
PIN 5
PIN 11
PIN 12
ЖКИ (LCD) 10
Жидко Кристаллический Индикатор
В этом опыте Вам предстоит освоить ЖКИ (LCD*).
ЖКИ, или жидкокристаллический дисплей является простым дисплеем, который может отображать выполнение команд, выводить информацию от различных датчиков - все зависит от того, как Вы запрограммируете свою плату Arduino.
Вы узнаете основные принципы работы с ЖКИ:
как подключить, как настроить, как использовать ЖКИ в Ваших проектах с Arduino.
ЖКИ модуль поставляется отдельно от разъема и если у вас возникнут сложности с его пайкой, -
обратитесь за помощью к знающему человеку, или специалисту.
*LCD Liquid Crystal Display (eng.)
Провод
X16
Опыт 10: ЖКИ
a b c d e |
||
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
25 |
|
|
26 |
|
|
27 |
|
|
28 |
|
|
29 |
|
|
30 |
|
|
a |
b |
c d e |
f g h i
1
2
3
f g h i