Простой робот обходящий препятствия

6770

Воскресным утром меня посетила идея сделать проект, который будет интересен начинающим и прост для повторения. Все это вылилось в не совсем простой, но очень колхозный робот, который может обходить препятствия. Так же он может не падать со стола или не выезжать за пределы белого листа. В любом случае, управляющая программа минималистична, но предельно проста. В ней можно много чего улучшить и обучить робота новым фишкам. Железная часть робота выполнена из говна и палок. Я не стремился к эстетике, главным параметром для меня была повторяемость.



ЖЕЛЕЗО

В качестве двигателей выступают китайские шаговые моторчики 28byj-48-5v вместе с идущими к ним в комплекте "драйверами". Эти платки по сути являются просто транзисторными сборками на базе специализированной микросхемы ULN2003A, а роль драйвера берет на себя МК.

В качестве мозга робота выступает Arduino NANO на базе микроконтроллера Atmega328p. Возможностей этого МК хватает с запасом для нашей задачи.

Робот объезжающий препятствия

Чтобы робот мог объезжать препятствия, ему нужны датчики. ИК-датчики являются достаточно дешевыми и простыми устройствами, подходящими для решения несложных задач, в которых не требуется ни особой точности, ни большой дальности обнаружения. Для этого вам придется спаять простую платку с тремя инфракрасными светодиодами и одним tsop ИК приемником. Такие светодиоды применяются во всех пультах дистанционного управления, а ИК приемники в том чем этот пульт управляет. Все эти компоненты очень дешевы и легко доступны. На ИК диоды нужно одеть черную термоусадку, чтобы они светили только в направлении предполагаемого препятствия. Так же вам понадобится несколько резисторов и конденсатор. Подстроечные резисторы R11 и R14 нужны для настройки чувствительности боковых датчиков и датчика поверхности соответственно. R8-R10 нужны чтобы не сжечь ИК светодиоды. Излучающим элементом может быть любой ИК-диод, длина волны которого находится в районе 950 нм (BIR-BM13J4G в моем случае). Фотоприемник я взял TSOP34836. Вы можете взять любой какой найдете, только посмотрите в даташите распиновку (т.к. она может отличаться от моей). На выход фото датчика желательно повесить подтяжку R2 10кОм. Конденсаторы в схеме не обязательны - это правило хорошего тона в схемотехнике и лучше привыкать сразу ставить конденсаторы как можно ближе к выводам питания любой микросхемы.

ИК бампер

Система питания так-же без особых изысков. Я использовал литиевый аккумулятор. Для его подзарядки поставил модуль TP4056. Весь робот питается от батареи через повышающий преобразователь XL6009, который поднимает напряжение до нормальных 5V. (Можно обойтись и без него). В разрыв плюсового провода между преобразователем и батареей установлен выключатель питания. Дальше питание звездой расходится по потребителям. Как вариант, вы можете использовать три пальчиковые батарейки включенные последовательно.

Корпус робота выполнен из пластиковой распаечной коробки. Проковырял отверстия для моторов и прикрутил их на винтики м3. Бампер так-же держится на винтиках.

Колеса.... Я долго думал как сделать максимально просто.... И получилось, на мой взгляд шедеврально. Сначала насадил на оси моторов крышки из под молока и залил китайской соплей, но робот получился очень медленный. Чтобы повысить скорость, приклеил на термоклей сверху крышки побольше. Чтобы увеличить сцепление с поверхностью сделал покрышки из термоклея путем аккуратного мазюканья. Красотища

Третье опорное колесо (шарик) купил в мебельном магазине за 30 рублей и прикрутил шурупами.

Как видите, конструктивно все очень просто. Переходим к программной части.

ЛОГИКА РАБОТЫ

ИК-бампер состоит из трех ИК-излучателей (левый, правый и нижний) приемника на элементе TSOP. Задача микроконтроллера состоит в том, чтобы формировать пачки импульсов и подавать их на ИК-излучатели поочередно. После формирования очередной пачки контроллер принимает сигнал от TSOP. Если приемник регистрирует сигнал, то препятствие обнаружено. Бампер использует три излучателя для того, чтобы регистрировать сигналы по двум направлениям (двух зонный датчик) и контролировать наличие поверхности перед собой.
ИК-бампер не определяет расстояния до препятствия. Зона действия бампера определяется лишь интенсивностью ИК-излучения, для чего и нужны подстроечные резисторы R11 и R12.

Алгоритм работы датчика препятствитакой - контроллер, по очереди, посылает сигналы на каждый ИК излучатель и сразу опрашивает TSOP. Если логический уровень равен нулю (датчик принял отраженный сигнал) значит, в зоне видимости есть препятствие. В результате этого опроса мы получаем картину перед роботом: есть ли земля под ногами, препятствие слева, справа, или путь свободен. На основании этих данных робот принимает решение куда двигаться.

Я применил тут шаговые двигатели в силу их дешевизны и интереса для начинающих  в плане обучения. Так-же, неоспоримым преимуществом является их точность. Можно например прикрепить к этому роботу шариковую ручку и заставить робота рисовать. Нужно лишь написать алгоритм движения робота и сделать жесткие колеса. В программе, которую я написал, есть функции, которые могут двигать робота как угодно. Заметьте, что МК не может крутить обоими моторами одновременно, поэтому, они работают по очереди - по шажочку. Но, т.к. это происходит с большой частотой и имеется 4078 шагов на оборот колеса, этого не заметно.

НО! Т.к. ардуина не может одновременно управлять шаговыми двигателями и опрашивать датчики робот двигается рывками. Эту проблему можно нивелировать путем разпаралеливания задач, но это достаточно сложно и проще применить специальные драйверы для моторов, которые будут управлять двигателями независимо от МК. И еще есть несколько способов.

Можно заставить робота запоминать пройденное расстояние и местонахождение препятствий - памяти должно хватить на небольшую комнату (если использовать маленькое разрешение) в итоге мы получим робота исследователя.

Как видите, поле для экспериментов в программировании - огромное. Дерзайте.
Будут вопросы, спрашивайте тут в комментариях. Отвечу или дополню статью.

Ссылка на скетч - IR_robot

Видео про Простой робот обходящий препятствия

Товары из китая в тему:

Комментарии

Комментарии


  Дмитрий Цветков
 
10 Сентября 2016 
Здравствуйте.Повторил Ваш проэкт и при заливке скейча вылезает ошибка: Arduino: 1.6.7 (Windows 10), Плата:"Arduino Nano, ATmega328" C:\Program Files\Arduino\arduino-builder -dump-prefs -logger=machine -hardware "C:\Program Files\Arduino\hardware" -hardware "C:\Users\admin\AppData\Local\Arduino15\packages" -tools "C:\Program Files\Arduino\tools-builder" -tools "C:\Program Files\Arduino\hardware\tools\avr" -tools "C:\Users\admin\AppData\Local\Arduino15\packages" -built-in-libraries "C:\Program Files\Arduino\libraries" -libraries "C:\Users\admin\Documents\Arduino\libraries\libraries" -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10607 -build-path "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp" -warnings=more -prefs=build.warn_data_percentage=75 -verbose "C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino" C:\Program Files\Arduino\arduino-builder -compile -logger=machine -hardware "C:\Program Files\Arduino\hardware" -hardware "C:\Users\admin\AppData\Local\Arduino15\packages" -tools "C:\Program Files\Arduino\tools-builder" -tools "C:\Program Files\Arduino\hardware\tools\avr" -tools "C:\Users\admin\AppData\Local\Arduino15\packages" -built-in-libraries "C:\Program Files\Arduino\libraries" -libraries "C:\Users\admin\Documents\Arduino\libraries\libraries" -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10607 -build-path "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp" -warnings=more -prefs=build.warn_data_percentage=75 -verbose "C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino" WARNING: Category '' in library Ethernet2 is not valid. Setting to 'Uncategorized' WARNING: Category 'power' in library Rest is not valid. Setting to 'Uncategorized' "C:\Users\admin\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino" "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\variants\eightanaloginputs" "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\sketch\_1.ino.cpp" -o "nul" "C:\Users\admin\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino" "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\variants\eightanaloginputs" "-IC:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ" "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\sketch\_1.ino.cpp" -o "nul" "C:\Users\admin\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino" "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\variants\eightanaloginputs" "-IC:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ" "C:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ\Stepper_28BYJ.cpp" -o "nul" "C:\Users\admin\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino" "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\variants\eightanaloginputs" "-IC:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ" "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\sketch\_1.ino.cpp" -o "nul" "C:\Users\admin\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino" "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\variants\eightanaloginputs" "-IC:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ" "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\sketch\_1.ino.cpp" -o "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\preproc\ctags_target_for_gcc_minus_e.cpp" "C:\Program Files\Arduino\tools-builder\ctags\5.8-arduino5/ctags" -u --language-force=c -f - --c -kinds=svpf --fields=KSTtzns --line-directives "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\preproc\ctags_target_for_gcc_minus_e.cpp" "C:\Users\admin\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-g " -c -g -Os -Wall -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino" "-IC:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\variants\eightanaloginputs" "-IC:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ" "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\sketch\_1.ino.cpp" -o "C:\Users\admin\AppData\Local\Temp\build1c253ffcf6c6c9a9e24ecfd744b6012b.tmp\sketch\_1.ino.cpp.o" C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'void setup()': _1:48: error: 'btn1' was not declared in this scope _1:49: error: 'btn2' was not declared in this scope C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int IRsendq(int, int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:59:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mv_forward(int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:67:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mv_buck(int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:75:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mv_rotate_l(int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:83:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mv_rotate_r(int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:91:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mv_l(int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:98:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mv_r(int)': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:105:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int mot_init()': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:110:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int off_motr()': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:114:1: warning: no return statement in function returning non-void [-Wreturn-type] C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino: In function 'int off_motl()': C:\Users\admin\Desktop\Новая папка (7)\proga\_1\_1.ino:118:1: warning: no return statement in function returning non-void [-Wreturn-type] Несколько библиотек найдено для "Stepper_28BYJ.h" Используется: C:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ Не используется: C:\Program Files\Arduino\libraries\Stepper_28BYJ Используем библиотеку Stepper_28BYJ в папке: C:\Users\admin\Documents\Arduino\libraries\libraries\Stepper_28BYJ (legacy) exit status 1 'btn1' was not declared in this scope
  Саша Лютый
 
14 Сентября 2016 
забыли подключить библиотеки шагового двигателя. Она лежит в моем архиве.
  Владимир
 
24 Декабря 2017 
Arduino: 1.8.3 (Windows 7), Плата:"Arduino/Genuino Uno" C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10803 -build-path C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093 -warnings=all -build-cache C:\Users\Vladimir\AppData\Local\Temp\arduino_cache_924564 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10803 -build-path C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093 -warnings=all -build-cache C:\Users\Vladimir\AppData\Local\Temp\arduino_cache_924564 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr Detecting libraries used... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\sketch\_1.ino.cpp" -o "nul" "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\sketch\_1.ino.cpp" -o "nul" "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "D:\Documents\Arduino\libraries\Stepper_28BYJ\Stepper_28BYJ.cpp" -o "nul" Generating function prototypes... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\sketch\_1.ino.cpp" -o "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\preproc\ctags_target_for_gcc_minus_e.cpp" "C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c -f - --c -kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\preproc\ctags_target_for_gcc_minus_e.cpp" Компиляция скетча... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -Wall -Wextra -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\sketch\_1.ino.cpp" -o "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_621093\sketch\_1.ino.cpp.o" C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'void setup()': _1:48: error: 'btn1' was not declared in this scope pinMode(btn1, INPUT); ^ _1:49: error: 'btn2' was not declared in this scope pinMode(btn2, INPUT); ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int IRsendq(int, int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:59:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mv_forward(int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:67:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mv_buck(int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:75:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mv_rotate_l(int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:83:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mv_rotate_r(int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:91:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mv_l(int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:98:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mv_r(int)': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:105:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int mot_init()': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:110:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int off_motr()': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:114:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino: In function 'int off_motl()': C:\Users\Vladimir\AppData\Local\Temp\HZ$D.333.4718\HZ$D.333.4719\proga\_1\_1.ino:118:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ Используем библиотеку Stepper_28BYJ в папке: D:\Documents\Arduino\libraries\Stepper_28BYJ (legacy) exit status 1 'btn1' was not declared in this scope Вот такую ошибку выдаёт компилятор. В чём дело? Ведь в скетче всё, что нужно прописано!
  Владимир
 
24 Декабря 2017 
Пытаюсь залить ваш скетч в плату НАНО. Каждый раз выдаёт такую ошибку: Arduino: 1.8.3 (Windows 7), Плата:"Arduino Nano, ATmega328" C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10803 -build-path C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936 -warnings=all -build-cache C:\Users\Vladimir\AppData\Local\Temp\arduino_cache_835049 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries D:\Documents\Arduino\libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10803 -build-path C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936 -warnings=all -build-cache C:\Users\Vladimir\AppData\Local\Temp\arduino_cache_835049 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino Using board 'nano' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr Изменены опции сборки, пересобираем все Detecting libraries used... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\sketch\_1.ino.cpp" -o "nul" "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IC:\Program Files (x86)\Arduino\libraries\Stepper\src" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\sketch\_1.ino.cpp" -o "nul" "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IC:\Program Files (x86)\Arduino\libraries\Stepper\src" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\sketch\_1.ino.cpp" -o "nul" "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IC:\Program Files (x86)\Arduino\libraries\Stepper\src" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Program Files (x86)\Arduino\libraries\Stepper\src\Stepper.cpp" -o "nul" "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IC:\Program Files (x86)\Arduino\libraries\Stepper\src" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "D:\Documents\Arduino\libraries\Stepper_28BYJ\Stepper_28BYJ.cpp" -o "nul" Generating function prototypes... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -w -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IC:\Program Files (x86)\Arduino\libraries\Stepper\src" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\sketch\_1.ino.cpp" -o "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\preproc\ctags_target_for_gcc_minus_e.cpp" "C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c -f - --c -kinds=svpf --fields=KSTtzns --line-directives "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\preproc\ctags_target_for_gcc_minus_e.cpp" Компиляция скетча... "C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g " -c -g -Os -Wall -Wextra -std=gnu 11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10803 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IC:\Program Files (x86)\Arduino\libraries\Stepper\src" "-ID:\Documents\Arduino\libraries\Stepper_28BYJ" "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\sketch\_1.ino.cpp" -o "C:\Users\Vladimir\AppData\Local\Temp\arduino_build_491936\sketch\_1.ino.cpp.o" D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'void setup()': _1:50: error: 'btn1' was not declared in this scope _1:51: error: 'btn2' was not declared in this scope D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int IRsendq(int, int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:61:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mv_forward(int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:69:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mv_buck(int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:77:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mv_rotate_l(int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:85:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mv_rotate_r(int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:93:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mv_l(int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:100:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mv_r(int)': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:107:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int mot_init()': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:112:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int off_motr()': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:116:1: warning: no return statement in function returning non-void [-Wreturn-type] D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino: In function 'int off_motl()': D:\Documents\Arduino\IR_robot\proga\Скетч\_1\_1.ino:120:1: warning: no return statement in function returning non-void [-Wreturn-type] Используем библиотеку Stepper версии 1.1.3 из папки: C:\Program Files (x86)\Arduino\libraries\Stepper Используем библиотеку Stepper_28BYJ в папке: D:\Documents\Arduino\libraries\Stepper_28BYJ (legacy) exit status 1 'btn1' was not declared in this scope. Что делать?
  Владимир
 
03 Января 2018 
Библиотека шагового двигателя подключена.Статус ошибки не изменился. Подскажите, пожалуйста, в чём моя ошибка?
  Владимир
 
08 Января 2018 
Уважаемый автор! Вот уже почти месяц пытаюсь повторить Ваш проект! Никак не получается откомпилировать предложенный скетч. Выдаёт следующее сообщение:Arduino: 1.6.5 (Windows 7), Плата\\″Arduino Nano, ATmega328\\″ _1.ino: In function \\′void setup()\\′: _1:53: error: \\′btn1\\′ was not declared in this scope _1:54: error: \\′btn2\\′ was not declared in this scope \\′btn1\\′ was not declared in this scope Это сообщение будет содержать больше информации чем \\″Отображать вывод во время компиляции\\″ включено в Файл > Настройки
  Владимир
 
09 Января 2018 
Уважаемый автор! С трудом нашёл ошибку в скетче для робота! Оказалось просто, как всё гениальное! Теперь компиляция проходит без ошибок, но робот не двигается с места. Подскажите, пожалуйста, в чём ещё ошибка в скетче? Я не силён в программировании, мне 66 лет, самому не справиться, но очень хочется повторить Ваш проект!
  Владимир
 
14 Января 2018 
Добился, что двигатели вращаются, но неправильно. Похоже, что от бампера поступают не те, что надо, сигналы. Буду разбираться с бампером.
  Владимир
 
15 Февраля 2018 
Уважаемый автор данного проекта! Я потратил много времени чтобы повторить вашего робота, избегающего препятствий, но он у меня так и не заработал, как показано в ролике. Ошибка кроется в скетче, теперь у меня нет в этом сомнений, потому что аппаратную часть робота я выверил досконально! Перепроверьте, пожалуйста, свой скетч и исправьте его. Буду Вам очень признателен, если у меня он заработает.