Файл: С чего начинаются роботы. О проекте Arduino для школьников (В.Н. Гололобов, 2011).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1231

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Глава 10. С чего начинаются роботы?

Загрузив программу в модуль Arduino, я включаю оба устройства и… и… и ничего интересного не вижу. Что-то, где-то не так.

Рис. 10.5. Загрузка программы в модуль Arduino

Как проверить, где ошибка или неточность?

Попробуем сделать что-то похожее на отладку в программе VirtualBreadBoard. Но, чтобы не делать лишних паек, не добавлять отладочные светодиоды, используем тот светодиод, что уже стоит на плате модуля Arduino. Он на 13 цифровом выводе, который я использую для включения зеленого света. Поскольку программа не работает должным образом, это светодиод не загорается. Для начала я добавлю строку отладки в исходный текст при начале расшифровки кода:

if (photoState == LOW)

{

// начинаем читать

код и переключать светодиоды, если код «свой»

delayMicroseconds(4500);

// ждѐм 4.5 мС

digitalWrite(ledPinGreen, HIGH); photoState = digitalRead(photoPin);

Загружаем программу и, поднося излучатель ИК-кода к фотоприёмнику, убеждаемся, что светодиод «зелёный свет» загорается. Скопируем эту строку, закомментируем её в этом месте и вставим в следующую проверку.

Так, перемещаясь по программе вниз, доходим до того места, где появилась ошибка.

if (photoState == LOW){

delayMicroseconds(3500);

// ждѐм 3.5 мС

Место ошибки!!!! Нужно добавить: photoState = digitalRead(photoPin); if (photoState == HIGH){

digitalWrite(ledPinRed, LOW); // выключаем красный digitalWrite(ledPinGreen, HIGH);//включаем зелѐный delay(2000); // зелѐный 2 секунды digitalWrite(ledPinGreen, LOW);//выключаем зелѐный

}

}

Перед последней проверкой не было команды проверки состояния входа! И, следовательно, последняя проверка if (photoState == HIGH) не подтвердила код.

112

Глава 10. С чего начинаются роботы?

Рис. 10.6. Отладка (выделена пропущенная команда) в программе Arduino

Добавляем утерянную строку и проверяем, загрузив правильный текст программы в модуль, окончательную работу программы. Зелёный светодиод загорается, когда к фотоприёмнику подносится излучатель ИК-кода, и гаснет через 5 секунд, что я выбрал в качестве паузы между переключениями семафора. Вот полный и правильный текст программы.

// установка выводов

const int photoPin = 2; // номер вывода, к которому подключѐн фотоприѐмник const int ledPinGreen = 13; // номер вывода зелѐного светодиода

const int ledPinRed = 12; // номер вывода красного светодиода

int photoState = HIGH; // переменная для чтения состояния фотоприѐмника

void setup() {

//инициализируем выходы для светодиодов pinMode(ledPinGreen, OUTPUT); pinMode(ledPinRed, OUTPUT);

//инициализируем вход для фотоприѐмника pinMode(photoPin, INPUT);

}

void loop(){

// включаем красный свет digitalWrite(ledPinRed, HIGH);

//читаем состояние входа photoState = digitalRead(photoPin);

//проверяем есть ли пачка импульсов

//если есть, то photoState становится LOW if (photoState == LOW) {

// начинаем читать код и переключать светодиоды, если код «свой» delayMicroseconds(4500); // ждѐм 4.5 мС

photoState = digitalRead(photoPin);

113


Глава 10. С чего начинаются роботы?

if (photoState == HIGH){

delay(1); // ждѐм 1 мС

photoState = digitalRead(photoPin);

if (photoState == LOW){

delay(1); // ждѐм 1 мС

photoState = digitalRead(photoPin);

if (photoState == HIGH){

delay(1); // ждѐм 1 мС

photoState = digitalRead(photoPin);

if (photoState == LOW){

delayMicroseconds(3500);

// ждѐм 3.5 мС

photoState = digitalRead(photoPin); if (photoState == HIGH){

// выключаем красный digitalWrite(ledPinRed, LOW);

//включаем зелѐный digitalWrite(ledPinGreen, HIGH); delay(2000); // зелѐный 2 секунды

//выключаем зелѐный digitalWrite(ledPinGreen, LOW);

}

}

}

}

}

}// иначе ничего не делаем

}

И глава, и книга должны были быть о роботах. А мы всё о программах, о паровозиках да семафорах, когда же про роботов?

Прежде, чем робот сделает первое движение, вы должны сделать первые шаги в освоении этой техники. Вот вы и сделали эти шаги, если прочитали все предыдущие главы, повторили всё, о чём в них написано. Если ваши устройства для паровозика и семафора заработали, то вы можете модифицировать описанные ранее программы так, чтобы паровозик «видел» семафор — добавьте к модулю фотоприёмник TSOP — а семафор, отправлял сигнал паровозику, что горит красный свет. Паровозик, принимая сигнал, отправлял бы сигнал «я свой», а семафор, получив его, включал зелёный свет. Вы можете добавить реле (включив его через транзистор к устройству в паровозике), которое будет отключать двигатель паровозика, получив сигнал от семафора, что горит красный свет, а «увидев» зелёный, включало бы двигатель. И вы получили первый роботпаровозик.

Впрочем, оставим «Паровозик из Ромашкова». Что нам мешает собранные и проверенные модули применить иначе. Например, если у вас есть тележка с электрическим моторчиком, умеющая поворачивать, то... Установим на эту тележку модуль семафора. Он будет принимать тот ИК-код, который мы проверили. А модуль излучения ИК-кода мы модифицируем следующим образом: вместо одного светодиода (АЛ307А) включим две гирлянды из светодиодов. Если использовать напряжение 12 В, то можно включить в гирлянду 8-9 светодиодов. И ничто не мешает сделать не две, а скажем четыре гирлянды, подключив все транзисторы к одному выходу микроконтроллера.

Зачем нам эта новогодняя ёлка? Выложим этими гирляндами периметр в виде прямоугольника. Внутрь поместим тележку-робота, которую запрограммируем так, чтобы, получив сигнал от излучателя, она останавливалась, отъезжала назад, поворачивала и вновь пыталась проехать к «ограде». Если мы оставим в ограде ворота, то получим робота, который должен найти выход из «загона».

114


Глава 10. С чего начинаются роботы?

Экспериментируя с «дальнобойностью» излучателей, скоростью движения робота-тележки, вы наработаете некоторый материал, который поможет создавать более сложные устройства. Сегодня и в Интернете, и в магазинах можно поискать и найти многое, что позволит собирать роботы. Есть много таких полезных датчиков, как ультразвуковой датчик расстояния, исполнительных механизмов, таких как сервомоторы и т.д.

Рис. 10.7. Компоненты для создания роботов в Интернет-магазине

Есть достаточно много заготовок, которые можно использовать в роботостроении. Вот, например, что можно найти в магазине:

115

Глава 10. С чего начинаются роботы?

Рис. 10.8. Готовые модули и блоки в радиомагазине

Но самое главное, чем вам следует обзавестись, это желанием научиться всему, терпением и умением придумывать что-то своё и реализовывать эти задумки. Возможно, обретя эти навыки, вы выберете себе профессию, увлекательную и современную, создателя роботов. Успехов вам!

116


Приложение А. О языке программирования Arduino

Приложение А. О языке программирования Arduino

117

Приложение А. О языке программирования Arduino

Arduino

блокнот

программиста

Brian W. Evans

118

Приложение А. О языке программирования Arduino

119

Приложение А. О языке программирования Arduino

120

Приложение А. О языке программирования Arduino

Оглавление

Оглавление...............................................................................................................................................

121

предисловие ............................................................................................................................................

123

структура ..................................................................................................................................................

125

setup() ...................................................................................................................................................

125

loop() .....................................................................................................................................................

126

функции................................................................................................................................................

126

,- фигурные скобки..............................................................................................................................

127

; точка с запятой...................................................................................................................................

127

* ...

*/ блок комментария ...................................................................................................................

128

однострочный комментарий..............................................................................................................

128

переменные.............................................................................................................................................

129

объявление переменных....................................................................................................................

130

границы переменных..........................................................................................................................

131

byte .......................................................................................................................................................

132

int

..........................................................................................................................................................

132

long........................................................................................................................................................

132

float .......................................................................................................................................................

132

массивы................................................................................................................................................

133

арифметика..............................................................................................................................................

134

смешанное присваивание ..................................................................................................................

134

операторы сравнения .........................................................................................................................

135

логические операторы ........................................................................................................................

135

константы .................................................................................................................................................

136

true/false...............................................................................................................................................

136

high/low ................................................................................................................................................

136

input/output..........................................................................................................................................

136

управление программой ........................................................................................................................

137

if.............................................................................................................................................................

137

if...

else ...................................................................................................................................................

138

for

..........................................................................................................................................................

139

while......................................................................................................................................................

140

121


Приложение А. О языке программирования Arduino

do...while...............................................................................................................................................

140

цифровой ввод/вывод ............................................................................................................................

141

pinMode (pin, mode) ............................................................................................................................

141

digitalRead (pin) ....................................................................................................................................

142

digitalWrite (pin, value).........................................................................................................................

142

analogRead (pin) ...................................................................................................................................

143

analogWtite (pin, value)........................................................................................................................

144

время и математика................................................................................................................................

145

delay (ms)..............................................................................................................................................

145

millis()....................................................................................................................................................

145

min (x, y)................................................................................................................................................

145

max (x, y) ...............................................................................................................................................

145

случайные числа......................................................................................................................................

146

randomSeed (seed) ...............................................................................................................................

146

random (max)........................................................................................................................................

146

random (min, max)................................................................................................................................

146

последовательный обмен ......................................................................................................................

147

Serial.begin (rate)..................................................................................................................................

147

Serial.println (data) ...............................................................................................................................

147

приложение .............................................................................................................................................

148

цифровой выход ..................................................................................................................................

149

цифровой ввод ....................................................................................................................................

150

сильноточный выход...........................................................................................................................

151

pwm выход ...........................................................................................................................................

152

вход с потенциометра.........................................................................................................................

153

вход от переменного резистора ........................................................................................................

154

серво вывод .........................................................................................................................................

155

122