ROBO Pro Coding (RU)
Общая информация о пользовании продуктом
Общая информация о пользовании продуктом
ROBO Pro Coding — это среда разработки для программирования нового контроллера TXT 4.0 и, следовательно, для программирования моделей fischertechnik. Выпущены версии ROBO Pro Coding для Windows, macOS, Linux, iOS и Android. Скачать это ПО можно из следующих источников:
Показанный код можно использовать для этой модели (слева). Веб-интерфейс ПО ROBO Pro Coding имеет следующую структуру (цифры соответствуют областям изображения, на которых они указаны):
- Здесь показаны блоки кода, написанные на языке Python
- В это поле перетаскиваются блоки для программирования
- В консоли показан ход выполнения программы
- Точки останова используются для отладки программ. Они определяют участки кода, на которых выполнение программы приостанавливается. Точки останова задаются через редактор и состоят из имени файла и номера строки.
- В области «Ausdruck» («Выражение») можно просмотреть содержимое переменных.
- В области «Aufrufstapel» («Стек вызовов») показаны вложенные вызовы. Стек вызовов полезен, в частности, при выполнении функций.
- Здесь ты найдешь все блоки для программирования, отсортированные по категориям Aktoren (Исполнительные элементы), Sensoren (Датчики) и Verarbeitung (Обработка)
- Эта строка разъясняется отдельно в разделе «Заглавная строка»
- Здесь можно выбрать уровень обучения, подходящий данному пользователю. В зависимости от уровня могут отображаться, например, только самые важные блоки.
Заглавная строка
Заглавная строка содержит (слева направо) элементы управления для запуска программы, остановки программы, запуска отладчика, вызова тестирования интерфейса, загрузки текущей программы и соединения с контроллером.
Запуск программ
Чтобы запустить свою программу из среды ROBO Pro Coding, щелкни по этой иконке.
Остановка программ
Чтобы остановить свою программу до того, как она остановится сама, коснись этой иконки.
Отладчик
Отладчик упрощает поиск ошибок в программе. Через меню в верхнем правом углу можно шаг за шагом пройти код, имитируя выполнение программы. При этом программа будет реагировать на взаимодействие с датчиками, например на нажатие клавиши. Во время прохождения программы в большом поле слева показано, в каком блоке, а справа — в каком месте кода на языке Python ты находишься.
Тестирование интерфейса
Щелчком по этой иконке с тремя регуляторами открывается это окно:
Здесь показаны все подключенные устройства. При помощи ползунков можно проверить, работают ли исполнительные элементы. Для датчиков указывается измеренное значение (например, здесь напротив клавиши «Mini-Taster» показана цифра «1», потому что эта кнопка нажата). В выпадающем меню (маленький треугольник) можно выбрать подключенные элементы.
Загрузка программ
Если ты написал(-а) программу и хочешь, чтобы она автономно выполнялась на контроллере, ее можно загрузить в контроллер при помощи этой иконки. После загрузки твоя программа появится в списке файлов в контроллере. Щелчком по имени программы в этом списке ты перейдешь в ее подпапку. В ней есть файл с именем «main.py». Щелкни его — кнопка «open» внизу справа должна загореться зеленым. Щелкни кнопку «open» — откроется еще одно меню с четырьмя опциями:
- Laden (Загрузка): загрузи программу, чтобы запустить ее с начального экрана
- Auto load (Автозагрузка): при следующем запуске контроллера программа загружается автоматически
- Auto start (Автозапуск): при следующем запуске контроллера программа автоматически загружается и запускается
- Delete project (Удалить проект): программа удаляется из контроллера
Соединение с контроллером
Процесс соединения с контроллером описывается здесь.
Конфигурация контроллера
Чтобы использовать разные компоненты — датчики и исполнительные элементы — в программе, их надо подключить к контроллеру, причем не только физически, но и в программе. Конфигурация контроллера всегда открыта (автоматически). Вкладка для перехода к ней (Controllerkonfiguration) находится вверху справа от вкладки основной программы (Hauptprogramm). Щелкни эту вкладку.
Сейчас слева отображаются контроллер и все компоненты, которые можно подключить к нему. Перетащи контроллер в область программирования. Сейчас можно подключить нужные компоненты к контроллеру, перетаскивая и опуская их.
Сохранение программ
Чтобы сохранить программу, щелкни по трем линиям вверху слева на веб-сайте ROBO Pro Coding. Коснись опции «Exportieren» («Экспортировать»). Сейчас ты можешь выбрать место сохранения программы: на твоем устройстве или в GitLab.
Локальное сохранение: после ввода имени твоей программы просто щелкни по «Exportieren» — и файл программы сохранится на твоем устройстве.
GitLab: после ввода имени твоей программы и выполнения указанных шагов, необходимых для ввода личного токена доступа, просто щелкни по «Exportieren» — и файл программы сохранится в твоем аккаунте на GitLab.
Исполнительные элементы
Выходы
Блок «Starte jedes mal» («Запускать каждый раз»)
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:
Является сокращением следующей конструкции:
В блок «Starte jedes mal» категории «Ausgänge» («Выходы») можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
СИДы
Присвоить
При помощи блоков setze LED … (присвоить СИД ...) и setze LED Helligkeit … (присвоить СИД яркость ...) можно включать и выключать СИД и выбирать определенное значение его яркости (от 0 до 512).
Вызвать
При помощи блока hole LED Helligkeit (получить яркость СИД) можно вызвать яркость СИД, чтобы обработать ее как значение.
Запросить
При помощи блоков ist LED … (СИД ...) и ist LED Helligkeit … (СИД имеет яркость ...) активность и яркость нужного СИД можно использовать как условие. В примере мы установили яркость СИД на 512, если ее значение еще не равно этому.
Двигатели
Иконка на блоках двигателей обозначает все двигатели, которые не являются двигателями с энкодером или серводвигателями.
Присвоить
При помощи блока setze Motorgeschwindigkeit auf [] … (присвоить скорости двигателя значение [] ...) можно задать определенное значение скорости двигателя (от 0 до 512).
Вызвать
При помощи блока hole Motorgeschwindigkeit (получить скорость двигателя) можно вызвать скорость двигателя, чтобы обработать ее как значение.
Запросить
При помощи блоков läuft Motor (двигатель работает) и ist Motorgeschwindigkeit … (скорость двигателя ...) активность и скорость двигателя можно использовать как условие.
Остановить
При помощи блока stoppe Motor … (остановить двигатель ...) можно остановить нужный двигатель.
Компрессор
Присвоить
При помощи блока setze Kompressor [] (присвоить компрессору []) можно включать и выключать компрессор.
Запросить
При помощи блока ist Kompressor [] (компрессор []) активность компрессора можно использовать как условие.
Электромагнитный клапан
Присвоить
При помощи блока setze Magnetventil [] (присвоить электромагнитному клапану []) можно включать и выключать электромагнитный клапан. Здесь «ein» («вкл.») означает, что клапан открыт, а «aus» («выкл.») — что клапан закрыт.
Запросить
При помощи блока ist Magnetventil [] (электромагнитный клапан []) активность электромагнитного клапана можно использовать как условие.
Звук
В контроллер TXT 4.0 встроен громкоговоритель, поэтому с его помощью можно воспроизводить звуки.
Блок «Starte jedes mal» («Запускать каждый раз»)
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:
Является сокращением следующей конструкции:
В блок «Starte jedes mal» категории «Sound» («Звук») можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
Воспроизвести
Предустановленные аудиофайлы
При помощи следующего блока можно воспроизвести один из 29 предустановленных звуков. Нужный аудиофайл выбирают в выпадающем меню (маленький треугольник). Также можно выполнить бесконечный цикл воспроизведения звука. Для этого установи флажок напротив иконки бесконечного цикла.
Собственные аудиофайлы
Если ты хочешь воспроизводить свой звук, используй блок
Чтобы встроить в блок собственный звук, надо:
- Установить соединение с контроллером
- Ввести IP-адрес контроллера в браузер (выбирай IP, который ты использовал(-а) для соединения с контроллером)
- Ввести на загруженной странице «USER: ft, PASSWORD: fischertechnik»
- Открыть папку sounds и, щелкнув в ней по знаку «плюс», загрузить нужный аудиофайл в контроллер (важно: аудиофайл должен иметь формат WAV)
- В блоке ROBO Pro Coding прописать путь «./dateiname.wav»
Свой звук тоже можно зациклить.
Запросить
Чтобы узнать, проигрывается ли аудиофайл, воспользуйся блоком gibt Ton wieder (воспроизводит звук). Его можно использовать в качестве условия в программе.
Остановить
Чтобы остановить воспроизведение аудио, просто используй в программе блок stoppe Tonwiedergabe (остановить воспроизведение звука).
Дисплей
При помощи блоков категории «Display» («Дисплей») можно настроить и подготовить к использованию дисплей контроллера TXT 4.0. Этот процесс состоит из двух этапов:
- Конфигурирование, то есть:
- Открыть новый файл категории «Display»; щелкнув по иконке страницы с плюсом вверху слева,
- перетащить нужные элементы в область, разграфленную на клетки (она представляет собой настраиваемую часть дисплея);
- при необходимости изменить характеристики.
- Программирование, то есть:
- В основной программе при помощи блоков категории «Display» запрограммировать результат взаимодействия с дисплеем.
Блоки
Запрос события
Блок Ereignis [] (Событие []) вызывает возвращаемое значение элемента. Этот блок можно использовать только в событийных программах. В событийных программах этот блок автоматически ссылается на событие, в программе которого он используется. Подходящий тип возвращаемого значения можно выбрать в выпадающем меню (маленький треугольник):
Поле метки
При помощи элемента «Поле метки» на дисплее можно разместить текст. Символ этого элемента в конфигураторе дисплея — ярлык. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер поля метки в пикселях;
- положение поля метки в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол текстового поля);
- имя поля метки и
- содержимое поля метки (этот текст будет отображаться при запуске дисплея).
При помощи блока setze Beschriftungsfeld Text … (присвоить полю метки текст ...) можно менять показанный текст в ходе выполнения программы.
Ввод данных
Элемент «Ввод» позволяет пользователю вводить текст через контроллер. Символ этого элемента в конфигураторе дисплея — буква «Т». Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер поля ввода в пикселях;
- положение поля ввода в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол поля ввода);
- имя поля ввода и
- содержимое поля ввода (этот текст будет отображаться при запуске дисплея).
При помощи блока setze Eingabefeld Text … (присвоить полю ввода текст ...) можно менять показанный текст в ходе выполнения программы.
Программа ввода
Программа ввода выполняется, когда ввод данных завершен. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Eingabe abgeschlossen (если ввод данных завершен). В программе ввода для блока Ereignis [] (Событие []) выбирают тип «text». В этом примере переменной Name (имя) присваивается введенный текст, и затем она используется в основной программе для вывода введенного текста:
Измерительный инструмент
Функция «Измерительный инструмент» может отображать значения (кроме значений меньше 1). Символ измерительного инструмента в конфигураторе дисплея — линейка. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер измерительного инструмента в пикселях;
- положение измерительного инструмента в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол средства измерений);
- имя измерительного инструмента;
- ориентацию измерительного инструмента;
- диапазон значений измерительного инструмента и
- значение измерительного инструмента, отображаемое при запуске дисплея.
При помощи блока setze Messinstrument auf Wert … (присвоить измерительному инструменту значение ...) измерительному инструменту присваивается введенное значение. Это значение должно принадлежать предварительно заданному диапазону значений. Если это значение не принадлежит предварительно заданному диапазону значений, то отображается либо верхний, либо нижний предел этого диапазона значений в зависимости от того, какое значение указано: слишком большое или слишком маленькое.
Отображение статуса
Индикатор статуса показывает активность чего-либо. В зависимости от статуса он горит («активен») или не горит («неактивен»). Символ индикатора статуса в конфигураторе дисплея — горящий диод. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер индикатора статуса в пикселях;
- положение индикатора статуса в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол индикатора статуса);
- имя индикатора статуса;
- цвет индикатора статуса и
- исходное состояние индикатора статуса: aktiv (активен) или нет.
При помощи блока setze Statusanzeige aktiv [] (сделать индикатор статуса активным []) индикатор статуса можно активировать и деактивировать. В выпадающем меню (маленький треугольник) можно выбрать состояние индикатора статуса: активен или неактивен.
Ползунок
Положение ползунка отражает то или иное значение. Пользователь может изменить положение ползунка через сенсорный экран. Вызвать значение можно через блок Ereignis [], как только ползунок остановится. Вызванное значение имеет вид десятичного числа. Если ты хочешь, чтобы значение, которое отражает ползунок, имело вид целого числа, надо вставить блок runde (округлить). Символ ползунка в конфигураторе дисплея — линия с кружком. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер ползунка в пикселях;
- положение ползунка в пикселях (тогда в точке с указанными здесь координатами будет находиться верхний левый угол ползунка);
- имя ползунка;
- активность ползунка;
- ориентацию ползунка;
- диапазон значений, который покрывает ползунок, и
- значение, на котором находится ползунок при запуске дисплея.
При помощи блока Setze Schieberegler Wert … (присвоить ползунку значение ...) можно переместить ползунок на другое значение.
При помощи блока setze Schieberegler aktiviert [] (активировать ползунок []) можно менять активность в выпадающем меню (маленький треугольник).
Программа ползунка
Программа ползунка выполняется после передвижения ползунка. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ползунка выполняется в блоке wenn Schieberegler bewegt (если ползунок перемещен). В программе ввода для блока Ereignis [] (Событие []) выбирают тип «value». В этом примере скорость двигателя регулируется ползунком. Значение, соответствующее положению ползунка, должно округляться, т. к. частота вращения двигателя может быть выражена только целым числом:
Экранная кнопка
Экранная кнопка — это поле с надписью, на которое можно нажимать. При нажатии на экранную кнопку сразу после ее отпускания выполняется программа экранной кнопки. Символ экранной кнопки в конфигураторе дисплея — квадрат с буквами «ОК». Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер экранной кнопки в пикселях;
- положение экранной кнопки в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол кнопки);
- имя экранной кнопки;
- текст, написанный на экранной кнопке, и
- активность экранной кнопки.
При помощи блока setze Schaltfläche aktiviert [] (активировать экранную кнопку []) можно менять активность в выпадающем меню (маленький треугольник).
Программа экранной кнопки
Программа экранной кнопки выполняется после отпускания экранной кнопки. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа экранной кнопки выполняется в блоке wenn Schaltfläche angeklickt (если нажата экранная кнопка). В программе экранной кнопки нельзя использовать блок Ereignis [], т. к. у экранной кнопки нет возвращаемого значения. В этом примере СИД активируется нажатием экранной кнопки.
Переключатель
Переключатель может принимать два положения и всегда находится точно в одном из этих двух положений. В зависимости от положения он возвращает значение wahr (истина) или falsch (ложь). Символ переключателя в конфигураторе дисплея — овал с точкой. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер переключателя в пикселях;
- положение переключателя в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол переключателя);
- имя переключателя;
- текст, расположенный возле переключателя;
- активность переключателя и
- состояние, в котором будет находиться переключатель при запуске программы.
Блок
выполняет две функции. Можно присвоить значение wahr (истина) или falsch (ложь) либо активности (выбрать «enabled» («включено») в выпадающем меню), либо состоянию (выбрать «checked» («отмечено») в выпадающем меню).
Программа переключателя
Программа переключателя выполняется каждый раз при изменении положения переключателя. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа переключателя выполняется в блоке wenn Schalter umgeschaltet (если переключатель переключен). В программе переключателя блок Ereignis [] устанавливается на «checked» и возвращает значение wahr (истина) или falsch (ложь). Программа в этом примере включает СИД, если переключатель переключается, иначе СИД выключается:
Флажок
Флажок может принимать два состояния и всегда находится точно в одном из этих двух состояний. В зависимости от состояния он возвращает значение wahr (истина) или falsch (ложь). Символ флажка — квадратик с галочкой. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать
- размер флажка в пикселях;
- положение флажка в пикселях (в точке с указанными здесь координатами будет находиться верхний левый угол поля ввода);
- имя флажка;
- текст, расположенный возле флажка;
- активность флажка и
- состояние, в котором будет находиться флажок при запуске программы.
Следующий блок выполняет две функции. В выпадающем меню (маленький треугольник) можно выбрать функцию, которую ты хочешь использовать. Можно присвоить значение wahr (истина) или falsch (ложь) либо активности (выбрать «enabled» («включено») в выпадающем меню), либо состоянию (выбрать «checked» («отмечено») в выпадающем меню).
Программа флажка
Программа флажка выполняется каждый раз при щелчке по флажку. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Kontrollkästchen umgeschaltet (если флажок переключен). В программе переключателя блок Ereignis [] устанавливается на «checked» и возвращает значение wahr (истина) или falsch (ложь). Программа в этом примере включает СИД, если флажок отмечен, иначе СИД выключается.
Двигатель
Блок «Starte jedes mal» («Запускать каждый раз»)
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:
Является сокращением следующей конструкции:
В блок «Starte jedes mal» категории «Motor» («Двигатель») можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
Двигатель
Иконка на блоках двигателей обозначает все двигатели, которые не являются двигателями с энкодером или серводвигателями.
Присвоить
При помощи блока setze Motorgeschwindigkeit auf [] … (присвоить скорости двигателя значение [] ...) можно задать определенное значение скорости двигателя (от 0 до 512). В выпадающем меню (маленький треугольник) можно выбрать направление вращения.
Вызвать
При помощи блока hole Motorgeschwindigkeit (получить скорость двигателя) можно вызвать скорость двигателя, чтобы обработать ее как значение.
Запросить
При помощи блоков läuft Motor (двигатель работает) и ist Motorgeschwindigkeit … (скорость двигателя ...) активность и скорость двигателя можно использовать как условие.
Остановить
При помощи блока stoppe Motor [] (остановить двигатель []) можно остановить нужный двигатель. При этом в блоке stoppe Motor [] предусмотрена возможность выбора одной из двух опций: немедленный останов или останов выбегом. Нужную опцию выбирают в выпадающем меню (маленький треугольник):
Серводвигатель
Присвоить
При помощи блока setze Position auf … (присвоить положению значение ...) можно выбрать определенное положение серводвигателя (от 0 до 512). 0 и 512 — значения максимального отклонения справа и слева. Соответственно, если указать 256, то серводвигатель займет центральное положение.
Вызвать
При помощи блока rufe Position ab (вызвать положение) можно вызвать положение серводвигателя, чтобы обработать его как значение.
Двигатель с энкодером
Двигатель с энкодером выполняет те же функции, что и обычный двигатель, плюс дает возможность считать число оборотов и синхронно управлять несколькими двигателями. При этом оборот разбивается примерно на 64 шага.
Присвоить
При помощи блока
можно выбрать определенное значение скорости двигателя (от 0 до 512). В выпадающем меню (маленький треугольник) можно выбрать направление вращения. Также можно ввести число шагов, которые должен пройти двигатель. В этом примере двигатель проходит 100 шагов, т. е. одну целую и одну третью оборота. Как видно из примера, этот блок содержит плюсик, при помощи которого можно синхронно управлять несколькими двигателями. Можно синхронизировать между собой либо двигатели главного устройства, либо двигатели добавочного устройства; перекрестная синхронизация, а именно между двигателями главного устройства с одной стороны и двигателями добавочного устройства с другой стороны, невозможна.
Указание: быстро следующие друг за другом вызовы функции синхронизации, например при выполнении цикла (см. пример), могут повлиять на синхронность или вообще воспрепятствовать ей.
Остановить
При помощи блока stoppe Motor … (остановить двигатель ...) двигатель останавливается. Если надо остановить несколько двигателей одновременно, щелчком по плюсику слева в блоке можно добавить другие двигатели (не более трех).
Запросить
Блок hat Position erreicht (достиг положения) служит для того, чтобы использовать достижение положения как условие. Под положением здесь имеется в виду конечное положение двигателя с энкодером после прохождения всей длины шага.
Датчики
Ввод данных
Блок «Starte jedes mal» («Запускать каждый раз»)
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:
Является сокращением следующей конструкции:
В блок «Starte jedes mal» категории «Eingaben» («Ввод данных») можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
Клавиша
Клавиша — это цифровой датчик, различающий состояния «Ток течет» и «Ток не течет». При этом то, течет ток или нет, зависит как от кабельной разводки, так и от того, нажата ли клавиша. Итак, клавишу можно использовать двумя разными способами:
В качестве «нормально разомкнутого контакта»:
подсоединены контакты 1 и 3.
Клавиша нажата: ток течет. Клавиша не нажата: ток не течет.
подсоединены контакты 1 и 2.
Клавиша нажата: ток не течет. Клавиша не нажата: ток течет.
Вызвать
При помощи hole Mini-Taster Status (получить статус мини-клавиши) можно узнать, течет ли ток через клавишу. Если ток течет, возвращается значение 1, если нет — 0.
Запросить
Чтобы узнать, находится ли клавиша в определенном состоянии, используй блок ist Taster … (клавиша является ...). В выпадающем меню (маленький треугольник) можно выбрать состояние, запрос о котором отправляется. Этот блок можно использовать в качестве условия.
Ультразвуковой датчик
Ультразвуковой датчик используется для измерения расстояний.
Вызвать
При помощи hole Ultraschallsensor Abstand (получить расстояние ультразвукового датчика) можно узнать, насколько датчик удален от ближайшего предмета. Расстояние возвращается в см.
Запросить
Чтобы узнать, находится ли датчик на определенном расстоянии от ближайшего предмета, используй блок ist Ultraschallsensor Abstand … (ультразвуковой датчик находится на расстоянии …). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения измеренного расстояния с введенным значением (<, ≤, =, ≠, ≥, >) . Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если измеренное расстояние меньше 2 см.
Датчик цвета
Датчик цвета излучает красный свет и измеряет количество отраженного света. В зависимости от интенсивности отражения датчик цвета возвращает значения в диапазоне от 0 до 2000. Он хорошо подходит для распознавания предварительно откалиброванных цветов.
Вызвать
При помощи hole Farbsensor Wert (получить значение датчика цвета) можно узнать, насколько интенсивно та или иная поверхность отражает свет.
Запросить
Чтобы узнать, есть ли перед датчиком определенный цвет, используй блок ist Farbsensor Wert … (датчик цвета имеет значение …). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения измеренного значения цвета с введенным значением (<, ≤, =, ≠, ≥, >) . Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если измеренное значение цвета меньше 1000.
ИК-датчик следов
Инфракрасный датчик следов — это цифровой датчик, распознающий черный след на белом фоне и работающий на расстоянии 5–30 мм от фона.
Вызвать
Если hole IR-Spursensor Status (получить статус ИК-датчика следов) вернет тебе 0, это означает, что датчик не обнаружил след. Если датчик обнаружил след, возвращенным значением будет 1.
Запросить
Чтобы узнать, обнаружил ли ИК-датчик следов след, надо сравнить текущий статус следа с 0 или 1. Для этого подходит блок ist IR-Spursensor Status [] … (ИК-датчик следов имеет статус [] ...) . В выпадающем меню (маленький треугольник) можно выбрать способ сравнения статуса следа с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если статус следа равен 0.
Фототранзистор
Фототранзистор — это цифровой датчик, различающий свет и темноту.
Вызвать
Если hole Fototransistor Status (получить статус фототранзистора) вернет тебе 0, это означает, что датчик не обнаружил свет. Если датчик обнаружил достаточно света, возвращенным значением будет 1.
Запросить
Чтобы узнать, что обнаружил фототранзистор (свет или темноту), надо сравнить статус освещенности с 0 или 1. Для этого подходит блок ist Fototransistor Status [] (Фототранзистор имеет статус []). В выпадающем меню (маленький треугольник) можно выбрать состояние, запрос о котором будет отправляться, а именно светлое или темное.
Фототранзистор можно использовать в фоторелейной завесе, как в этой модели.
Фоторезистор
Сопротивление фоторезистора уменьшается по мере роста освещенности. Таким образом, значение, выдаваемое фоторезистором, является мерилом освещенности.
Вызвать
При помощи hole Fotowiderstand Wert (получить статус фоторезистора) ты можешь узнать, насколько светло в том или ином месте. Чем меньше выданное значение, тем светлее.
Запросить
Чтобы узнать, измерил ли фоторезистор определенное значение освещенности, используй блок ist Fotowiderstand Wert [] … (фоторезистор имеет значение [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения значения освещенности с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если значение освещенности меньше 3000.
Резистор с отрицательным ТКС
Резистор с отрицательным ТКС — это небинарный температурный датчик. Его электрическое сопротивление уменьшается по мере роста температуры, и поэтому является мерилом температуры.
Вызвать
При помощи hole NTC-Widerstand [] (получить резистор с отрицательным ТКС []) ты можешь узнать либо значение сопротивления, либо рассчитанную по нему температуру. Возвращаемое значение выбирают в выпадающем меню (маленький треугольник).
Запросить
Чтобы узнать, измерил ли резистор с отрицательным ТКС определенное значение, используй блок ist NTC-Widerstand [] [] … (резистор с отрицательным ТКС имеет [] [] ...) В выпадающих меню (маленький треугольник) можно выбрать, что сравнивается и какой оператор сравнения для этого используется. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если температура ниже 20.
Счетчик
Двигатель с энкодером можно использовать как счетчик. При этом подсчитывается число оборотов этого двигателя, причем не только когда вращается он сам как двигатель, но и когда он приводится в движение механическим способом извне.
Блок «Запускать каждый раз»
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Запускать каждый раз»:
Является сокращением следующей конструкции:
В блок Starte jedes mal категории Zähler (счетчик) можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
Вызвать
При помощи hole Zähler Wert (получить значение счетчика) ты можешь получить показания счетчика.
Запросить
Чтобы узнать, насчитал ли счетчик определенное значение, используется блок
В выпадающем меню (маленький треугольник) можно выбрать способ сравнения показания с введенным значением (<, ≤, =, ≠, ≥, >).
Сброс
При выполнении блока setze Zähler zurück (сбросить счетчик) счетчик обнуляется.
I2C
Датчики I2C, описанные в этой главе, соединяются с контроллером TXT 4.0 подходящим плоским кабелем.
Блок «Starte jedes mal» («Запускать каждый раз»)
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:
Является сокращением следующей конструкции:
В блок «Starte jedes mal» категории «I2C» можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
Комбинированный датчик
Комбинированный датчик объединяет в себе три функции: датчик ускорения, гироскоп, датчик-компас.
Датчик ускорения
Вызвать
При помощи hole Kombisensor Beschleunigung in [] (получить от комбинированного датчика ускорение в []) ты получишь значение ускорения в одном из пространственных направлений. Нужное пространственное направление выбирается в выпадающем меню (маленький треугольник). Ускорение приводится в g.
Запросить
Чтобы узнать, было ли измерено определенное ускорение, используй блок ist Kombisensor Beschleunigung in [] [] … (комбинированный датчик определил ускорение в [] [] …). В выпадающих меню (маленький треугольник) можно выбрать способ сравнения ускорения с введенным значением (<, ≤, =, ≠, ≥, >) и пространственное направление, запрос о котором будет отправляться. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если ускорение в направлении x больше 10.
Гироскоп
Вызвать
При помощи hole Kombisensor Rotation in [] (получить от комбинированного датчика вращение в []) ты получишь значение вращения в одном из пространственных направлений. Нужное пространственное направление выбирается в выпадающем меню (маленький треугольник). Вращение приводится в °/с
Запросить
Чтобы узнать, была ли измерена определенная угловая скорость, используй блок ist Kombisensor Rotation in [] [] … (комбинированный датчик определил вращение в [] [] …). В выпадающих меню (маленький треугольник) можно выбрать способ сравнения вращения с введенным значением (<, ≤, =, ≠, ≥, >) и пространственное направление, запрос о котором будет отправляться. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если вращение в направлении x больше 10.
Датчик-компас
Вызвать
При помощи hole Kombisensor Magnetfluss in [] (получить от комбинированного датчика магнитный поток в []) ты получишь значение магнитного потока в одном из пространственных направлений. Нужное пространственное направление выбирается в выпадающем меню (маленький треугольник). Магнитный поток приводится в мкТл.
Запросить
Чтобы узнать, был ли измерен определенный магнитный поток, используй блок ist Kombisensor Magnetfluss in [] [] … (комбинированный датчик определил магнитный поток в [] [] …). В выпадающих меню (маленький треугольник) можно выбрать способ сравнения магнитного потока с введенным значением (<, ≤, =, ≠, ≥, >) и пространственное направление, запрос о котором будет отправляться. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если магнитный поток в направлении x больше 10.
Датчик состояния окружающей среды
Датчик состояния окружающей среды объединяет в себе четыре функции: датчик качества воздуха, датчик влажности воздуха, барометр и термометр.
Датчик качества воздуха
Вызвать
При помощи блока hole Umweltsensor Luftqualität als [] (получить от датчика состояния окружающей среды качество воздуха в виде []) можно измерить качество воздуха. В выпадающем меню (маленький треугольник) можно выбрать способ возврата качества воздуха: в виде числового значения (от 0 до 500) или в виде текста.
Запросить
Чтобы узнать, было ли измерено определенное качество воздуха, используй блок ist Umweltsensor Luftqualität [] ... (датчик состояния окружающей среды определил качество воздуха [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения качества воздуха с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если качество воздуха выше 10.
Барометр
Вызвать
При помощи блока hole Umweltsensor Luftdruck (получить от датчика состояния окружающей среды давление воздуха) можно измерить давление воздуха.
Запросить
Чтобы узнать, было ли измерено определенное давление воздуха, используй блок ist Umweltsensor Luftdruck [] ... (датчик состояния окружающей среды определил давление воздуха [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения давления воздуха с введенным значением (<, ≤, =, ≠, ≥, >) . Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если давление воздуха больше 10.
Термометр
Вызвать
При помощи блока hole Umweltsensor Temperatur (получить от датчика состояния окружающей среды температуру) можно измерить температуру.
Запросить
Чтобы узнать, была ли измерена определенная температура, используй блок ist Umweltsensor Temperatur [] ... (датчик состояния окружающей среды определил температуру [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения температуры с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если температура выше 10.
Датчик влажности воздуха
Вызвать
При помощи блока hole Umweltsensor Luftfeuchtigkeit (получить от датчика состояния окружающей среды влажность воздуха) можно измерить влажность воздуха.
Запросить
Чтобы узнать, была ли измерена определенная влажность воздуха, используй блок ist Umweltsensor Luftfeuchtigkeit [] ... (датчик состояния окружающей среды определил влажность воздуха [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения влажности воздуха с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если влажность воздуха больше 10.
USB
Через порт USB можно подключить камеру со встроенным микроскопом. Здесь камера и микроскоп рассматриваются отдельно. Чтобы использовать функции камеры, сначала надо настроить ее в конфигураторе камеры. Здесь рассказывается, как перейти к конфигуратору камеры.
Камера
Камеру можно использовать, в частности, как детектор движения, детектор цвета, детектор шара и детектор линий.
Детектор движения
Чтобы использовать камеру как детектор движения, в конфигураторе камеры надо перетащить иконку человечка в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать
- область пикселей, в которой осуществляется контроль на наличие движения;
- положение этой области (в точке с указанными здесь координатами будет находиться верхний левый угол области);
- имя детектора движения и
- допустимое отклонение.
Программа детектора движения
Программа ввода выполняется, если ввод данных завершен. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Bewegung erkannt (если распознано движение).
Детектор цвета
Чтобы использовать камеру как детектор цвета, в конфигураторе камеры надо перетащить иконку пипетки в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать
- область пикселей, в которой осуществляется контроль цвета;
- положение этой области (в точке с указанными здесь координатами будет находиться верхний левый угол области);
- имя детектора цвета и
- контраст.
Вызвать
При помощи hole Farbe als [] (получить цвет в виде []) ты получишь распознанный цвет в шестнадцатеричном представлении или в формате RGB. Нужный формат можно выбрать в выпадающем меню (маленький треугольник).
Запросить
Чтобы узнать, распознал ли датчик какой-либо цвет, используй блок ist Farbe detektiert (распознан цвет). Этот блок можно использовать в качестве условия.
Чтобы получить информацию о том, распознал ли датчик определенный цвет, используется блок
При помощи этого блока распознанный цвет можно сравнить с введенным цветом. В выпадающем меню (маленький треугольник) можно выбрать, должен заданный цвет быть равен или не равен цвету, зафиксированному датчиком. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если распознанный цвет красный.
Программа детектора цвета
Программа детектора цвета выполняется, если был распознан цвет. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Farbe erkannt (если распознан цвет).
Детектор шара
Чтобы использовать камеру как детектор шара, в конфигураторе камеры надо перетащить иконку шара в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать
- область пикселей, в которой осуществляется контроль шаров;
- положение этой области (в точке с указанными здесь координатами будет находиться верхний левый угол области);
- имя детектора шара;
- область, в которой находится диаметр шара,
- область оси x;
- цвет шара и
- допустимое отклонение от цвета.
Вызвать
При помощи hole [] des Balls (получить [] шара) ты получишь положение на оси x, положение на оси y, радиус или диаметр мяча.
Запросить
Чтобы узнать, распознал ли датчик шара, используй блок ist Ball detektiert (распознан мяч). Этот блок можно использовать в качестве условия.
Чтобы узнать, распознал ли детектор шар с определенным положением на оси x, положением на оси y, радиусом или диаметром, используй этот блок
При помощи этого блока характеристики распознанного шара можно сравнить с введенным значением. В выпадающих меню (маленький треугольник) можно выбрать, что сравнивается и какой оператор сравнения для этого используется. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если диаметр распознанного шара равен 5.
Программа детектора шара
Программа детектора шара выполняется, если был распознан мяч. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Ball erkannt (если распознан шар).
Детектор линий
Чтобы использовать камеру как детектор линий, в конфигураторе камеры надо перетащить иконку с точками на одной прямой в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать
- область пикселей, в которой осуществляется контроль линий;
- положение этой области (в точке с указанными здесь координатами будет находиться верхний левый угол области);
- имя детектора линий;
- количество линий, которые надо распознать, и
- область, в которой находится ширина линии(-й).
Вызвать
При помощи hole [] der Linie [] (получить [] линии []) ты получишь положение или ширину одной из максимум пяти линий.
При помощи hole Farbe der Linie [] als [] (получить цвет линии [] в качестве []) ты получишь цвет линии в шестнадцатеричном представлении или в формате RGB. Нужный формат можно выбрать в выпадающем меню (маленький треугольник).
Запросить
Чтобы узнать, распознал ли датчик линию, используй блок ist Linie detektiert (распознана линия). Этот блок можно использовать в качестве условия.
Чтобы узнать, распознал ли детектор линию с определенным положением или шириной, используй этот блок
При помощи этого блока характеристики распознанной(-ых) линии(-й) можно сравнить с введенным значением. В выпадающих меню (маленький треугольник) можно выбрать, что сравнивается и какой оператор сравнения для этого используется. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если ширина распознанной линии меньше 2.
Чтобы получить информацию о том, распознал ли датчик линию с определенным цветом, используется блок
При помощи этого блока распознанный цвет линии можно сравнить с введенным цветом. В выпадающем меню (маленький треугольник) можно выбрать, должен заданный цвет быть равен или не равен цвету, зафиксированному датчиком. Этот блок можно использовать в качестве условия.
Программа детектора линии
Программа детектора линии выполняется, если была распознана одна или несколько линий. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Linien erkannt (если распознаны линии).
Микрофон
Встроенный в камеру микрофон можно использовать в качестве шумомера.
Блок «Starte jedes mal» («Запускать каждый раз»)
Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:
Является сокращением следующей конструкции:
В блок «Starte jedes mal» категории «Mikrofon» («Микрофон») можно ввести все условия из этой категории.
Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.
Шумомер
Вызвать
При помощи Mikrofon Lautstärke (микрофон определил шум) ты узнаешь уровень шума в децибелах.
Запросить
Чтобы получить информацию о том, измерил ли шумомер определенный шум, используется блок
При помощи этого блока распознанный цвет шум можно сравнить с введенным шумом. В выпадающем меню (маленький треугольник) можно выбрать, какой оператор сравнения для этого используется. Этот блок можно использовать в качестве условия.
Обработка
Логика
Условные операторы
Условные операторы занимают центральное место в программировании. Они позволяют организовывать ветвления, например:
- Если есть путь, ведущий влево, то сверни влево.
- Если количество баллов = 100, то напечатай «Молодец!».
Блоки «если»
Простейшим условием является блок «если»:
При выполнении этого блока значение переменной x сравнивается с 100. Если значение переменной x превышает 100, выдается фраза «Was für eine große Zahl!» («Какое большое число»)! В противном случае ничего не происходит.
Блоки «если... иначе»
Также можно указать, что в случае невыполнения условия что-либо не должно происходить, как в этом примере:
Как и в случае с предыдущим блоком, если x > 100, выдается фраза «Was für eine große Zahl!». В противном случае выдается фраза «Das ist nicht sehr groß.» («Это не очень большое число.»).
Блок «если» может иметь не более одной ветки «иначе».
Блоки «если-иначе-если»
Ты можешь протестировать несколько условий при помощи одного блока «если», добавив к нему ветку «иначе-если»:
Сначала блок проверяет, больше ли x 100, и выдает «what a great number!», если это так. Если это не так, блок проверяет, равен ли x 42. Если да, он выдает «this is my lucky number!» («Это мое счастливое число!»). В противном случае ничего не происходит.
Блок «если» может иметь любое количество ветвей «иначе-если». Условия анализируются сверху вниз, пока не будет выполнено какое-либо условие или пока не останется ни одного условия.
Блоки «если-иначе-если-иначе»
Блоки «если» могут иметь как ветви «иначе-если», так и ветви «иначе»:
Ветвь «иначе» обеспечивает выполнение действия, даже если не выполняется ни одно из предшествующих условий.
Ветвь «иначе» может стоять после любого количества ветвей «иначе-если», включая ноль; в последнем случае ты получишь обычный блок «если-иначе».
Изменение блока
В панели инструментов отображается только простой блок «если» и блок «если-иначе»:
Чтобы добавить ветви «иначе-если» и «иначе», щелкни по символу «+». Символ «-» удаляет ветви «иначе-если»:
Обрати внимание на то, что формы блоков допускают добавление любого количества подблоков «иначе-если», однако только одного блока «если».
Булевская логика
Булевская логика — это простая математическая система, в которой существуют два значения:
- истина
- ложь
Как правило, логические блоки в программе ROBO Pro Coding предназначены для контроля условий и циклов.
Приведем пример:
Если значение переменной x больше 100, условие является истиной и выдается текст «Was für eine große Zahl!». Если значение переменной x не больше 100, условие является ложью и выдается текст «Das ist nicht sehr groß.». Булевские значения могут наподобие числам, текстам и спискам сохраняться в переменных и передаваться в функции.
Если блок ожидает ввода булевского значения, отсутствие такого ввода интерпретируется как ложь. Небулевские значения нельзя напрямую вставить туда, где ожидаются булевские значения, но можно (хотя и не рекомендуется) сохранить небулевское значение в переменной и потом вставить ее в условие. Мы не советуем использовать этот способ, и в следующих версиях ROBO Pro Coding возможности его использования могут быть изменены.
Значения
Для вызова булевского значения можно использовать один-единственный блок с выпадающим списком, в котором (списке) указано wahr (истина) или falsch (ложь).
Операторы сравнения
Существует шесть операторов сравнения Каждый из них сравнивает две введенные величины (как правило, два числа) и возвращает wahr или falsch в зависимости от того, как сравниваются эти величины.
Шесть операторов сравнения — это равно, не равно, меньше, больше, меньше или равно, больше или равно.
Логические операторы
Блок und (и) возвращает wahr (истина) тогда и только тогда, когда оба его входных значения являются истиной.
Блок oder (или) возвращает wahr, если как минимум одно из двух его входных значений является истиной.
не
Блок nicht (не) превращает введенное булевское значение в противоположное. Например, результатом
будет falsch (ложь).
Если не вводится никакое значение, программа исходит из значения wahr, поэтому следующий блок генерирует значение falsch:
Не рекомендуем оставлять поле для ввода значения пустым.
Тернарный оператор
Тернарный оператор — это блок «если-иначе» в миниатюре. Тернарный оператор принимает три входных значения. Первое из них — проверяемое булевское условие, второе — значение, возвращаемое, если проверка даст результат wahr (истина), третье — значение, возвращаемое, если проверка даст результат falsch (ложь). В следующем примере переменной Farbe (цвет) присваивается значение rot (красный), если переменная x меньше 10, иначе переменной Farbe присваивается значение grün (зеленый).
Тернарный оператор всегда можно заменить блоком «если-иначе». Следующие два примера абсолютно идентичны.
Циклы
Область «Steuerung» («Управление») содержит блоки, которые указывают, надо ли выполнять другие блоки, находящиеся внутри них. Есть два вида блоков управления: блоки «если-иначе» (описываются на отдельной странице) и блоки, управляющие частотой выполнения их содержимого. Второй вид блоков называют циклами, т. к. их содержимое, также именуемое телом цикла или просто телом, повторяется (может повторяться) многократно. Каждое выполнение цикла называется итерацией.
Блоки для создания циклов
dauerhaft wiederholen (повторять всегда)
Блок dauerhaft wiederholen выполняет код, содержащийся в его теле, до завершения выполнения программы.
wiederhole (повторить... раз)
Блок wiederhole выполняет код, содержащийся в его теле, указанное количество раз. Например, следующий блок десять раз выдаст «Hallo!» («Привет!»):
wiederhole-solange (повторять, пока …)
Представь себе игру, в которой игрок бросает игральную кость и складывает все выпавшие очки, пока их сумма меньше 30. Следующие блоки описывают смысл этой игры:
- Переменной с именем insgesamt (итого) присваивается начальное значение 0.
- Цикл начинается с проверки того, меньше ли 30 значение переменной insgesamt. Если да, выполняются блоки в теле цикла.
- Генерируется случайное число в диапазоне от 1 до 6 (имитация броска игральной кости) и сохраняется в переменной с именем gewürfelt (выпало).
- Выдается выпавшее число.
- Значение переменной insgesamt увеличивается на значение переменной gewürfelt.
- По достижении конца цикла выполняется возврат к шагу 2.
После завершения цикла выполняются все последующие блоки (не показаны). В примере выполнение цикла прекращается, после того как будет выдано определенное количество случайных чисел в диапазоне от 1 до 6 и значением переменной insgesamt станет сумма этих чисел, составляющая не менее 30.
wiederhole-bis (повторять, пока не …)
Циклы wiederhole solange повторяют свое тело, пока выполняется какое-либо условие. Циклы wiederhole bis похожи на них с тем отличием, что они выполняют свое тело, пока не будет выполнено определенное условие. Следующие блоки эквивалентны предыдущему примеру, потому что цикл выполняется, пока переменная insgesamt не примет значение, большее или равное 30.
zählen-von-bis (считать от … до)
Цикл zählen-von-bis увеличивает значение переменной, начиная с первого значения и заканчивая вторым значением, с шагом, равным третьему значению, причем тело цикла выполняется единожды для каждого значения переменной. Например, следующая программа выдает числа 1, 3 и 5.
Два следующих цикла, каждый из которых выводит числа 5, 3 и 1, демонстрируют, что первое значение может быть больше второго. Эти циклы работают одинаково вне зависимости от того, положителен или отрицателен инкремент (третье значение).
für jeden (для каждого)
Блок für jeden похож на цикл zählen-von-bis с тем отличием, что вместо переменной цикла в числовой последовательности он последовательно использует значения из какого-либо списка. Следующая программа выдает каждый элемент из списка «alpha», «beta», «gamma»:
Блоки для выхода из цикла
Большинство циклов выполняется до тех пор, пока не будет выполнено условие выхода из цикла (у блоков wiederhole (повторять)) либо пока переменная цикла не примет все значения (у циклов zählen mit (считать с) и für jeden (для каждого)). Два следующих редко используемых, но в некоторых случаях очень полезных блока открывают дополнительные возможности управления выполнением циклов. В следующих примерах показано их использование для цикла für jeden (для каждого), но эти блоки можно использовать для циклов всех видов.
fahre-mit-nächster-Iteration-fort (переход на следующую итерацию)
Блок fahre-mit-nächster-Iteration-fort позволяет пропустить остальные блоки в теле цикла и перейти к следующей итерации цикла.
Следующая программа при первой итерации выдает «alpha». При второй итерации выполняется блок fahre mit nächster Integration fort (переход на следующую итерацию), т. е. вывод «beta» пропускается. При последней итерации программа печатает «gamma».
Schleifenabbruch (выход из цикла)
Блок schleifenabbruch служит для досрочного завершения цикла. Следующая программа при первой итерации выдает «alpha», а при второй итерации выходит из цикла, если переменная цикла принимает значение «beta». Программа не доходит до третьего пункта списка.
Математика
Блоки категории Mathematik (Математика) используются для выполнения вычислений. Результаты вычислений можно использовать, например, в качестве значений переменных. В основе большинства «математических» блоков лежат обычные математические действия, поэтому эти блоки должны быть понятны без разъяснений.
Блоки
Числа
Используй блок Zahl (число), чтобы добавить в свою программу любое число или присвоить какой-либо переменной значение в виде этого числа. Эта программа присваивает переменной Alter (возраст) число 12:
Простые вычисления
Этот блок имеет структуру «Значение-оператор-значение» Доступные операторы: +, -, ÷, × и ^. Оператор выбирают в выпадающем меню. Операторы можно применять как непосредственно к числам, так и к значениям переменных. Пример:
Этот блок выдает результат 144 (12^2).
Специальные вычисления
Этот блок применяет счетную операцию, выбранную в выпадающем меню, к следующему за этим меню числу или к значению следующей за этим меню переменной. Доступные счетные операции:
- корень квадратный;
- сумма;
- натуральный логарифм;
- десятичный логарифм;
- экспоненциальная функция с основанием e (e^1, e^2,...);
- экспоненциальная функция с основанием 10 (10^1, 10^2,...);
- инверсия знака (умножение на -1),
где e — эйлерово число. Этот блок извлекает корень квадратный из 16 и присваивает этот результат переменной i.
Тригонометрические функции
Этот блок работает аналогично описанному выше с тем отличием, что в качестве счетных операций используются тригонометрические функции: синус, косинус, тангенс и их подфункции. Указанное число или значение указанной переменной вставляется в функцию, выбранную в выпадающем меню. Полученный результат можно продолжать обрабатывать в программе. Еще есть блок arctan2 of X: ... Y: ..., который позволяет при помощи двух вещественных чисел (подставляемых вместо X и Y) получить значение функции arctan2 в области 360°.
Часто используемые константы
Этот блок работает аналогично блоку Zahl (число) с тем отличием, что здесь не надо самостоятельно указывать численное значение. Вместо него применяются уже сохраненные часто используемые константы (напр., π). Константу выбирают в выпадающем меню.
Rest einer Division (остаток от деления)
Блок Rest von … (остаток от ...) используется для вывода остатка от деления. Эта программа присваивает переменной Rest (остаток) остаток от деления 3:2, т. е. 1:
Runden (округление)
При помощи блока runde … (округлить ...) указанные десятичные числа или значение указанной переменной можно округлить до целого числа. В выпадающем меню предусмотрены три опции:
- «runde» («округлить») — коммерческое округление (напр., 4,5 округляется до 5)
- «runde auf» («округлить вверх») — округление в большую сторону (напр., 5,1 округляется до 6)
- «runde ab» («округлить вниз») — округление в меньшую сторону (напр., 5,9 округляется до 5).
Анализ списков
При помощи блока ... der Liste (... списка) можно получить следующее:
- при вводе «Summe über die» — сумму всех значений списка;
- при вводе «Minimalwert der» — минимальное значение списка;
- при вводе «Maximalwert der» — максимальное значение списка;
- при вводе «Mittelwert der» — среднее арифметическое всех значений списка;
- при вводе «Median der» — медианное значение списка;
- при вводе «am häufigsten in der» — значение списка, которое встречается чаще всех остальных;
- при вводе «Standardabweichung der» — среднеквадратичное отклонение всех значений списка;
- при вводе «Zufallswert aus der» — случайное значение из списка.
Любую из этих опций можно выбрать в выпадающем меню блока:
Ограничение входных величин
Блок beschränke ... von ... bis … (ограничить ... от … до ...) позволяет ограничить входные величины определенным интервалом. Перед дальнейшей обработкой входной величины программа проверяет, принадлежит ли она заданному интервалу. В зависимости от входной величины программа может поступать одним из трех способов:
- Величина принадлежит интервалу: дальше передается величина в неизменном виде.
- Величина меньше нижнего предела интервала: дальше передается этот нижний предел.
- Величина больше верхнего предела интервала: дальше передается этот верхний предел.
В следующем примере этот блок используется для ограничения значения переменной Geschwindigkeit (скорость) диапазоном частоты вращения, поддерживаемым двигателем:
Генерирование случайных значений
И блок zufällige Zahl von ... bis... (случайное число от … до ...), и блок zufälliger Bruch (случайная дробь) выдают случайное значение. При этом блок zufällige Zahl von ... bis... выдает число из заданного интервала, а блок zufälliger Bruch — значение от 0,0 (включая) до 1,0 (исключая).
Тексты
Примеры текстов:
«Вещь 1»
«12 марта 2010 года»
«» (пустой текст)
Текст может содержать буквы (нижнего и верхнего регистров), числа, знаки препинания, другие символы и пробелы.
Блоки
Создание текста
Следующий блок генерирует текст «Hallo» («Привет») и сохраняет его в переменной с именем Gruß (приветствие):
Блок erstelle Text aus (создать текст из) создает из значения переменной Gruß и нового текста «Welt» («мир») текст «HalloWelt» («Приветмир»). Обрати внимание на то, что два исходных текста не разделены пробелом, т. к. его не было ни в одном из них.
Чтобы увеличить количество текстов, щелкни по символу «+». Чтобы удалить последний текст, щелкни по символу «-».
Изменение текста
Блок an ... anhängen (к … добавить) добавляет указанный текст к указанной переменной. В этом примере он изменяет текст переменной Gruß с «Hallo» на «Hallo, da!» («Эй, привет!»):
Длина текста
Блок Länge von (длина) считает количество символов (букв, чисел и т. д.), содержащихся в тексте. Длина выражения «Wir sind #1!» равна 12, длина пустого текста равна 0.
Проверка на пустой текст
Блок ist leer (пустой) проверяет, пуст ли указанный текст (равна ли его длина 0). В первом примере результат проверки — wahr (истина), во втором примере — falsch (ложь).
Поиск текста
Эти блоки можно использовать, чтобы проверить, встречается ли текст в другом тексте, и если да, то где. Например, здесь программе задается вопрос о месте первой буквы «a» в слове «Hallo», результат — 2:
Здесь задается вопрос о месте последней буквы «a» в слове «Hallo», результат — тоже 2:
Вне зависимости от того, первое или последнее место выбрано, этот блок выдает результат 0, т. к. в слове «Hallo» нет буквы «z».
Извлечение текста
Извлечение отдельного символа
Этот блок выдает «b» — вторую букву выражения «abcde»:
Этот блок выдает «d» — предпоследнюю букву выражения «abcde»:
Этот блок выдает «a» — первую букву выражения «abcde»:
Этот блок выдаст «e» — последнюю букву выражения «abcde»:
Этот блок с одинаковой вероятностью выдает любую из пяти букв выражения «abcde»:
Ни один из этих блоков не изменяет текст, из которого извлекается символ.
Извлечение области текста
При помощи блока im Text ... liefer Zeichenkette (из текста … выдай цепочку символов) можно извлечь область текста, которая начинается на:
- букву №, либо
- букву № с конца, либо
- первую букву
и заканчивается на:
- букву №, либо
- букву № с конца, либо
- последнюю букву.
В следующем примере извлекается цепочка «abc»:
Переключение между верхним и нижним регистрами
Этот блок генерирует версию введенного текста, которая написана
- ПРОПИСНЫМИ БУКВАМИ (все буквы верхнего регистра), либо
- строчными буквами (все буквы нижнего регистра), либо
- По Правилу «Слова Начинаются С Прописной Буквы» (первые буквы слов прописные, остальные строчные).
Результатом выполнения следующего блока будет «HALLO»:
На небуквенные знаки это не распространяется. Обрати внимание на то, что этот блок не будет оказывать эффекта в языках без регистров, например в китайском.
Удаление пробелов
Следующий блок в зависимости от того, что выбрано в выпадающем меню (маленький треугольник), удаляет пробелы:
- в начале текста;
- в конце текста;
- с обеих сторон текста.
Результатом выполнения следующего блока будет «Hi du»:
Пробелы внутри текста не удалились.
Вывести текст
Блок gib aus (вывести) выдает входную величину в окне консоли:
При этом текст никогда не отправляется на принтер, как можно было бы подумать, исходя из названия.
Вывести текст с форматированием
Блок formatiere text (форматировать текст) форматирует выводимый текст, содержащий переменные. При этом все подстановочные знаки {} в тексте заменяются на содержимое переменной, приведенной после текста. В фигурных скобках можно указать форматирование. Например, форматирование {:.1f} выводит только первый знак после запятой в переменной t.
Списки
Создание списка
Создать список из
При помощи блока erstelle Liste mit (создать список из) можно указать начальные значения нового списка. В этом примере создается список слов и сохраняется в переменной с именем Buchstaben (буквы):
Мы назовем этот список [«alpha», «beta», «gamma»].
Ниже показано создание списка чисел:
Так создается список цветов:
Хотя этот вариант и встречается не так часто, можно создать список значений разных типов:
Изменение количества входов
Чтобы изменить количество входов, щелкни по значку шестеренки или коснись его. Открывается новое окно. Чтобы добавить новый вход, перетащи подблоки элементов из левой стороны окна в блок списка на правой стороне:
В этом примере новый элемент добавлен внизу, но его можно добавить в любом месте. Ненужные подблоки элементов можно перетащить из блока списка влево.
Создание списка с определенным количеством экземпляров элемента
При помощи блока erstelle Liste mit Element (создать список с … элементами(-ом)) ты можешь создать список, содержащий указанное количество экземпляров элемента. Например, следующие блоки присваивают переменной Wörter (слова) значение в виде списка [«sehr», «sehr», «sehr»] ([«очень», «очень», «очень»]).
Проверка длины списка
ist leer (пустой)
Значение блока ist leer (пустой) является истиной, если он содержит пустой список, и ложью, если он содержит что-либо другое. Будет ли следующее выражение истиной? Следующий блок будет иметь значение ложь, т. к. переменная «Цвета» не пустая: она содержит три элемента.
Обрати внимание на схожесть этого блока с блоком ist leer (пустой) для текста.
Длина
Значением блока Länge von (длина) является количество элементов списка, подставленного в блок. Например, значением следующего блока было бы 3, т. к. список Farbe содержит три элемента:
Обрати внимание на то, что блок Länge von (длина) считает общее количество элементов в списке, а не количество разных элементов в списке. Например, следующий блок имеет значение 3, хотя список Wörter состоит из трех одинаковых слов:
Обрати внимание на схожесть этого блока с блоком Länge von (длина) для текста.
Поиск элементов в списке
Эти блоки находят положение элемента в списке. В следующем примере блок, находящий положение первого экземпляра элемента, имеет значение 1, т. к. первое слово «sehr» стоит в начале списка слов ([«sehr», «sehr», «sehr»]).
Результатом выполнения следующего блока, находящего положение последнего экземпляра элемента, будет 3, т. к. последнее слово «sehr» в списке Wörter стоит на 3 месте.
Если элемент не встречается в списке, результатом выполнения блока будет 0, как в следующем примере:
Эти блоки работают аналогично блокам для поиска букв в тексте.
Вызов элементов из списка
Вызов одного элемента
Вспомни определение списка Farben (цвета):
Следующий блок содержит синий цвет, т. к. он является вторым элементом в списке (если считать слева):
Этот блок содержит зеленый цвет, т. к. он является вторым элементом (если считать справа):
Этот блок содержит первый элемент — красный цвет:
Этот блок содержит последний элемент — желтый цвет:
Этот блок с одинаковой вероятностью выбирает случайный элемент из списка: красный, синий, зеленый или желтый цвет.
Вызов и удаление элемента
При помощи выпадающего меню блок aus Liste ... abrufen (вызвать … из списка) превращается в блок aus Liste ... abrufen und entfernen (вызвать … из списка и удалить), который выдает такое же значение, но изменяет список:
В этом примере переменной erster Buchstabe (первая буква) присваивается значение «alpha», остальные буквы ([«beta», «gamma»]) остаются в списке.
Удаление элемента списка
Если в выпадающем меню выбрать entfernen (удалить), выступ на блоке слева исчезает:
Первый элемент из списка Buchstaben удаляется.
Вызвать подсписок
Блок aus Liste … Subliste abrufen (вызвать из списка... подсписок) похож на блок aus Liste ... abrufen (вызвать … из списка) с тем отличием, что он извлекает подсписок, а не один элемент. Существует несколько возможностей указать начало и конец подсписка:
В этом примере создается новый список erster Buchstabe (первая буква). Этот новый список содержит два элемента: [«alpha», «beta»].
Обрати внимание на то, что этот список не изменяет исходный список.
Добавление элементов в список
Замена элементов списка
Блок in Liste ... ersetze (заменить … в списке) заменяет элемент в определенном месте списка на другой элемент.
Значение пунктов выпадающего меню см. в предыдущем разделе.
В следующем примере выполняются два действия:
- Создается список Wörter (слова) с 3 элементами: [«sehr», «sehr», «sehr»] ([«очень», «очень», «очень»]).
- Третий элемент списка заменяется на «gut» («хорошо»). Новым значением переменной Wörter является [«sehr», «sehr», «gut»] ([«очень», «очень», «хорошо»]).
Вставка элементов в определенное место списка
Блок in Liste ... einfügen bei (вставить в список … на место) вызывается через выпадающее меню блока заменить ... в списке:
Этот блок вставляет новый элемент в указанное место списка, а именно перед элементом, ранее находившимся на этом месте. В следующем примере (основанном на предыдущем примере) выполняются три действия:
- Создается список Wörter (слова) с 3 элементами: [«sehr», «sehr», «sehr»] ([«очень», «очень», «очень»]).
- Третий элемент списка заменяется на «gut» («хорошо»). Таким образом, новым значением переменной Wörter является [«sehr», «sehr», «gut»] ([«очень», «очень», «хорошо»]).
- В начало списка вставляется слово «Sei» («будь»). Таким образом, окончательным значением переменной Wörter будет [«Sei», «sehr», «sehr», «gut»] ([«Будь», «очень», «очень», «хорошим»]).
Разделение цепочек символов и объединение в списки
Создание списка из текста
Блок erstelle Liste aus Text (создать список из текста) разбивает на части указанный текст при помощи ограничителя:
В вышеприведенном примере возвращается новый список, содержащий три фрагмента текста: «311», «555» и «2368».
Создание текста из списка
Блок erstelle Text aus Liste (создать текст из списка) создает из списка единый текст при помощи разделителя:
В вышеприведенном примере возвращается новый текст со значением «311-555-2368».
Родственные блоки
Печать списка
Блок drucken (напечатать) в категории Text (Текст) может выдавать списки. В результате выполнения следующей программы на консоль выводятся показанные данные:
Выполнение какого-либо действия для каждого элемента списка
Блок für-jeden (для каждого) в категории «Управление» выполняет ту или иную операцию для каждого элемента списка. Например, этот блок отдельно выводит каждый элемент списка:
При этом из исходного списка элементы не удаляются.
См. также примеры блоков для выхода из цикла.
Пользование
Категория «Benutzung» («Пользование») программы ROBO Pro Coding содержит следующие блоки:
- Выбор цвета
- Ожидание
- Код на Python
- Запустить
- Выполнение функции
Выбор цвета
Этот блок служит входной величиной, если задается вопрос о цвете (напр., при регулировке цветового баланса камерой). При щелчке по цвету или касании цвета можно выбрать один из 70 цветов палитры.
Ожидание
Ожидание до истечения времени
Блок warte [] … (ждать [] ...) приостанавливает выполнение программы на указанное время ожидания. При этом в выпадающем меню (маленький треугольник) можно выбрать единицу измерения времени, а в поле ввода за ним — нужную длину перерыва.
Ожидание с условием
Блок warte bis (ждать, пока не) привязывает перерыв не ко времени, а к выполнению какого-либо условия (напр., нажатию какой-либо клавиши). Условие вставляется после блока warte bis.
Код на Python
Если ты хочешь интегрировать в ROBO Pro Coding имеющийся код на языке Python, его можно вставить в блок Python Code (код на Python). Тогда программа выполнит все, что указано в блоке на языке Python.
Запустить
Блок starte wenn (запустить, если) тоже привязан к выполнению условия. Программа, указанная в теле блока, запускается только при выполнении этого условия.
Выполнение функции
При помощи блока führe Funktion ... in einem Thread aus (выполнить функцию ... в отдельном потоке) выбранная функция выполняется в отдельном потоке. В некоторых случаях благодаря этому программа может продолжать реагировать на ввод данных и выполняться быстрее.
Переменные
Мы используем понятие переменной так же, как оно используется в математике и других языках программирования, то есть понимаем под переменной именованное значение, которое может изменяться. Существуют разные способы создания переменных.
- Некоторые блоки, например считать с и для каждого, используют переменную и определяют ее значения. Традиционно в информатике для обозначения таких переменных используется понятие «переменная цикла».
- Пользовательские функции (также именуемые «процедурами») могут задавать вводимые данные, вследствие чего генерируются переменные, которые можно использовать только в данной функции. Такие переменные традиционно называют «параметрами» или «аргументами».
- Пользователи могут в любой момент изменять переменные при помощи блока setze (присвоить). Их традиционно называют «глобальными переменными». Они используются во всем коде ROBO Pro Coding.
Выпадающее меню
При щелчке по символу выпадающего меню (маленький треугольник) переменной появляется следующее меню:
Это меню содержит следующие опции:
- отображение имен всех существующих переменных, заданных в этой программе.
- «Variable umbenennen...» («Переименовать переменную...»), т. е. изменение имени этой переменной во всей программе (при выборе этой опции программа спросит тебя о новом имени)
- «Variable löschen...» («Удалить переменную ...»), т. е. удаление всех блоков, ссылающихся на эту переменную, во всей программе.
Блоки
Задать
Блок присвоить присваивает переменной какое-либо значение и создает эту переменную, если она еще не существует. Например, здесь переменной Alter (возраст) присваивается значение 12:
Вызвать
Блок rufe ab (вызвать) выдает значение, сохраненное в переменной, не изменяя его:
Можно (хотя это и плохая идея) написать программу, в которой перед блоком вызвать не будет соответствующего блока установить.
Изменить
Блок ändere (изменить) прибавляет к переменной число.
Блок изменить является сокращением следующей конструкции:
Пример
Посмотри на следующий пример кода:
Первый ряд блоков создает переменную под названием Alter (возраст) и присваивает ей начальное значение 12. Второй ряд блоков вызывает значение 12, прибавляет к нему 1 и сохраняет полученную сумму (13) в переменной. В последней строке выдается сообщение: «Herzlichen Glückwunsch! Du bist jetzt 13» (Поздравляю! Тебе исполнилось 13 лет»).
Функции
Функции делают возможным повторное использование частей кода, структурируя тем самым код в целом. При заполнении блока функции в меню функций появляется новый блок с таким же именем, что и заполняемый блок функции. Сейчас в основную программу можно просто вставить блок с именем функции. При прогоне программы этот блок перенаправляет к коду в одноименной функции и выполняет его.
Простая функция
Блок простой функции позволяет создать функцию с именем, введенным в текстовое поле. Функция может содержать любое количество переменных, добавляемых щелчком по значку шестеренки. Эта функция Altern (старение) прибавляет 1 к переменной Alter (возраст):
Функцию можно использовать в основной программе:
Функция с возвращаемым значением
Этот блок позволяет создать функцию с возвращаемым значением. Это возвращаемое значение можно использовать в основной программе. Приведем пример: