Введение
В первом классе я занялся программированием и научился составлять программы в среде Scratch. Я даже сделал компьютерную игру в которой нужно было ловить динозавров. В этой среде программа составляется с помощью команд, которые цепляются одна к другой.
И еще я очень любил играть с электронным конструктором. Я собирал разные схемы, со светодиодами и моторами: например, мне очень понравилось собирать схему в которой взлетал пропеллер от моторчика.
Но моторчик приходилось запускать всякий раз самому, и мне очень захотелось, чтобы это все работало автоматически. Потом я узнал, что из таких электронных деталей состоит и настоящий робот, который как раз понимает разные команды, запоминает их, и потом может повторять много раз. Значит мне нужно узнать как заставить робота понимать мои программы.
Как раз мне подарили книжку про роботов и я прочитал, что для того чтобы автоматически управлять разными частями робота нужно специальное устройство – контроллер. Контроллер находится на специальной плате и его можно запрограммировать, и программа останется в памяти.
У нас был такой контроллер, который называется Arduino. Но в книжке программы для него были очень сложные, на том языке программирования который я не знал. И бабушка мне сказала, что для контроллера Arduino программы можно попробовать составить и на том языке на котором я уже умею программировать, но только там должны быть новые команды которые понимает робот. Такой ящичек с командами для робота был в программах Snap и mBlock. Я выбрал для работы программную среду mBlock.
Так как книжек про программирование роботов в программе mBlock нет, поэтому мне пришлось разбираться в создании программ для электронных устройств самому.
И я стал подключать к Arduino разные детали, составлять разные программы и анализировать как же работают мои устройства.
Основная часть. Как программировать светодиод.
Сначала к контроллеру я подключил один светодиод. У контроллера много ножек и светодиод из конструктора плюсом я подключил к контакту Arduino который назывался D13, минусом светодиод я подключил к контакту «Земля».
Я составил такую программу:
По этой программе сначала на 13 контакт контроллера идет сигнал, он идет одну секунду, в это время светодиод горит, через секунду сигнал становится низким и светодиод гаснет на одну секунду. И такое мигание будет повторяться до тех пор, пока мы не остановим программу. Я менял время в команде «Ждать»: например, если задать время 3 секунды то светодиод будет мигать гораздо медленнее, еще я пробовал подключать светодиод к другому контакту.
Потом для светодиода я придумал другую программу:
И я смог сам управлять светодиодом: когда я нажимал на компьютере клавишу «стрелка вверх» светодиод зажигался, когда я нажимал клавишу «стрелка вниз» – светодиод гас.
Потом я подключил и составил программу для двух и для трех светодиодов. Светодиоды я подключил к 13, 10 и 9 контактам Arduino.
Программа получилась такая:
Эта программа работает так: когда я нажму на клавиатуре компьютера стрелку вверх, то загорится светодиод на 13 ножке контроллера, через одну секунду он погаснет, а загорится светодиод на 10 ножке, и будет гореть одну секунду, потом он погаснет, а будет гореть светодиод на 9 ножке, а потом снова 13-й, и так будет продолжаться всегда. Чтобы погасить все светодиоды я нажимаю клавишу пробел – это показывает вторая часть программы, где на все ножки идет низкий сигнал и работа останавливается.
Вывод: я увидел, что мои светодиоды работали совсем как гирлянда с бегущими огнями на новогодней елочке, если бы у меня было много таких светодиодов, то я смог бы сделать настоящую гирлянду, которая мигала бы самыми разными способами.
Как программировать мотор.
На следующий день вместо светодиодов я решил подключить моторчик. Но мотор нужно подключать на специальные разъемы на плате (2 и 4). Для того чтобы работал мотор нужны еще микросхемы-драйверы (14 и 15).
Я подключил моторчик к разъему MR-2, на шестой контакт Arduino.
Для мотора я составил такую программу:
Когда на клавиатуре я нажимал стрелку вверх – мотор вращался вправо, когда нажимал стрелку вниз, мотор вращался влево. Но останавливался мотор, только когда я отключал питание. Оказывается, для того чтобы мотор остановить нужно было подавать низкий сигнал на третью ножку контроллера, и я изменил программу так:
Теперь, чтобы остановить мотор нужно было нажать клавишу пробел.
Подключение мотора к конструктору
Вечером в этот день я играл в конструктор с шестеренками из магазина Фикс-прайс и сообразил,, что шестеренки можно вращать не только пальцами, а можно подключить моторчик, ведь я уже научился с ним управлять им с помощью контроллера.
Я собрал сложную конструкцию из шестеренок и одну шестеренку надел на вал мотора вместо пропеллера.
Теперь теперь шестеренки вращались то в одну сторону, то в другую, а я управлял вращением с компьютера. Оказывается, шестеренки нужно прикреплять очень крепко, гораздо крепче, чем при вращении просто руками, иначе система плохо работала, и драйвера на плате с контроллером перегревались.
Как управлять машинкой из программы mBlock.
На следующий день я взял платформу, на которой уже были установлены четыре колеса и моторчики.
Я положил плату К-6 на эту платформу и подключил к ней питание и моторы к двум разъемам.
Один разъем управлял двумя правыми моторами и колесами, второй – левыми. На разъем MR-2 шли сигналы с шестого контакта, как в предыдущих экспериментах с одним моторчиком, а на разъем ML-2 шли сигналы с седьмого контакта.
Поэтому свою программу я легко изменил так:
Теперь, когда я нажимал на клавиатуре клавишу «стрелка вверх» машинка ехала вперед, а по клавише «стрелка вниз» – назад.
Но машинка никак не поворачивала. Я перевернул ее вверх колесами, покрутил колеса и понял, что если правые колеса вращаются вперед, а левые в этот момент крутятся назад, то вся платформа будет поворачиваться вправо, и наоборот. Я добавил в программу такие команды для поворота:
После того как я управлял машинкой с помощью стрелок я вспомнил как я составлял программы для светодиода. Я подключил светодиод к тринадцатой ножке контроллера, поставил его на платформу и составил такую программу:
Теперь вперед-назад машинка ездила автоматически, когда две секунды она ехала назад – светодиод горел, когда она две секунды ехала вперед – сигнал на светодиод шел низкий и он не светился, и все это повторялось 20 раз.
Заключение
Так я научился управлять машинкой из программной среды mBlock и задавать ей разные команды. Эту машинку можно считать настоящим роботом, потому что она понимает разные команды и запоминает их а потом выполняет все действия автоматически, и может повторять сколько угодно раз. Для этого мне пришлось научиться управлять различными электронными деталями, и автоматизировать работу устройства из множества шестеренок.
Теперь я хочу сделать робота, который будет не только ездить по программе на колесиках как моя машинка, но и который будет ходить и выполнять другие сложные задачи.