Архив рубрики: LEGO

Конструкции с описанием и инструкциями. Интересны для самостоятельной сборки и могут использоваться на занятиях в школах и кружках.

Экран LEGO EV3 с русскими буквами

LEGO EV3 научился писать по-русски!

Блок LEGO EV3 является настоящим компьютером с операционной системой и другими атрибутами компьютера. Но это маленький и специализированный компьютер. Поэтому есть всяческие особенности. Блок EV3 может работать только с латинскими (английскими) символами (буквами).

На просторах интернета обнаружен пакет для вывода русских букв на дисплей блока EV3 для среды разработки Clever (встречаются ещё такие варианты написания названия этой среды разработки — clEV3r или CLEV3R). Пакет называется EV3_Basic_Plus_Russian.

Общие впечатления о работе с модулем

Пакет EV3_Basic_Plus_Russian имеет недостатки, поэтому я решил сначала о них написать. Так вам будет понятно, нужно вам его скачивать или нет.

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

Заметно увеличивается время компиляции простой программы. Если программа использует и другие модули, то возможно время компиляции не сильно изменится. Но если программа простая, то компиляция перестаёт пролетать моментально.

Вывод текста на дисплей происходит очень медленно. Вместо 3 — 5 миллисекунд английскими буквами получается 1,5 секунды русскими.

Не работает связка команд StopUpdate — Update. Выглядит так — будто блок EV3 с трудом понимает русский язык и медленно прорисовывает буквы. Я не смог остановить обновление командой StopUpdate, хотя перепробовал все варианты.

В итоге, я планирую использовать этот модуль в неспешных частях программ. Например, в начальных пояснениях или при вводе данных кнопками. В процессе экранной игры попытка вывести на дисплей русские буквы приостановит игру.

Где скачать и как установить?

Скачать можно с платформы github.com. Там выложены все необходимые файлы.

Ссылка на страницу с пакетом: https://github.com/Avdor1963/EV3_Basic_Plus_Russian

Скриншот страницы GitHub модуля 
EV3_Basic_Plus_Russian

На странице читаем пояснения или сразу жмём на зелёную кнопку «< > Code». В открывшемся выпадающем окне жмём на «Download ZIP». Скачается архив со всеми файлами.

По инструкции в файле Readme.txt скопировал файл LCDRu.xml в папку на компьютере …> clev3r > Help > ru. Сразу появилась «справка» по модулю в среде CLEV3R.

Скриншот размещения файла LCDRu.xml

Справка по модулю LCDRu
Справка по модулю LCDRu

Файлы с шрифтами font8x8_0.fnt, font8x8_1.fnt и font16x16.fnt загрузил в EV3 в папку prjs. Я ещё не разобрался с правильным расположением файлов в EV3 и в среде CLEV3R. Если загружаю файлы шрифтов в папку с программой, то текст на русском не отображается на дисплее блока EV3.

Вместо загрузки файлов шрифтов в EV3 можно запустить программы для пересоздания шрифтов. Это пункт 5 в файле Readme.txt. Размещаем на компьютере в одной папке программы CreateFont8x8_0.bp, CreateFont8x8_1.bp и CreateFont16x16.bp и модули Font8x8_0.bpm, Font8x8_1.bpm и Font16x16.bpm. В среде CLEV3R создаём папку в блоке EV3, например, папку rus в папке prjs. Открываем эту папку rus. В среде CLEV3R открываем и запускаем по очереди программы для пересоздания шрифтов. Создадутся файлы шрифтов в папке prjs в блоке EV3. Теперь можно удалить на EV3 папку rus. Можно проверять.

Пишем русские буквы на LEGO EV3

Создаём новую программу в CLEV3R и указываем куда её сохранять на компьютере. В это же место размещаем файл модуля LCDRu.bpm. В блок EV3 вручную ни чего загружать не требуется. При компиляции автоматически будут созданы дополнительные папки и файлы в блоке EV3.

Папка с программой и модулем LCDRu.bpm
Папка с программой и модулем LCDRu.bpm

Увидев как долго прорисовывает EV3 русские буквы я набросал проверочный тест. Этот тест не является истиной в последней инстанции, но позволяет оценить задержку времени.

import"LCDRu"

Time.Reset1()
LCDRu.Clear()
LCDRu.StopUpdate()
LCDru.Text(1,10,5,2,"LEGO EV3")
LCDRu.TextRU (1,10,25,1,"yfexbkcz gbcfnm")
LCDRu.TextRU (1,10,40,2,"GJ-HECCRB")
Program.Delay(2000)
LCDRu.TextRu(1,20,60,1,"yj \nj yt ghjcnj!")
LCDRu.TextRu(1,5,80,2,"DHTVZ "+Time.Get1())
LCDRu.Update()
Program.Delay(10000)

Time.Reset1()
LCD.Clear()
LCD.StopUpdate()
LCD.Text(1,10,5,2,"LEGO EV3")
LCD.Text(1,10,25,1,"wants to write only")
Program.Delay(2000)
LCD.Text(1,0,35,2,"in English")
LCD.Text(1,5,80,2,"TIME "+Time.Get1())
LCD.Update()
Program.Delay(10000)

В первой части программы используются методы LCDRu, а во второй только стандартные LCD. Программа должна очистить дисплей, примерно через 2 секунды вывести на дисплей надписи на русском. Фактически программа после очистки дисплея сразу начинает рисовать буквы. Затем задержка 2 секунды и продолжает вырисовывать буквы. Таймер успевает насчитать порядка 3598 миллисекунд. Вычитая 2 секунды задержки, понимаем, что буквы рисовались 1,5 секунды!

Экран LEGO EV3 с русскими буквами
Экран LEGO EV3 с русскими буквами

Во второй части программы всё выполняется по программе. Очистка дисплея, пауза порядка 2 секунд и появление всего текста по команде LCD.Update(). Таймер успевает насчитать 2008 миллисекунд. Вычитая 2 секунды задержки, очевидно, что работа с латинскими символами заняла порядка 8 миллисекунд.

Надписи на дисплее LEGO EV3 при тесте на скорость методов LCD
Дисплей LEGO EV3 при тесте на скорость методов LCD

Прошу в комментариях указать, если я не правильно что-то описал. Как можно ускорить работу с русскими словами?

Короткое видео про вывод русских букв на LEGO EV3

Видео просто показывает, что на дисплее блока EV3 выводятся текст на русском. Ни какой исследовательской ценности в ролике нет. Скорее видео информирует о существовании сайта robiki.ru Но на канале есть другие интересные видеоролики и не только про LEGO.

Ссылка на видео: https://youtube.com/shorts/fO46urSJZf4

LEGO птички для игры Flappy Bird

Игра Flappy Bird на LEGO EV3 в CLEV3R

Рассмотрим как написать простую игру для LEGO EV3 в CLEV3R. Про среду CLEV3R можно найти материалы на сайте разработчика clev3r.ru

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

Листинг (текст) программы целиком есть в конце статьи. Можно копировать и вставлять. После листинга ссылка на файл архива. В не архивированном виде не получилось разместить на сайте.

Видеоролик написания программы с проверками результата

Видеоролик показывает написание программы с небольшими пояснениями. На канале есть ещё несколько видео посвященных LEGO конструкциям.

https://youtu.be/ClRLi08aQcY

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

Координаты на экране блока LEGO EV3

Экран блока LEGO EV3 является жидкокристаллическим индикатором ЖКИ или на английский манер LCD. Координаты объектов на экране задаются в пикселях (в точках). Каждая точка может быть в одном из двух состояний — черная (тёмная) или белая (светлая). Когда EV3 выключен или после выполнения команды LCD.Clear() все пиксели экрана в состоянии светлая.

Начало координат в левом верхнем углу экрана. Координата самого левого верхнего пикселя x=0 и y=0. Всего столбцов точек по горизонтали, по координате x 178 штук, а строк точек по вертикали, по координате y 128 штук. Получается, что координата самой правой нижней точки x=177 и y=127.

Общее описание программы

Программа получилась простая, но выделить разделы в ней можно.

Начальные установки программы игры

Присваиваем начальные значения переменным и константам. Здесь нет разделения на переменные и константы. Некоторые переменные имеют одно значение, не меняют его в процессе выполнения программы. Например, коэффициент гравитации g.

Некоторые переменные периодически меняют своё значение. Например, координата птицы по вертикали yb.

Функция для вывода на экран изображений препятствий — труб. Бывает удобно выделить определённую последовательность команд в отдельный блок, в отдельную функцию. Например, если одну и ту же последовательность требуется выполнить в разных местах программы. При такой организации удобно настраивать программу. Изменения вносить в одном месте легче, чем копировать несколько раз.

Функция в программе игры Flappy Bird
Оформление начала игры Flappy Bird

Эта группа команд устанавливает режим датчика, обнуляет таймер и делает начало программы более заметным. Для заметности поручам блоку EV3 пикнуть и отобразить на экране надпись.

Главный, основной цикл программы получился длинный, поэтому только кусок на картинке. Внутри этого цикла есть ещё цикл и условия и формулы. Пока мы играем в игру, программа выполняет этот цикл.

Начало главного цикла игры Flappy Bird
Финальное оформление игры Flappy Bird

После завершения игры и соответственно выхода из главного цикла, блок EV3 пикает и отображает на экране набранные очки. Назовём эту часть программы: «декоративное оформление конца игры».

Если возникают сложности с пониманием работы программы, напишите в комментариях и я сделаю пояснения.

Текст программы игры Flappy Bird

t=100 'время между прорисовками
yb=30 'положение птички по вертикали
xb=15 'положение птички по горизонтали
vy=0 ' скорость птички по вертикали
g=1 'коэффициент гравитации
vymax=5 'максимальная скорость снижения высоты птички
vfl=-3 'скорость птички вверх после нажатия кнопки
x1=178 'положение по горизонтали препятствия 1
x2=267 'положение по горизонтали препятствия 2
y1=64 'положение коридора в препятствии 1 по вертикали
y2=64 'положение коридора в препятствии 2 по вертикали
vx=-3 'скорость перемещения препятствий по горизонтали
c=3 'количество допустимых столкновений
c1=0 'флаг для исключения многократных срабатываний при одном столкновении
s=0 'количество набранных очков

Function Tube(in number Xt, in number Yt) 'функция прорисовки препятствия
  LCD.FillRect(1,Xt-10,0,20,128)
  LCD.FillRect(1,Xt-12,Yt-25,24,50)
  LCD.FillRect(0,Xt-12,Yt-20,24,40)
EndFunction

Sensor.SetMode(1,0) 'установка режима датчика порта 1

Speaker.Tone(30,500,200)
LCD.Clear()
LCD.Text(1,20,20,2,"START")
Program.Delay(1000)
Time.Reset1() 'обнуление таймера для отслеживания времени между прорисовками

While yb>0 And yb<127 'основной цикл пока птичка не вылетела за дисплей
  
  LCD.Clear() 'прорисовка во время игры
  Tube(x1,y1) 'переход в функцию прорисовки препятствия с координатами 1
  Tube(x2,y2) 'переход в функцию прорисовки препятствия с координатами 2
  LCD.Text(1,30,110,2,"health "+c) 'выводим на дисплей количество возможных столкновений
  LCD.Text(1,30,10,2,"SCORE "+s) 'выводим количество набранных очков
  LCD.FillCircle(1,xb,yb,5) 'птицу рисую кружком
  LCD.Update()
  LCD.StopUpdate()
  
  While Time.Get1()<t 'цикл отслеживающий нажатия кнопки и датчика касания длится пока длится время между прорисовками
    If Sensor.ReadPercent(1)>10 Or Buttons.GetClicks()="U" Then
      vy=vfl 'при нажатии кнопки скорость птички по вертикали становится равной скорости птички вверх
    EndIf
  EndWhile
  
  Time.Reset1() 'обнуление таймера
  t=100-(s/1.5) 'время между прорисовками уменьшается при увеличении количества набранных очков
  yb+=vy 'корректируем положение птички по вертикали
  If vy<vymax-g Then 'если скорость не очень большая, то увеличиваем
    vy+=g 'корректируем скорость птички по вертикали
  Else
    vy=vymax 'скорость птички по вертикали приравниваем заданному vymax
  EndIf
  
  If x1>0 Then 'если препятствие 1 не достигло левого края дисплея
    x1+=vx 'смещаем препятствие влево по дисплею
  Else
    x1=178 'перемещаем препятствие к правому краю дисплея
    s++ 'добавляем набранное очко
    c1=0 'сбрасываем флаг защиты от многократной фиксации одного столкновения
    Speaker.Tone(20,400,100)    
    If y1<100 Then 'если координата середины коридора препятствия 1 не слишком велика
      y1+=11 ' увеличиваем координату середины коридора
    Else
      y1-=80 'уменьшаем координату коридора, поднимаем к верхнему краю экрана
    EndIf
  EndIf
  
  If x2>0 Then 'аналогично для препятствия 2
    x2+=vx
  Else
    x2=178
    s++
    c1=0
     Speaker.Tone(20,300,100) 
    If y2>25 Then
      y2-=13
    Else
      y2+=80
    EndIf
  EndIf
  
  If (Math.Abs(x1-xb)<=10 And Math.Abs(y1-yb)>20 Or Math.Abs(x2-xb)<=10 And Math.Abs(y2-yb)>20) And c1=0 Then 'по координатам проверяем столкновение птицы с препятствиями
    c-- 'уменьшаем количество возможных столкновений
    c1=1 'устанавливаем флаг против многократной фиксации одного столкновения
    LCD.Clear() 'декоративное оформление столкновения
    LCD.FillRect(1,15,15,150,100)
    LCD.Text(0,40,30,2,"B A H !")
    LCD.Update()
    LCD.StopUpdate()
    Speaker.Tone(40,1500,100)
    Speaker.Tone(30,1200,100)
    Program.Delay(1000)
    Time.Reset1() 'обнуляем таймер, исключаем влияние столкновения на время до следующих прорисовок
  EndIf
  
  If c<0 Then 'выходим из основного цикла игры если закончилось количество возможных столкновений
    break
  EndIf
  
  
EndWhile 'конец основного цикла игры

Speaker.Tone(30,200,200) 'сигнал завершения игры
Speaker.Tone(30,300,200)
Speaker.Tone(30,100,400)
LCD.Clear()
LCD.Text(1,20,20,2,"The end")
LCD.Text(1,30,70,2,"SCORE "+s) 'выводим количество набранных очков
LCD.Update()
Program.Delay(3000)

Файл для скачивания

Можно скопировать программу прямо со странички сайта, а можно скачать файл и открыть его в CLEV3R.

Круг на экране блока LEGO EV3

Пример простой программы в CLEV3R

Для начала программирования может не хватать примеров простых программ. Очевидные для опытных программистов вещи могут быть не понятны начинающим. Даже употребление распространенных во многих языках операторов может вызывать затруднения. На примерах легче понять синтаксис и логику работы программ.

В среде программирования CLEV3R есть справочные описания, но нет примеров программ. У меня накопилось много интересных и довольно простых программ. К сожалению, я не могу утверждать, что использую оптимальные способы программирования. Предлагаю рассматривать все программы как образец рабочей программы, как возможный вариант.

Для начала предлагаю программу в которой два цикла, звуковые сигналы и рисование окружностей на экране.

CLEV3R пример программы
CLEV3R пример программы

Эта же программа с комментариями.

Пример программы с комментариями в CLEV3R
Пример программы с комментариями в CLEV3R

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

Для каждой программы удобно создать отдельную папку в блоке EV3 с помощью CLEV3R. Все файлы относящиеся к конкретной программе будут в папке. Легче наводить порядок.

Саму программу можно набрать вручную непосредственно в редакторе в CLEV3R, а можно открыть готовый файл программы скачанный с сайта. Просто файл с расширением bp не получилось разместить, разместил архив с этим файлом. Кстати, можно просматривать файлы листинга программы в текстовом редакторе, например, в редакторе «Блокнот».

For i=20 To 5 Step -0.5 
  Speaker.Tone( i*5, i*100, 50)
  Speaker.Wait()
EndFor
LCD.Clear()
b=3
While b<100
  LCD.Circle(1,89,64,b)
  Program.Delay(30)
  b+=1
EndWhile
Program.Delay(2000)

Можно скопировать текст программы в среду CLEV3R. Для тренировки, попробуйте все способы.

Программа Krugi работает в EV3
Программа Krugi запущена на LEGO EV3
Внешний вид среды разработки CLEV3R

CLEV3R — новая среда разработки для EV3

Недавно заметил на просторах интернета новую среду разработки программ для LEGO EV3. Сайт разработчиков https://clev3r.ru/

Вступление

Скачать и установить на компьютер очень просто. Блок EV3 подключать к компьютеру через bluetooth получилось не сразу. Это от моего непонимания процесса подключения к компьютеру. Блок EV3 ранее уже был подключен к компьютеру через bluetooth и это подключение использовалось программой LEGO MINDSTORMS Education EV3. В компьютере в настройках в списке устройств было устройство EV3 со статусом «Сопряжено». Через CLEV3R удалось подключиться после удаления устройства EV3 из списка устройств.
В этой статье я хочу поделиться своими впечатлениями и начать цикл статей о CLEV3R с предусловием: пока хочу и есть возможность.

Впечатления о CLEV3R

Мне очень понравилась эта среда разработки. Только положительные эмоции. Хотя, неудачно попробовав использовать массивы, мы завесили блок EV3 и сбросили его до заводских настроек. Ни разу не столкнулся ни с лагами (подвисаниями) ни с багами (ошибками). Программирование ведётся на языке Basic Plus — это полноценный и адаптированный для EV3 язык программирования. Удобно, что не требуется производить специальных действий с самим блоком EV3.

С ev3basic без CLEV3R я не сталкивался, поэтому буду сравнивать с LEGO MINDSTORMS Education EV3 и с EV3 Classroom.

Во первых, в CLEV3R можно управлять файлами, записанными на блок EV3, а в LEGO MINDSTORMS Education EV3 и EV3 Classroom этого делать, насколько я знаю, нельзя.
Во вторых, в CLEV3R есть удобная справка, а в LEGO MINDSTORMS Education EV3 и EV3 Classroom её нету.
В третих, когда делаешь большую программу в LEGO MINDSTORMS Education EV3, то он начинает лагать, в CLEV3R такого не замечено.
В четвертых, при компиляции в CLEV3R происходит проверка синтаксиса.

Сравнение внешнего вида программ

Самый не удобный, на мой взгляд, вид программы это блочный в LEGO MINDSTORMS Education EV3. По началу мне нравилось, что можно запустить несколько веток программы одновременно. При разрастании программы читать её становится сложно и интерфейс сильно тормозит.

Программа игры "Flappy bird" в LEGO MINDSTORMS Education EV3
Программа игры Flappy bird в LEGO MINDSTORMS Education EV3

В EV3 Classroom более привычный и очень наглядный внешний вид программы. Есть перебор с упрощениями для юных программистов, но в целом очень хороший вариант. Удобная работа с переменными, можно проводить вычисления. Из недостатков, пожалуй, только отсутствие возможности рисовать на экране блока EV3. Говорят, есть временные задержки при работе с датчиками и моторами, но я пока не могу их оценить.

Программа шахматных часов в EV3 Classroom
Программа шахматных часов в EV3 Classroom

В CLEV3R программа достаточно наглядно выглядит. Есть возможность работать с файлами, есть возможность рисовать на экране блока EV3. Говорят, что временные задержки при работе с датчиками и моторами меньше чем в описанных выше языках программирования блока EV3.

Фрагмент программы в среде CLEV3R
Программа в среде CLEV3R

Итоги и планы

На данный момент, я считаю CLEV3R наиболее полноценным и удобным вариантом программирования блока EV3. Когда мой сын обнаружил эту среду разработки программ, то у него произошёл взрывной подъём интереса к программированию.

На страницах сайта robiki.ru я планирую разместить несколько примеров программ для блока EV3. Надеюсь на отклик энтузиастов.

Качели «Лодочка»

Сделать действующие качели из LEGO с мотором и управлением от блока EV3 хорошая затея. Мне нравятся качели «Лодочка». Конструкция очень простая. Если хочется, то можно собирать по инструкции.

Инструкция качели «Лодочка»

Инструкция в формате pdf. Для набора LEGO Mindstorms EV3 для учебных организаций 45544.

Файл должен открыться в новой вкладке.

Инструкция в формате pdf. Для набора LEGO Mindstorms EV3 для учебных организаций 45544.

Мотор подключается в порт D.

Датчик дальности подключается в порт 4.

Программа качели «Лодочка»

Запрограммировать можно непосредственно на микрокомпьютере EV3.

Смысл программы такой:
Организован бесконечный цикл.
Включается мотор в одну сторону, ожидание уменьшения расстояния от датчика, пауза четверть секунды, включение мотора в обратную сторону, ожидание уменьшения расстояния от датчика, пауза четверть секунды, возврат в начало цикла.

Видеоролик сборки и работы качелей

В видеоролике использован набор LEGO Mindstorms EV3 31313, немножко отличается от инструкции в формате pdf. Видно как по-разному ведут себя качели при изменении положения противовеса.

Видеоролик на Ютубе:

https://youtu.be/u9NW4tdZypo

Если не получается открыть видеоролик на Ютубе, напишите в комментариях и я постараюсь разместить на других площадках.

Рисовалка

Простая конструкция из LEGO Mindstorms EV3. Рекомендую начинающим специалистам роботостроения. Наглядно видно результат программирования микрокомпьютера EV3. Можно пробовать подготавливать программу на компьютере и переносить её в EV3.

Инструкция сборки рисовалки в формате pdf

Инструкция откроется в новой вкладке

Иногда сразу не открывается полностью файл, помогает обновить страницу браузера.

Моторы следует подключить к портам A и D.

При таком подключении можно управлять моторами по отдельности используя встроенный в EV3 язык программирования.

Фломастер можно прикрепить канцелярской резинкой для денег.

Программы для Рисовалки в LEGO MINDSTORMS Education EV3

Простейшая программа будет содержать всего несколько блоков. Запуск мотора на одном порту, запуск мотора на другом порту и таймер, чтобы отсрочить завершение программы. Моторы включаем с разной мощностью, так веселее. Но можно пробовать и с одинаковой мощностью.

В следующей программе, поочерёдно включаем моторы. Пока крутится один мотор, другой остановлен. В цикле повторяем запуск и остановку моторов несколько раз. Специально крутим моторы не на 360 градусов, чтобы фломастер не елозил по одному месту.

Следующая программа опять с использованием цикла, но моторы запускаются одновременно. Мотор управляемый портом D вращается то в одну то в другую сторону. Завершение цикла отслеживается по одной из веток программы.

Придумайте сами разные варианты. Напишите в комментариях, какая программа вам нравится больше, какие интересные особенности управления моторами вы обнаружили.

Видеоролик о Рисовалке

Видеоролик на Ютубе. Если не получается смотреть, напишите в комментариях. Я постараюсь разместить на другой площадке.

Видео о Рисовалке на Ютубе:

https://youtu.be/ecJIMyBMm7U

Тележка на одном моторе

Это простейшая конструкция с использованием одного мотора. Машиной её не назвать, так как нет рулевого управления. Я собирал такие тележки с первоклассниками и третьеклашками. Всем интересно выполнить различные задания. Сделать такую тележку, которая:

  • Максимально быстрая;
  • Заедет в крутую горку;
  • Проедет дальше за 2 секунды.
  • Вытолкает или перетянет другую телегу или груз.

Первоначальная сборка занимает не много времени, поэтому можно успеть провести много испытаний, соревнований, провести настройку конструкции для разных задач до того как все устанут и захотят есть. Внешний вид здесь не главное, но всегда можно и украсить.

Видеоролик: Настройка одномоторной тележки на максимальную дальность

Видео на Ютуб о настройке на максимальную дальность:

https://youtu.be/OrrJdjBrq84

Инструкция по первоначальной сборке тележки в формате pdf

Инструкция открывается в новой вкладке.

У меня приходится обновить страницу с инструкцией, иначе показывает только первую страницу.

Провод для подключения мотора самый короткий. Втыкаем в порт D.

Это только начальный вариант. Для выполнения разных заданий потребуется модифицировать тележку.

Программирование одномоторной тележки

Микрокомпьютер LEGO EV3 имеет встроенный блочный язык программирования. Это очень удобно для оперативной проверки простых конструкций. Создадим программу с таким алгоритмом:

  1. Начало программы(EV3 начинает последовательно выполнять блоки);
  2. После включения пауза 1 секунду;
  3. Включается мотор на полную мощность;
  4. Пауза 2 секунды во время которой работает мотор;
  5. Конец программы (выключается мотор, EV3 выходит в режим программирования).

Включаем микрокомпьютер EV3 нажатием центральной кнопки. Нажимаемая кнопка отмечена красным.

После включения на экране открыта первая левая вкладка со списком программ. Этот список может быть пустым.

Перемещаемся на третью вкладку нажав 2 раза правую кнопку.

EV3 вкладка непосредственного управления

Нам нужен пункт программирование блока.

Жмем 3 раза для перемещения курсора на пункт «Brick Program».

Для входа в режим программирования жмем центральную кнопку.

Слева иконки для сохранения программы и для открытия ранее сохраненных программ. Стартовый блок программы с треугольником, в нашем алгоритме он под номером 1. Завершающий блок программы с квадратом из стрелок и числом показывающим количество повторений программы, в нашем алгоритме он под номером5.

Пунктир между блоками показывает, что сюда можно вставить программный блок из библиотеки блоков. Нам нужно вставить 3 блока. Это пауза 1 секунда, запуск мотора, пауза 2 секунды.

Открываем библиотеку программных блоков.

Курсор на блоке для управления большим мотором. Нам нужен блок паузы с секундомером.

Это программный блок задержки по времени. Все блоки с песочными часами в правом верхнем углу являются блоками задержки. Они задерживают переход программы к следующему блоку до момента наступления какого-то события.

Нажать 6 раз. Задаём направление вращения мотора и максимальную скорость.

Нажать 6 раз.

оставляем значение таймера: 2 секунды.

Нажать 6 раз для перемещения на стартовый блок.

Для запуска программы нажать центральную кнопку.

Инструкция внесения изменений для увеличения скорости тележки в pdf

Инструкция откроется в новой вкладке.

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

Следующее задание: собрать понижающую передачу, понизить скорость вращения с увеличением момента силы на колёсах. Это нужно для заезда в горку и для перетаскивания груза.

Шагоход на Лямбда механизмах Чебышёва

Историю про создание шагохода или стопохода, как называл его Пафнутий Львович Чебышёв можно найти в интернете. Эта статья про реализацию этого механизма из конструктора типа LEGO.

Фамилия математика очень известна и механизм интересный, поэтому я решил построить такой шагоход. Вместе с другими конструкциями шагоходов получились соревнования или тесты. Об этом будет в следующей статье.

Конструкция не очень сложная. Получилось удачно компактно расположить мотор, шестерни и сами Лямбда механизмы. Сами ноги можно сделать немного короче, но тогда обе пары ног нужно соединять перемычками сверху, над батарейным блоком.

Видеоролик — инструкцию по сборке я выложил на Ютуб.

https://youtu.be/lFoqmTX-muI

Если хотите быструю сборку, то смотрите короткий ролик.

https://youtube.com/shorts/qYCZEByce3U

Если не будет открываться, сообщите. Выложу ещё на какую-нибудь площадку.

В соревнованиях шагоходов, эта конструкция победила в номинации «Грациозность».

НомВнешний видНазваниеКоличество
1Балка 15, толстая прямая. ID: 648714
2Балка 11, толстая прямая. ID: 642906 (на усы 2шт)
3Балка 9, толстая прямая.  ID: 642892
4Балка 7, толстая прямая. ID: 325249
5Балка 5, толстая прямая. ID: 323166
6Балка 9 с перпендикулярными отверстиями.4
7Балка угловая (уголок) 3х7. ID: 421601
8Угловая балка (уголок) 3х5. ID: 325268
9Угловая балка (уголок) 2х4. ID: 421372
10Двойная угловая балка (двойной уголок) 3х7. ID: 414862
11Штифт на 3 с отверстием (двойной штифт с отверстием). ID: 448743
12Угловая балка 3х3 с штифтами (угловая балка с четырьмя штифтами). ID: 491302
13Штифт с отверстием. ID: 654877
14Балка 3 с штифтами (балка 3 с четырьмя штифтами). ID: 654894
15Ось7 (длиной 7). ID: 442941
16Ось 5 (длиной 5). ID: 320734
17Ось 3 (длиной 3). ID: 45192
18Ось 2 (длиной 2)ID: 320621
19Блок с двумя крестами (крестообразными отверстиями). ID: 421424
20Муфта. ID: 427985
21Червяк (длинный). ID: 4716 (32905)1
22Не знаю названия на русском (блок с крестовыми отверстиями 2х2х2). ID: 421931
23Штифт 3 синий не крутящийся (с выступами). ID: 4292418
24Штифт-ось синий (штифт-крестик, штифт-полуось, не крутящийся). ID: 430936
25Штифт 2 крутящийся (короткий, бесфрикционный, без выступов). ID: 36738
26Штифт 2 не крутящийся (короткий, с выступами, фрикционный). ID: 6133218
27Штифт-ось крутящийся (без выступов, бесфрикционный). ID: 65624
28Штифт на 1/2 (переход на систем). ID: 42742
29Панель правая 3х7 (крылышко). ID: 643911
30Панель левая 3х7 (крылышко). ID: 646831
31Пластина систем 2х4. ID: 30201
32Шестерня 24 зуба. ID: 245053
33L мотор. ID: 880031
34Блок управления (батарейный блок).1

Названия деталей на русском отличаются на разных сайтах. Для детали под номером 22 я не нашёл нормального названия. Детали под номером 6 вроде нет стандартной LEGO, поэтому не указал каталожного номера.

Размещаю пару фотографий. По ним можно практически без инструкции собрать.

Лямбда механизм Чебышёва для шагохода

Математик Пафнутий Львович Чебышёв занимался не только фундаментальной наукой, но и прикладными задачами. Кроме прочего он изучал и рассчитывал механизмы. Наблюдая движение Лямбда механизма, на основе которого построен стопоход, ощущаешь математическую красоту. Я не буду даже упоминать про способы математического анализа механизмов. Предлагаю просто приглядеться к результату изысканий математика.

Назван механизм в честь греческой буквы лямбда «λ» из-за внешнего сходства, второе название механизм Чебышёва. Это четырёхзвенный механизм, расстояние между опорными точками тоже является звеном. Соотношение длин звеньев показано на схеме. Собрать этот механизм из LEGO Technic точно получится.

Посмотрите короткое видео про Лямбда механизм Чебышёва и проверку реализации из LEGO.

На Дзене: Лямбда механизм из ЛЕГО для преобразования вращательного движения в прямолинейное.| Дзен

На Ютубе: https://youtube.com/shorts/Zzj7jKTy9gw?si=JvYl9RqWWShB5i0L

Наблюдая траекторию, видно, что есть длинный участок прямолинейного движения. Почти прямолинейного движения! Участок с почти прямолинейным движением длится больше половины оборота привода с вращательным движением. Метки ставятся через равные промежутки времени. На верхнем выпуклом участке траектории мало меток, значит этот путь проходит быстрее чем прямолинейный участок, на котором больше меток.

Пафнутий Львович Чебышёв заметил, что траектория движения похожа на траекторию движения ноги лошади, и если рассматривать совместное движение двух механизмов как двух ног, то будут участки, когда обе ноги на земле.

Если сравнивать с движением ноги лошади, то «копыта» повернуты вверх. Для нас с Пафнутием Львовичем это не преграда. Он построил стопоход, а мы называем шагоход.

Ставим два одинаковых Лямбда механизма и с помощью П-образной конструкции делаем ноги направленные вниз. Этого результата достаточно для постройки шагохода. Но есть ещё одно замечательное свойство Лямбда механизма Чебышёва.

Сам механизм не симметричный, а траектория движения абсолютно симметричная по вертикали (относительно вертикальной оси).

Поэтому можно соединить П-образной конструкцией зеркально расположенные Лямбда механизмы. Это позволяет компактнее расположить привод механизмов и сделать короче корпус шагохода.

Три коротких видео про особенности Лямбда механизма Чебышёва

на Ютубе: Лямбда механизм Чебышёва. Фишка 1. Ютуб

Лямбда механизм Чебышёва. Вторая фишка. Ютуб

Лямбда механизм Чебышёва. Третья фишка. Ютуб

на Дзене: Лямбда механизм Чебышёва. Фишка 1. Дзен

Лямбда механизм Чебышёва. Вторая фишка. Дзен

Лямбда механизм Чебышёва. Третья фишка. Дзен

Глазастик

Это простейший шуточный робот для знакомства с возможностями LEGO Mindstorms EV3. Используется микрокомпьютер LEGO EV3 и средний мотор. На сборку не должно уйти много времени, поэтому начинающий строитель роботов успеет изучить конструкцию до наступления усталости и конца занятия.

Проанализировать какие соединения подвижные, а какие нет.

Запрограммировать вращение глазами.

Проанализировать направление вращения шестеренок.

Украсить Глазастика.

Изменить привод глаз так, чтобы глаза вращались в разные стороны.

Инструкция сборки Глазастика в формате PDF:

Файл PDF иногда не сразу полностью открывается на компьютере, помогает обновить страницу.

В инструкции по сборке Глазастика не показано подключение мотора к блоку EV3. Мотор нужно подключить в порт «А».

Видеоинструкция на Ютубе: https://youtu.be/D5k5JevcX6w

Видеоинструкция на Дзене: https://dzen.ru/video/watch/67a5b6d687cbe525da364d72

Управление вращением глаз

Микрокомпьютер LEGO EV3 позволяет управлять мотором непосредственно кнопками. Экран монохромный и не сенсорный, но справиться с управлением могут даже современные начинающие программисты.

Включаем микрокомпьютер EV3 нажатием центральной кнопки. Нажимаемая кнопка отмечена красным.

После включения на экране открыта первая левая вкладка со списком программ. Этот список может быть пустым.

Открываем третью вкладку нажав 2 раза правую кнопку.

EV3 вкладка непосредственного управления

Это вкладка для управления моторами, просмотра данных с датчиков и для написания программ.

Так выглядит экран в режиме управления моторами. Мотором подключенным к порту «А» управляют кнопки «вверх» и «вниз».

Нажимаем по очереди на кнопки и наблюдаем, как Глазастик вращает глазами.

Для выхода из режима управления моторами (Motor Control) нажать кнопку «Возврат».

Программирование Глазастика

В микрокомпьютере LEGO EV3 есть возможность создать программу. Для этого есть блочный язык программирования. Для быстрой проверки роботов этот язык хорошо подходит.

Перемещаемся в третью вкладку.

Жмем 3 раза для перемещения курсора на пункт «Brick Program».

Для входа в режим программирования жмем центральную кнопку.

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

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

Открываем библиотеку программных блоков.

Курсор на блоке для управления большим мотором. Нам нужен блок управления средним мотором.

Это нужный нам блок. По блокам можно догадаться для чего они.

Выбранный блок вставили в программу. Блок будет включать мотор подключенный к порту «А», вращение по часовой стрелке со скоростью 50%. Такая программа подаст сигнал на включение мотора и тут же выключит мотор, сразу закончится.

Это программный блок задержки по времени. Все блоки с песочными часами в правом верхнем углу являются блоками задержки. Они задерживают переход программы к следующему блоку до момента наступления какого-то события.

Блоки программы показываются скученно, чтобы побольше влезло на экран. В таком виде можно запускать программу. Глазастик будет вращать глазами 2 секунды. Предлагаю добавить ещё несколько блоков.

Вставили блок управления мотором. Блок показывается частично, жирный контур показывает, что этот блок выбран. Можно сказать, курсор наведён на этот программный блок.

Входим в управление настройками выбранного программного блока.

Кнопками «вверх» и «вниз» настроим скорость и направление вращения.

Настроили вращение против часовой стрелки со скоростью 25%. Теперь надо добавить блок задержки.

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

Блок задержки времени редактировать не будем. Переместим курсор на стартовый блок с треугольником.

Вроде 8 раз надо нажать кнопку «лево».

Курсор наведён на стартовый блок.

Запускаем программу.

Глазастик будет вращать глазами в одну сторону, потом в обратную. Добавьте ещё блоков в программу. Настройте время задержки программы. Добавьте звуковые блоки не забыв добавить блоки задержки.

Кнопка «возврат» для остановки программы. Если блоки задержки не правильно настроены или много повторений программы, то смело жмём.

Как изменить конструкцию Глазастика, чтобы левый глаз вращался в одну сторону, а правый в это время в обратную?