ROBO Pro Coding (RU)

Общая информация о пользовании продуктом

Общая информация о пользовании продуктом

Общая информация о пользовании продуктом

ROBO Pro Coding — это среда разработки для программирования нового контроллера TXT 4.0 и, следовательно, для программирования моделей fischertechnik. Выпущены версии ROBO Pro Coding для Windows, macOS, Linux, iOS и Android. Скачать это ПО можно из следующих источников:

Google_Play_Badge_DE_230x67.png    App_Store_Badge_DE_230x67.png    Microsoft_Badge_De_230x67.png   Linux_Badge.png

Russisch-AllgemeineBenutzung-Bild1.PNG


image-1623839044249.22.21.png  

Показанный код можно использовать для этой модели (слева). Веб-интерфейс ПО ROBO Pro Coding имеет следующую структуру (цифры соответствуют областям изображения, на которых они указаны):

  1. Здесь показаны блоки кода, написанные на языке Python
  2. В это поле перетаскиваются блоки для программирования
  3. В консоли показан ход выполнения программы 
    • Точки останова используются для отладки программ. Они определяют участки кода, на которых выполнение программы приостанавливается. Точки останова задаются через редактор и состоят из имени файла и номера строки.
    • В области «Ausdruck» («Выражение») можно просмотреть содержимое переменных.
    • В области «Aufrufstapel» («Стек вызовов») показаны вложенные вызовы. Стек вызовов полезен, в частности, при выполнении функций.
  4. Здесь ты найдешь все блоки для программирования, отсортированные по категориям Aktoren (Исполнительные элементы)Sensoren (Датчики) и Verarbeitung (Обработка)
  5. Эта строка разъясняется отдельно в разделе «Заглавная строка»
  6. Здесь можно выбрать уровень обучения, подходящий данному пользователю. В зависимости от уровня могут отображаться, например, только самые важные блоки.

 

Заглавная строка

image-1623793979375.19.18.png

Заглавная строка содержит (слева направо) элементы управления для запуска программы, остановки программы, запуска отладчика, вызова тестирования интерфейса, загрузки текущей программы и соединения с контроллером.

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

Чтобы запустить свою программу из среды ROBO Pro Coding, щелкни по этой иконке.

Остановка программ 

Чтобы остановить свою программу до того, как она остановится сама, коснись этой иконки.

Отладчик

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

Тестирование интерфейса

Щелчком по этой иконке с тремя регуляторами открывается это окно:

Russisch-AllgemeineBenutzung-Bild4.PNG

Здесь показаны все подключенные устройства. При помощи ползунков можно проверить, работают ли исполнительные элементы. Для датчиков указывается измеренное значение (например, здесь напротив клавиши «Mini-Taster» показана цифра «1», потому что эта кнопка нажата). В выпадающем меню (маленький треугольник) можно выбрать подключенные элементы.

Загрузка программ

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

  1. Laden (Загрузка): загрузи программу, чтобы запустить ее с начального экрана
  2. Auto load (Автозагрузка): при следующем запуске контроллера программа загружается автоматически
  3. Auto start (Автозапуск): при следующем запуске контроллера программа автоматически загружается и запускается
  4. Delete project (Удалить проект): программа удаляется из контроллера
Соединение с контроллером 

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

Конфигурация контроллера

Чтобы использовать разные компоненты — датчики и исполнительные элементы — в программе, их надо подключить к контроллеру, причем не только физически, но и в программе. Конфигурация контроллера всегда открыта (автоматически). Вкладка для перехода к ней (Controllerkonfiguration) находится вверху справа от вкладки основной программы (Hauptprogramm). Щелкни эту вкладку.

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

Russisch-Allgemeine Benutzung-Bild5.PNG

Сохранение программ

 Чтобы сохранить программу, щелкни по трем линиям вверху слева на веб-сайте ROBO Pro Coding. Коснись опции «Exportieren» («Экспортировать»). Сейчас ты можешь выбрать место сохранения программы: на твоем устройстве или в GitLab.

Локальное сохранение: после ввода имени твоей программы просто щелкни по «Exportieren» — и файл программы сохранится на твоем устройстве.

GitLab: после ввода имени твоей программы и выполнения указанных шагов, необходимых для ввода личного токена доступа, просто щелкни по «Exportieren» — и файл программы сохранится в твоем аккаунте на GitLab.

Исполнительные элементы

Исполнительные элементы

Выходы

Блок «Starte jedes mal» («Запускать каждый раз»)

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:

Russisch-Ausgänge-Bild1.PNG

Является сокращением следующей конструкции:

Russisch-Ausgänge-Bild2.PNG

В блок «Starte jedes mal» категории «Ausgänge» («Выходы») можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

СИДы

image-1623745844016.42.50.png

Присвоить

При помощи блоков setze LED … (присвоить СИД ...) и setze LED Helligkeit … (присвоить СИД яркость ...) можно включать и выключать СИД и выбирать определенное значение его яркости (от 0 до 512). 

Вызвать

При помощи блока hole LED Helligkeit (получить яркость СИД) можно вызвать яркость СИД, чтобы обработать ее как значение.

Запросить

При помощи блоков ist LED … (СИД ...)  и ist LED Helligkeit … (СИД имеет яркость ...) активность и яркость нужного СИД можно использовать как условие. В примере мы установили яркость СИД на 512, если ее значение еще не равно этому.

Russisch-Ausgänge-Bild4.PNG

Двигатели 

Иконка на блоках двигателей обозначает все двигатели, которые не являются двигателями с энкодером или серводвигателями.

Присвоить

При помощи блока setze Motorgeschwindigkeit auf [] … (присвоить скорости двигателя значение [] ...) можно задать определенное значение скорости двигателя (от 0 до 512). 

Вызвать

При помощи блока hole Motorgeschwindigkeit (получить скорость двигателя) можно вызвать скорость двигателя, чтобы обработать ее как значение.

Запросить

При помощи блоков läuft Motor (двигатель работает) и ist Motorgeschwindigkeit … (скорость двигателя ...) активность и скорость двигателя можно использовать как условие.

Остановить

При помощи блока stoppe Motor … (остановить двигатель ...) можно остановить нужный двигатель.

Компрессор

image-1623746227574.40.52.png

Присвоить

При помощи блока setze Kompressor [] (присвоить компрессору []) можно включать и выключать компрессор. 

Запросить

При помощи блока ist Kompressor [] (компрессор []) активность компрессора можно использовать как условие. 

Электромагнитный клапан

image-1623746259058.41.19.png

Присвоить

При помощи блока setze Magnetventil [] (присвоить электромагнитному клапану []) можно включать и выключать электромагнитный клапан. Здесь «ein» («вкл.») означает, что клапан открыт, а «aus» («выкл.») — что клапан закрыт.

Запросить

При помощи блока ist Magnetventil [] (электромагнитный клапан []) активность электромагнитного клапана можно использовать как условие.

Исполнительные элементы

Звук

В контроллер TXT 4.0 встроен громкоговоритель, поэтому с его помощью можно воспроизводить звуки.

Блок «Starte jedes mal» («Запускать каждый раз»)

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:

Russisch-Sound-Bild1.PNG

Является сокращением следующей конструкции:

Russisch-Sound-Bild2.PNG

В блок «Starte jedes mal» категории «Sound» («Звук») можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

Воспроизвести

Предустановленные аудиофайлы

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

Russisch-Sound-Bild3.PNG

Собственные аудиофайлы

Если ты хочешь воспроизводить свой звук, используй блок

Russisch-Sound-Bild4.PNG

Чтобы встроить в блок собственный звук, надо:

  1. Установить соединение с контроллером
  2. Ввести IP-адрес контроллера в браузер (выбирай IP, который ты использовал(-а) для соединения с контроллером)
  3. Ввести на загруженной странице «USER: ft, PASSWORD: fischertechnik»
  4. Открыть папку sounds и, щелкнув в ней по знаку «плюс», загрузить нужный аудиофайл в контроллер (важно: аудиофайл должен иметь формат WAV)
  5. В блоке ROBO Pro Coding прописать путь «./dateiname.wav»

Свой звук тоже можно зациклить.

Запросить

Чтобы узнать, проигрывается ли аудиофайл, воспользуйся блоком gibt Ton wieder (воспроизводит звук). Его можно использовать в качестве условия в программе.

Остановить

Чтобы остановить воспроизведение аудио, просто используй в программе блок stoppe Tonwiedergabe (остановить воспроизведение звука).

 

Исполнительные элементы

Дисплей

При помощи блоков категории «Display» («Дисплей») можно настроить и подготовить к использованию дисплей контроллера TXT 4.0. Этот процесс состоит из двух этапов:

  1. Конфигурирование, то есть:
    • Открыть новый файл категории «Display»; щелкнув по иконке страницы с плюсом вверху слева,
    • перетащить нужные элементы в область, разграфленную на клетки (она представляет собой настраиваемую часть дисплея);
    • при необходимости изменить характеристики. 
  2. Программирование, то есть:
    • В основной программе при помощи блоков категории «Display» запрограммировать результат взаимодействия с дисплеем.

Блоки

Запрос события

Блок Ereignis [] (Событие []) вызывает возвращаемое значение элемента. Этот блок можно использовать только в событийных программах. В событийных программах этот блок автоматически ссылается на событие, в программе которого он используется. Подходящий тип возвращаемого значения можно выбрать в выпадающем меню (маленький треугольник):

Bild1.PNG

Поле метки

При помощи элемента «Поле метки» на дисплее можно разместить текст. Символ этого элемента в конфигураторе дисплея — ярлык. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

При помощи блока setze Beschriftungsfeld Text … (присвоить полю метки текст ...) можно менять показанный текст в ходе выполнения программы.

Ввод данных

Элемент «Ввод» позволяет пользователю вводить текст через контроллер. Символ этого элемента в конфигураторе дисплея — буква «Т». Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

При помощи блока setze Eingabefeld Text … (присвоить полю ввода текст ...) можно менять показанный текст в ходе выполнения программы.

 

Программа ввода

Программа ввода выполняется, когда ввод данных завершен. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Eingabe abgeschlossen (если ввод данных завершен). В программе ввода для блока Ereignis [] (Событие []) выбирают тип «text». В этом примере переменной Name (имя) присваивается введенный текст, и затем она используется в основной программе для вывода введенного текста:

Bild2.PNG

Измерительный инструмент 

Функция «Измерительный инструмент» может отображать значения (кроме значений меньше 1). Символ измерительного инструмента в конфигураторе дисплея — линейка. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

При помощи блока setze Messinstrument auf Wert … (присвоить измерительному инструменту значение ...) измерительному инструменту присваивается введенное значение. Это значение должно принадлежать предварительно заданному диапазону значений. Если это значение не принадлежит предварительно заданному диапазону значений, то отображается либо верхний, либо нижний предел этого диапазона значений в зависимости от того, какое значение указано: слишком большое или слишком маленькое.

Отображение статуса

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

 

При помощи блока setze Statusanzeige aktiv [] (сделать индикатор статуса активным []) индикатор статуса можно активировать и деактивировать. В выпадающем меню (маленький треугольник) можно выбрать состояние индикатора статуса: активен или неактивен.

Ползунок

Положение ползунка отражает то или иное значение. Пользователь может изменить положение ползунка через сенсорный экран. Вызвать значение можно через блок Ereignis [], как только ползунок остановится. Вызванное значение имеет вид десятичного числа. Если ты хочешь, чтобы значение, которое отражает ползунок, имело вид целого числа, надо вставить блок runde (округлить). Символ ползунка в конфигураторе дисплея — линия с кружком. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

При помощи блока Setze Schieberegler Wert … (присвоить ползунку значение ...) можно переместить ползунок на другое значение. 

При помощи блока setze Schieberegler aktiviert [] (активировать ползунок []) можно менять активность в выпадающем меню (маленький треугольник).

Программа ползунка

Программа ползунка выполняется после передвижения ползунка. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ползунка выполняется в блоке wenn Schieberegler bewegt (если ползунок перемещен). В программе ввода для блока Ereignis [] (Событие []) выбирают тип «value». В этом примере скорость двигателя регулируется ползунком. Значение, соответствующее положению ползунка, должно округляться, т. к. частота вращения двигателя может быть выражена только целым числом:

Bild3.PNG

 

Экранная кнопка

Экранная кнопка — это поле с надписью, на которое можно нажимать. При нажатии на экранную кнопку сразу после ее отпускания выполняется программа экранной кнопки. Символ экранной кнопки в конфигураторе дисплея — квадрат с буквами «ОК». Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

При помощи блока setze Schaltfläche aktiviert [] (активировать экранную кнопку []) можно менять активность в выпадающем меню (маленький треугольник).

Программа экранной кнопки

Программа экранной кнопки выполняется после отпускания экранной кнопки. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа экранной кнопки выполняется в блоке wenn Schaltfläche angeklickt (если нажата экранная кнопка). В программе экранной кнопки нельзя использовать блок Ereignis [], т. к. у экранной кнопки нет возвращаемого значения. В этом примере СИД активируется нажатием экранной кнопки.

Bild4.PNG

 

Переключатель

Переключатель может принимать два положения и всегда находится точно в одном из этих двух положений. В зависимости от положения он возвращает значение wahr (истина) или falsch (ложь). Символ переключателя в конфигураторе дисплея — овал с точкой. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

Блок

Bild5.PNG

выполняет две функции. Можно присвоить значение wahr (истина) или falsch (ложь) либо активности (выбрать «enabled» («включено») в выпадающем меню), либо состоянию (выбрать «checked» («отмечено») в выпадающем меню). 

Программа переключателя

Программа переключателя выполняется каждый раз при изменении положения переключателя. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа переключателя выполняется в блоке wenn Schalter umgeschaltet (если переключатель переключен). В программе переключателя блок Ereignis [] устанавливается на «checked» и возвращает значение wahr (истина) или falsch (ложь). Программа в этом примере включает СИД, если переключатель переключается, иначе СИД выключается:

Bild6.PNG

 

Флажок

Флажок может принимать два состояния и всегда находится точно в одном из этих двух состояний. В зависимости от состояния он возвращает значение wahr (истина) или falsch (ложь). Символ флажка — квадратик с галочкой. Если перетащить этот символ в область, разграфленную на клетки, справа откроется окно. Здесь во вкладке «Inspektor» («Меню свойств») можно задать

 

Следующий блок выполняет две функции. В выпадающем меню (маленький треугольник) можно выбрать функцию, которую ты хочешь использовать. Можно присвоить значение wahr (истина) или falsch (ложь) либо активности (выбрать «enabled» («включено») в выпадающем меню), либо состоянию (выбрать «checked» («отмечено») в выпадающем меню).

Bild7.PNG

Программа флажка

Программа флажка выполняется каждый раз при щелчке по флажку. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Kontrollkästchen umgeschaltet (если флажок переключен). В программе переключателя блок Ereignis [] устанавливается на «checked» и возвращает значение wahr (истина) или falsch (ложь). Программа в этом примере включает СИД, если флажок отмечен, иначе СИД выключается.

Bild8.PNG

Исполнительные элементы

Двигатель

Блок «Starte jedes mal» («Запускать каждый раз»)

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:

Bild1.PNG

Является сокращением следующей конструкции:

Bild2.PNG

В блок «Starte jedes mal» категории «Motor» («Двигатель») можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

Двигатель 

Иконка на блоках двигателей обозначает все двигатели, которые не являются двигателями с энкодером или серводвигателями.

Присвоить

При помощи блока setze Motorgeschwindigkeit auf [] … (присвоить скорости двигателя значение [] ...) можно задать определенное значение скорости двигателя (от 0 до 512). В выпадающем меню (маленький треугольник) можно выбрать направление вращения.

Вызвать

При помощи блока hole Motorgeschwindigkeit (получить скорость двигателя) можно вызвать скорость двигателя, чтобы обработать ее как значение.

Запросить

При помощи блоков läuft Motor (двигатель работает) и ist Motorgeschwindigkeit … (скорость двигателя ...) активность и скорость двигателя можно использовать как условие.

Остановить

При помощи блока stoppe Motor [] (остановить двигатель []) можно остановить нужный двигатель. При этом в блоке stoppe Motor [] предусмотрена возможность выбора одной из двух опций: немедленный останов или останов выбегом. Нужную опцию выбирают в выпадающем меню (маленький треугольник):                                                                    

        

Bild3.PNG                                                                              

Серводвигатель

image-1623746331741.42.25.png

Присвоить

При помощи блока setze Position auf … (присвоить положению значение ...) можно выбрать определенное положение серводвигателя (от 0 до 512). 0 и 512 — значения максимального отклонения справа и слева. Соответственно, если указать 256, то серводвигатель займет центральное положение. 

Вызвать

При помощи блока rufe Position ab (вызвать положение) можно вызвать положение серводвигателя, чтобы обработать его как значение.

Двигатель с энкодером

image-1623746341213.40.14.png

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

Присвоить

При помощи блока 

Bild6.PNG

 

можно выбрать определенное значение скорости двигателя (от 0 до 512). В выпадающем меню (маленький треугольник) можно выбрать направление вращения. Также можно ввести число шагов, которые должен пройти двигатель. В этом примере двигатель проходит 100 шагов, т. е. одну целую и одну третью оборота. Как видно из примера, этот блок содержит плюсик, при помощи которого можно синхронно управлять несколькими двигателями. Можно синхронизировать между собой либо двигатели главного устройства, либо двигатели добавочного устройства; перекрестная синхронизация, а именно между двигателями главного устройства с одной стороны и двигателями добавочного устройства с другой стороны, невозможна.

Указание: быстро следующие друг за другом вызовы функции синхронизации, например при выполнении цикла (см. пример), могут повлиять на синхронность или вообще воспрепятствовать ей.

Остановить

При помощи блока stoppe Motor … (остановить двигатель ...) двигатель останавливается. Если надо остановить несколько двигателей одновременно, щелчком по плюсику слева в блоке можно добавить другие двигатели (не более трех).

Bild7.PNG

Запросить

Блок hat Position erreicht (достиг положения) служит для того, чтобы использовать достижение положения как условие. Под положением здесь имеется в виду конечное положение двигателя с энкодером после прохождения всей длины шага.

Датчики

Датчики

Ввод данных

Блок «Starte jedes mal» («Запускать каждый раз»)

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:

Bild1.PNG

Является сокращением следующей конструкции:

Bild2.PNG

 

В блок «Starte jedes mal» категории «Eingaben» («Ввод данных») можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

Клавиша

image-1623679995498.03.59.png

Клавиша — это цифровой датчик, различающий состояния «Ток течет» и «Ток не течет». При этом то, течет ток или нет, зависит как от кабельной разводки, так и от того, нажата ли клавиша. Итак, клавишу можно использовать двумя разными способами:

image-1623592536466.48.54.png

В качестве «нормально разомкнутого контакта»:
подсоединены контакты 1 и 3. 

Клавиша нажата: ток течет.                                                                                                             Клавиша не нажата: ток не течет.

В качестве «нормально замкнутого контакта»:

подсоединены контакты 1 и 2.                                                                                                                                                

Клавиша нажата: ток не течет.                                                                                                   Клавиша не нажата: ток течет.

Вызвать

При помощи hole Mini-Taster Status (получить статус мини-клавиши) можно узнать, течет ли ток через клавишу. Если ток течет, возвращается значение 1, если нет — 0

Запросить

Чтобы узнать, находится ли клавиша в определенном состоянии, используй блок ist Taster … (клавиша является ...). В выпадающем меню (маленький треугольник) можно выбрать состояние, запрос о котором отправляется. Этот блок можно использовать в качестве условия.

Ультразвуковой датчик

image-1623680004750.04.35.png

Ультразвуковой датчик используется для измерения расстояний.

Вызвать

При помощи hole Ultraschallsensor Abstand (получить расстояние ультразвукового датчика) можно узнать, насколько датчик удален от ближайшего предмета. Расстояние возвращается в см.

Запросить

Чтобы узнать, находится ли датчик на определенном расстоянии от ближайшего предмета, используй блок ist Ultraschallsensor Abstand … (ультразвуковой датчик находится на расстоянии …). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения измеренного расстояния с введенным значением (<, ≤, =, ≠, ≥, >) . Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если измеренное расстояние меньше 2 см.

Bild6.PNG

 

Датчик цвета

image-1623680014794.04.56.png

Датчик цвета излучает красный свет и измеряет количество отраженного света. В зависимости от интенсивности отражения датчик цвета возвращает значения в диапазоне от 0 до 2000. Он хорошо подходит для распознавания предварительно откалиброванных цветов. 

Вызвать

При помощи hole Farbsensor Wert (получить значение датчика цвета) можно узнать, насколько интенсивно та или иная поверхность отражает свет.

Запросить

Чтобы узнать, есть ли перед датчиком определенный цвет, используй блок ist Farbsensor Wert … (датчик цвета имеет значение …). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения измеренного значения цвета с введенным значением (<, ≤, =, ≠, ≥, >) . Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если измеренное значение цвета меньше 1000.

Bild8.PNG

 

ИК-датчик следов

image-1623680023473.04.45.png

Инфракрасный датчик следов — это цифровой датчик, распознающий черный след на белом фоне и работающий на расстоянии 5–30 мм от фона. 

Вызвать

Если hole IR-Spursensor Status (получить статус ИК-датчика следов) вернет тебе 0, это означает, что датчик не обнаружил след. Если датчик обнаружил след, возвращенным значением будет 1.

Запросить

Чтобы узнать, обнаружил ли ИК-датчик следов след, надо сравнить текущий статус следа с 0 или 1. Для этого подходит блок ist IR-Spursensor Status [] … (ИК-датчик следов имеет статус [] ...) . В выпадающем меню (маленький треугольник) можно выбрать способ сравнения статуса следа с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если статус следа равен 0.

Bild10.PNG

Фототранзистор

image-1623680417014.17.52.png

Фототранзистор — это цифровой датчик, различающий свет и темноту. 

Вызвать

Если hole Fototransistor Status (получить статус фототранзистора) вернет тебе 0, это означает, что датчик не обнаружил свет. Если датчик обнаружил достаточно света, возвращенным значением будет 1.

Запросить

Чтобы узнать, что обнаружил фототранзистор (свет или темноту), надо сравнить статус освещенности с 0 или 1. Для этого подходит блок ist Fototransistor Status [] (Фототранзистор имеет статус []). В выпадающем меню (маленький треугольник) можно выбрать состояние, запрос о котором будет отправляться, а именно светлое или темное. 

image-1623844705358.57.11.pngФототранзистор можно использовать в фоторелейной завесе, как в этой модели.

Фоторезистор

image-1623680434602.04.18.png

Сопротивление фоторезистора уменьшается по мере роста освещенности. Таким образом, значение, выдаваемое фоторезистором, является мерилом освещенности.

Вызвать

При помощи hole Fotowiderstand Wert (получить статус фоторезистора) ты можешь узнать, насколько светло в том или ином месте. Чем меньше выданное значение, тем светлее.

Запросить

Чтобы узнать, измерил ли фоторезистор определенное значение освещенности, используй блок ist Fotowiderstand Wert [] … (фоторезистор имеет значение [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения значения освещенности с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если значение освещенности меньше 3000.

Bild14.PNG

 

Резистор с отрицательным ТКС

image-1623680448576.05.31.png

Резистор с отрицательным ТКС — это небинарный температурный датчик. Его электрическое сопротивление уменьшается по мере роста температуры, и поэтому является мерилом температуры. 

Вызвать

При помощи hole NTC-Widerstand [] (получить резистор с отрицательным ТКС []) ты можешь узнать либо значение сопротивления, либо рассчитанную по нему температуру. Возвращаемое значение выбирают в выпадающем меню (маленький треугольник).

Запросить

Чтобы узнать, измерил ли резистор с отрицательным ТКС определенное значение, используй блок ist NTC-Widerstand [] [] … (резистор с отрицательным ТКС имеет [] [] ...) В выпадающих меню (маленький треугольник) можно выбрать, что сравнивается и какой оператор сравнения для этого используется. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если температура ниже 20.

Bild16.PNG

Датчики

Счетчик

image-1623684174534.40.14.png

Двигатель с энкодером можно использовать как счетчик. При этом подсчитывается число оборотов этого двигателя, причем не только когда вращается он сам как двигатель, но и когда он приводится в движение механическим способом извне.

Блок «Запускать каждый раз»

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Запускать каждый раз»:

Bild2.PNG

Является сокращением следующей конструкции:

Bild3.PNG

В блок Starte jedes mal категории Zähler (счетчик) можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

Вызвать

При помощи hole Zähler Wert (получить значение счетчика) ты можешь получить показания счетчика.

Запросить

Чтобы узнать, насчитал ли счетчик определенное значение, используется блок

Bild4.PNG

В выпадающем меню (маленький треугольник) можно выбрать способ сравнения показания с введенным значением (<, ≤, =, ≠, ≥, >).

Сброс

При выполнении блока setze Zähler zurück (сбросить счетчик) счетчик обнуляется.

Датчики

I2C

Датчики I2C, описанные в этой главе, соединяются с контроллером TXT 4.0 подходящим плоским кабелем.

Блок «Starte jedes mal» («Запускать каждый раз»)

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:

Bild1.PNG

Является сокращением следующей конструкции:

Bild2.PNG

 

В блок «Starte jedes mal» категории «I2C» можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

Комбинированный датчик

image-1623698066081.05.44.png

Комбинированный датчик объединяет в себе три функции: датчик ускорения, гироскоп, датчик-компас.

Датчик ускорения

Вызвать

При помощи hole Kombisensor Beschleunigung in [] (получить от комбинированного датчика ускорение в []) ты получишь значение ускорения в одном из пространственных направлений. Нужное пространственное направление выбирается в выпадающем меню (маленький треугольник). Ускорение приводится в g. 

Запросить

Чтобы узнать, было ли измерено определенное ускорение, используй блок ist Kombisensor Beschleunigung in [] [] … (комбинированный датчик определил ускорение в [] [] …). В выпадающих меню (маленький треугольник) можно выбрать способ сравнения ускорения с введенным значением (<, ≤, =, ≠, ≥, >) и пространственное направление, запрос о котором будет отправляться. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если ускорение в направлении x больше 10.

Bild4.PNG

Гироскоп

Вызвать

При помощи hole Kombisensor Rotation in [] (получить от комбинированного датчика вращение в []) ты получишь значение вращения в одном из пространственных направлений. Нужное пространственное направление выбирается в выпадающем меню (маленький треугольник). Вращение приводится в °/с 

Запросить

Чтобы узнать, была ли измерена определенная угловая скорость, используй блок ist Kombisensor Rotation in [] [] … (комбинированный датчик определил вращение в [] [] …). В выпадающих меню (маленький треугольник) можно выбрать способ сравнения вращения с введенным значением (<, ≤, =, ≠, ≥, >) и пространственное направление, запрос о котором будет отправляться. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если вращение в направлении x больше 10.

Bild5.PNG

Датчик-компас

Вызвать

При помощи hole Kombisensor Magnetfluss in [] (получить от комбинированного датчика магнитный поток в []) ты получишь значение магнитного потока в одном из пространственных направлений. Нужное пространственное направление выбирается в выпадающем меню (маленький треугольник). Магнитный поток приводится в мкТл. 

Запросить

Чтобы узнать, был ли измерен определенный магнитный поток, используй блок ist Kombisensor Magnetfluss in [] [] … (комбинированный датчик определил магнитный поток в [] [] …). В выпадающих меню (маленький треугольник) можно выбрать способ сравнения магнитного потока с введенным значением (<, ≤, =, ≠, ≥, >) и пространственное направление, запрос о котором будет отправляться. Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если магнитный поток в направлении x больше 10.

Bild6.PNG

Датчик состояния окружающей среды

image-1623698078892.05.11.png

Датчик состояния окружающей среды объединяет в себе четыре функции: датчик качества воздуха, датчик влажности воздуха, барометр и термометр.

Датчик качества воздуха

Вызвать

При помощи блока hole Umweltsensor Luftqualität als [] (получить от датчика состояния окружающей среды качество воздуха в виде []) можно измерить качество воздуха. В выпадающем меню (маленький треугольник) можно выбрать способ возврата качества воздуха: в виде числового значения (от 0 до 500) или в виде текста. 

Запросить

Чтобы узнать, было ли измерено определенное качество воздуха, используй блок ist Umweltsensor Luftqualität [] ... (датчик состояния окружающей среды определил качество воздуха [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения качества воздуха с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если качество воздуха выше 10.

Bild8.PNG

Барометр
Вызвать

При помощи блока hole Umweltsensor Luftdruck (получить от датчика состояния окружающей среды давление воздуха) можно измерить давление воздуха.

Запросить

Чтобы узнать, было ли измерено определенное давление воздуха, используй блок ist Umweltsensor Luftdruck [] ... (датчик состояния окружающей среды определил давление воздуха [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения давления воздуха с введенным значением (<, ≤, =, ≠, ≥, >) . Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если давление воздуха больше 10.

Bild9.PNG

Термометр
Вызвать

При помощи блока hole Umweltsensor Temperatur (получить от датчика состояния окружающей среды температуру) можно измерить температуру.

Запросить

Чтобы узнать, была ли измерена определенная температура, используй блок ist Umweltsensor Temperatur [] ... (датчик состояния окружающей среды определил температуру [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения температуры с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если температура выше 10.

Bild10.PNG

Датчик влажности воздуха
Вызвать

При помощи блока hole Umweltsensor Luftfeuchtigkeit (получить от датчика состояния окружающей среды влажность воздуха) можно измерить влажность воздуха.

Запросить

Чтобы узнать, была ли измерена определенная влажность воздуха, используй блок ist Umweltsensor Luftfeuchtigkeit [] ... (датчик состояния окружающей среды определил влажность воздуха [] ...). В выпадающем меню (маленький треугольник) можно выбрать способ сравнения влажности воздуха с введенным значением (<, ≤, =, ≠, ≥, >). Эталонное значение вводится в числовое поле в конце блока. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если влажность воздуха больше 10.

Bild11.PNG

Датчики

USB

USB

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

Камера

Камеру можно использовать, в частности, как детектор движения, детектор цвета, детектор шара и детектор линий.

Детектор движения

Чтобы использовать камеру как детектор движения, в конфигураторе камеры надо перетащить иконку человечка в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать

 

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

Программа ввода выполняется, если ввод данных завершен. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Bewegung erkannt (если распознано движение)

Детектор цвета

Чтобы использовать камеру как детектор цвета, в конфигураторе камеры надо перетащить иконку пипетки в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать

 

Вызвать

При помощи hole Farbe als [] (получить цвет в виде []) ты получишь распознанный цвет в шестнадцатеричном представлении или в формате RGB. Нужный формат можно выбрать в выпадающем меню (маленький треугольник).

Запросить

Чтобы узнать, распознал ли датчик какой-либо цвет, используй блок ist Farbe detektiert (распознан цвет). Этот блок можно использовать в качестве условия.

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

Bild1.PNG

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

Bild2.PNG

Программа детектора цвета

Программа детектора цвета выполняется, если был распознан цвет. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Farbe erkannt (если распознан цвет)

Детектор шара 

Чтобы использовать камеру как детектор шара, в конфигураторе камеры надо перетащить иконку шара в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать

 

Вызвать

При помощи hole [] des Balls (получить [] шара) ты получишь положение на оси x, положение на оси y, радиус или диаметр мяча.

Запросить

Чтобы узнать, распознал ли датчик шара, используй блок ist Ball detektiert (распознан мяч). Этот блок можно использовать в качестве условия.                                                                  

Чтобы узнать, распознал ли детектор шар с определенным положением на оси x, положением на оси y, радиусом или диаметром, используй этот блок 

Bild3.PNG

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

Bild4.PNG

 

Программа детектора шара

Программа детектора шара выполняется, если был распознан мяч. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Ball erkannt (если распознан шар)

Детектор линий

Чтобы использовать камеру как детектор линий, в конфигураторе камеры надо перетащить иконку с точками на одной прямой в область, разграфленную на клетки. Справа откроется окно, в котором во вкладке «Inspektor» («Меню свойств») можно задать

 

Вызвать

При помощи hole [] der Linie [] (получить [] линии []) ты получишь положение или ширину одной из максимум пяти линий.

При помощи hole Farbe der Linie [] als [] (получить цвет линии [] в качестве []) ты получишь цвет линии в шестнадцатеричном представлении или в формате RGB. Нужный формат можно выбрать в выпадающем меню (маленький треугольник).

Запросить

Чтобы узнать, распознал ли датчик линию, используй блок ist Linie detektiert (распознана линия). Этот блок можно использовать в качестве условия.                                                                  

Чтобы узнать, распознал ли детектор линию с определенным положением или шириной, используй этот блок

Bild5.PNG

При помощи этого блока характеристики распознанной(-ых) линии(-й) можно сравнить с введенным значением. В выпадающих меню (маленький треугольник) можно выбрать, что сравнивается и какой оператор сравнения для этого используется. Этот блок можно использовать в качестве условия. В примере двигатель останавливается, если ширина распознанной линии меньше 2.

Bild6.PNG

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

Bild7.PNG 

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

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

Программа детектора линии выполняется, если была распознана одна или несколько линий. Она пишется отдельно от основной программы. Переменные работают в обеих программах. Программа ввода выполняется в блоке wenn Linien erkannt (если распознаны линии)

Микрофон

Встроенный в камеру микрофон можно использовать в качестве шумомера.

Блок «Starte jedes mal» («Запускать каждый раз»)

Блок «Starte jedes mal» позволяет запускать программу при выполнении какого-либо условия. То есть, он работает аналогично ветвлению, но выполняется не однократно, а каждый раз, когда выполняется условие, в течение всего прогона программы. Блок «Starte jedes mal»:

Bild8.PNG

Является сокращением следующей конструкции:

Bild9.PNG

В блок «Starte jedes mal» категории «Mikrofon» («Микрофон») можно ввести все условия из этой категории.

Указание: сегмент программы внутри блока «Starte jedes mal» должен быть максимально коротким и не должен содержать блокирующие вызовы или бесконечные циклы, чтобы эта часть программы выполнялась быстро.

Шумомер

Вызвать

При помощи Mikrofon Lautstärke (микрофон определил шум) ты узнаешь уровень шума в децибелах.

Запросить

Чтобы получить информацию о том, измерил ли шумомер определенный шум, используется блок

Bild10.PNG

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

Обработка

Обработка

Условия

Условия

Условные операторы занимают центральное место в программировании. Они позволяют организовывать ветвления, например:

Блоки

Блоки «если»

Простейшим условием является блок «если»:

Bild1_ru.PNG

При выполнении этого блока значение переменной x сравнивается с 100. Если значение переменной x превышает 100, выдается фраза «Was für eine große Zahl!» («Какое большое число»)! В противном случае ничего не происходит.

Блоки «если... иначе»

Также можно указать, что в случае невыполнения условия что-либо не должно происходить, как в этом примере:

Bild2_ru.PNG

Как и в случае с предыдущим блоком, если x > 100, выдается фраза «Was für eine große Zahl!». В противном случае выдается фраза «Das ist nicht sehr groß.» («Это не очень большое число.»).

Блок «если» может иметь не более одной ветки «иначе».

Блоки «если-иначе-если»

Ты можешь протестировать несколько условий при помощи одного блока «если», добавив к нему ветку «иначе-если»:

Bild3_ru.PNG

Сначала блок проверяет, больше ли x 100, и выдает «what a great number!», если это так. Если это не так, блок проверяет, равен ли x 42. Если да, он выдает «this is my lucky number!» («Это мое счастливое число!»). В противном случае ничего не происходит.

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

Блоки «если-иначе-если-иначе»

Блоки «если» могут иметь как ветви «иначе-если», так и ветви «иначе»:

Bild4_ru.PNG

Ветвь «иначе» обеспечивает выполнение действия, даже если не выполняется ни одно из предшествующих условий.

Ветвь «иначе» может стоять после любого количества ветвей «иначе-если», включая ноль; в последнем случае ты получишь обычный блок «если-иначе».

Изменение блока

В панели инструментов отображается только простой блок «если» и блок «если-иначе»:

Bild5_1_ru.PNG

Bild5_2_ru.PNG

Чтобы добавить ветви «иначе-если» и «иначе», щелкни по символу «+». Символ «-» удаляет ветви «иначе-если»:

Bild6_ru.PNG

Обрати внимание на то, что формы блоков допускают добавление любого количества подблоков «иначе-если», однако только одного блока «если».

Обработка

Логика

Булевская логика — это простая математическая система, в которой существуют два значения:

Как правило, логические блоки в программе ROBO Pro Coding предназначены для контроля условий и циклов.

Приведем пример:

Bild1_ru.PNG

Если значение переменной x больше 100, условие является истиной и выдается текст «Was für eine große Zahl!». Если значение переменной x не больше 100, условие является ложью и выдается текст «Das ist nicht sehr groß.». Булевские значения могут наподобие числам, текстам и спискам сохраняться в переменных и передаваться в функции.

Блоки

Если блок ожидает ввода булевского значения, отсутствие такого ввода интерпретируется как ложь. Небулевские значения нельзя напрямую вставить туда, где ожидаются булевские значения, но можно (хотя и не рекомендуется) сохранить небулевское значение в переменной и потом вставить ее в условие. Мы не советуем использовать этот способ, и в следующих версиях ROBO Pro Coding возможности его использования могут быть изменены.

Значения

Для вызова булевского значения можно использовать один-единственный блок с выпадающим списком, в котором (списке) указано wahr (истина) или falsch (ложь).

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

Существует шесть операторов сравнения Каждый из них сравнивает две введенные величины (как правило, два числа) и возвращает wahr или falsch в зависимости от того, как сравниваются эти величины.

image-1623518116706.pngimage-1623518117182.png

image-1623518116894.pngimage-1623518116802.png

image-1623518116985.pngimage-1623518166030.png

 

Шесть операторов сравнения — это равно, не равно, меньше, больше, меньше или равно, больше или равно.

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

Блок und (и) возвращает wahr (истина) тогда и только тогда, когда оба его входных значения являются истиной.

Bild8.PNG

Блок oder (или) возвращает wahr, если как минимум одно из двух его входных значений является истиной.

Bild9.PNG

не

Блок nicht (не) превращает введенное булевское значение в противоположное. Например, результатом

Bild10_ru.PNG

будет falsch (ложь)

Если не вводится никакое значение, программа исходит из значения wahr, поэтому следующий блок генерирует значение falsch:

Bild11_ru.PNG

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

Тернарный оператор

Тернарный оператор — это блок «если-иначе» в миниатюре. Тернарный оператор принимает три входных значения. Первое из них — проверяемое булевское условие, второе — значение, возвращаемое, если проверка даст результат wahr (истина), третье — значение, возвращаемое, если проверка даст результат falsch (ложь). В следующем примере переменной Farbe (цвет) присваивается значение rot (красный), если переменная x меньше 10, иначе переменной Farbe присваивается значение grün (зеленый).

Bild12_ru.PNG

Тернарный оператор всегда можно заменить блоком «если-иначе». Следующие два примера абсолютно идентичны.   

Bild13_ru.PNG

Bild14_ru.PNG

Обработка

Циклы

Область «Steuerung» («Управление») содержит блоки, которые указывают, надо ли выполнять другие блоки, находящиеся внутри них. Есть два вида блоков управления: блоки «если-иначе» (описываются на отдельной странице) и блоки, управляющие частотой выполнения их содержимого. Второй вид блоков называют циклами, т. к. их содержимое, также именуемое телом цикла или просто телом, повторяется (может повторяться) многократно. Каждое выполнение цикла называется итерацией.

Блоки для создания циклов

dauerhaft wiederholen (повторять всегда)

Блок dauerhaft wiederholen выполняет код, содержащийся в его теле, до завершения выполнения программы.

wiederhole (повторить... раз)

Блок wiederhole выполняет код, содержащийся в его теле, указанное количество раз. Например, следующий блок десять раз выдаст «Hallo!» («Привет!»):

Bild1_ru.PNG

wiederhole-solange (повторять, пока …)

Представь себе игру, в которой игрок бросает игральную кость и складывает все выпавшие очки, пока их сумма меньше 30. Следующие блоки описывают смысл этой игры:

  1. Переменной с именем insgesamt (итого) присваивается начальное значение 0.
  2. Цикл начинается с проверки того, меньше ли 30 значение переменной insgesamt. Если да, выполняются блоки в теле цикла.
  3. Генерируется случайное число в диапазоне от 1 до 6 (имитация броска игральной кости) и сохраняется в переменной с именем gewürfelt (выпало).
  4. Выдается выпавшее число.
  5. Значение переменной insgesamt увеличивается на значение переменной gewürfelt.
  6. По достижении конца цикла выполняется возврат к шагу 2.

Bild2_ru.PNG

После завершения цикла выполняются все последующие блоки (не показаны). В примере выполнение цикла прекращается, после того как будет выдано определенное количество случайных чисел в диапазоне от 1 до 6 и значением переменной insgesamt станет сумма этих чисел, составляющая не менее 30.

wiederhole-bis (повторять, пока не …)

Циклы wiederhole solange повторяют свое тело, пока выполняется какое-либо условие. Циклы wiederhole bis похожи на них с тем отличием, что они выполняют свое тело, пока не будет выполнено определенное условие. Следующие блоки эквивалентны предыдущему примеру, потому что цикл выполняется, пока переменная insgesamt не примет значение, большее или равное 30.

Bild3_ru.PNG

zählen-von-bis (считать от … до)

Цикл zählen-von-bis увеличивает значение переменной, начиная с первого значения и заканчивая вторым значением, с шагом, равным третьему значению, причем тело цикла выполняется единожды для каждого значения переменной. Например, следующая программа выдает числа 1, 3 и 5.

Bild4_ru.PNG

Два следующих цикла, каждый из которых выводит числа 5, 3 и 1, демонстрируют, что первое значение может быть больше второго. Эти циклы работают одинаково вне зависимости от того, положителен или отрицателен инкремент (третье значение).

Bild5_ru.PNG

Bild6_ru.PNG

für jeden (для каждого)

Блок für jeden похож на цикл zählen-von-bis с тем отличием, что вместо переменной цикла в числовой последовательности он последовательно использует значения из какого-либо списка. Следующая программа выдает каждый элемент из списка «alpha», «beta», «gamma»:

Bild7_ru.PNG

Блоки для выхода из цикла

Большинство циклов выполняется до тех пор, пока не будет выполнено условие выхода из цикла (у блоков 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».

Bild8_ru.PNG

Schleifenabbruch (выход из цикла)

Блок schleifenabbruch служит для досрочного завершения цикла. Следующая программа при первой итерации выдает «alpha», а при второй итерации выходит из цикла, если переменная цикла принимает значение «beta». Программа не доходит до третьего пункта списка.

Bild9_ru.PNG

Обработка

Математика

Блоки категории Mathematik (Математика) используются для выполнения вычислений. Результаты вычислений можно использовать, например, в качестве значений переменных. В основе большинства «математических» блоков лежат обычные математические действия, поэтому эти блоки должны быть понятны без разъяснений.

Блоки

Числа

Используй блок Zahl (число), чтобы добавить в свою программу любое число или присвоить какой-либо переменной значение в виде этого числа. Эта программа присваивает переменной Alter (возраст) число 12:

Bild1_ru.PNG

Простые вычисления

Этот блок имеет структуру «Значение-оператор-значение» Доступные операторы: +-÷× и ^. Оператор выбирают в выпадающем меню. Операторы можно применять как непосредственно к числам, так и к значениям переменных. Пример:

Bild2.PNG

Этот блок выдает результат 144 (12^2).

Специальные вычисления

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

где e — эйлерово число. Этот блок извлекает корень квадратный из 16 и присваивает этот результат переменной i.

Bild3_ru.PNG

Тригонометрические функции

Этот блок работает аналогично описанному выше с тем отличием, что в качестве счетных операций используются тригонометрические функции: синус, косинус, тангенс и их подфункции. Указанное число или значение указанной переменной вставляется в функцию, выбранную в выпадающем меню. Полученный результат можно продолжать обрабатывать в программе. Еще есть блок arctan2 of X: ... Y: ..., который позволяет при помощи двух вещественных чисел (подставляемых вместо X и Y) получить значение функции arctan2 в области 360°.

Часто используемые константы

Этот блок работает аналогично блоку Zahl (число) с тем отличием, что здесь не надо самостоятельно указывать численное значение. Вместо него применяются уже сохраненные часто используемые константы (напр., π). Константу выбирают в выпадающем меню.

Rest einer Division (остаток от деления)

Блок Rest von … (остаток от ...) используется для вывода остатка от деления. Эта программа присваивает переменной Rest (остаток) остаток от деления 3:2, т. е. 1:

Bild4_ru.PNG

Runden (округление)

При помощи блока runde … (округлить ...) указанные десятичные числа или значение указанной переменной можно округлить до целого числа. В выпадающем меню предусмотрены три опции:

Анализ списков

При помощи блока ... der Liste (... списка) можно получить следующее: 

Любую из этих опций можно выбрать в выпадающем меню блока:

Bild5_ru.PNG

Ограничение входных величин

Блок beschränke ... von ... bis … (ограничить ... от … до ...) позволяет ограничить входные величины определенным интервалом. Перед дальнейшей обработкой входной величины программа проверяет, принадлежит ли она заданному интервалу. В зависимости от входной величины программа может поступать одним из трех способов:

В следующем примере этот блок используется для ограничения значения переменной Geschwindigkeit (скорость) диапазоном частоты вращения, поддерживаемым двигателем:

Bild6_ru.PNG

Генерирование случайных значений

И блок 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ß (приветствие):

Bild1_ru.PNG

Блок erstelle Text aus (создать текст из) создает из значения переменной Gruß и нового текста «Welt» («мир») текст «HalloWelt» («Приветмир»). Обрати внимание на то, что два исходных текста не разделены пробелом, т. к. его не было ни в одном из них.

Bild2_ru.PNG

Чтобы увеличить количество текстов, щелкни по символу «+». Чтобы удалить последний текст, щелкни по символу «-».

Изменение текста

Блок an ... anhängen (к … добавить) добавляет указанный текст к указанной переменной. В этом примере он изменяет текст переменной Gruß с «Hallo» на «Hallo, da!» («Эй, привет!»):

Bild4_ru.PNG

Длина текста

Блок Länge von (длина) считает количество символов (букв, чисел и т. д.), содержащихся в тексте. Длина выражения «Wir sind #1!» равна 12, длина пустого текста равна 0.

Bild5_ru.PNG

Bild6_ru.PNG

Проверка на пустой текст

Блок ist leer (пустой) проверяет, пуст ли указанный текст (равна ли его длина 0). В первом примере результат проверки — wahr (истина), во втором примере — falsch (ложь).

Bild7_ru.PNG

Bild8_ru.PNG

Поиск текста

Эти блоки можно использовать, чтобы проверить, встречается ли текст в другом тексте, и если да, то где. Например, здесь программе задается вопрос о месте первой буквы «a» в слове «Hallo», результат — 2:

Bild9_ru.PNG

Здесь задается вопрос о месте последней буквы «a» в слове «Hallo», результат — тоже 2:

Bild10_ru.PNG

Вне зависимости от того, первое или последнее место выбрано, этот блок выдает результат 0, т. к. в слове «Hallo» нет буквы «z».

Bild11_ru.PNG

Извлечение текста

Извлечение отдельного символа

Этот блок выдает «b» — вторую букву выражения «abcde»:

Bild12_ru.PNG

Этот блок выдает «d» — предпоследнюю букву выражения «abcde»:

Bild13_ru.PNG

Этот блок выдает «a» — первую букву выражения «abcde»:

Bild14_ru.PNG

Этот блок выдаст «e» — последнюю букву выражения «abcde»:

Bild15_ru.PNG

Этот блок с одинаковой вероятностью выдает любую из пяти букв выражения «abcde»:

Bild16_ru.PNG

Ни один из этих блоков не изменяет текст, из которого извлекается символ.

Извлечение области текста

При помощи блока im Text ... liefer Zeichenkette (из текста … выдай цепочку символов) можно извлечь область текста, которая начинается на:

и заканчивается на:

В следующем примере извлекается цепочка «abc»:

Bild17_ru.PNG

Переключение между верхним и нижним регистрами

Этот блок генерирует версию введенного текста, которая написана

Результатом выполнения следующего блока будет «HALLO»:

Bild18_ru.PNG

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

Удаление пробелов

Следующий блок в зависимости от того, что выбрано в выпадающем меню (маленький треугольник), удаляет пробелы:

Результатом выполнения следующего блока будет «Hi  du»:

Bild19_ru.PNG

Пробелы внутри текста не удалились.

Вывести текст

Блок gib aus (вывести) выдает входную величину в окне консоли:

Bild20_ru.PNG

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

Вывести текст с форматированием

Блок formatiere text (форматировать текст) форматирует выводимый текст, содержащий переменные. При этом все подстановочные знаки {} в тексте заменяются на содержимое переменной, приведенной после текста. В фигурных скобках можно указать форматирование. Например, форматирование {:.1f} выводит только первый знак после запятой в переменной t.

image-1638882988865.png

Обработка

Списки

Как и в повседневной жизни, в ROBO Pro Coding под списком тоже понимается упорядоченный набор элементов, например список дел или список покупок. Элементы списка могут принадлежать любому типу. Одно и тоже значение может встречаться в списке более одного раза.

Создание списка

Создать список из

При помощи блока erstelle Liste mit (создать список из) можно указать начальные значения нового списка. В этом примере создается список слов и сохраняется в переменной с именем Buchstaben (буквы):

Bild1_ru.PNG

Мы назовем этот список [«alpha», «beta», «gamma»].

Ниже показано создание списка чисел:

Bild2_ru.PNG

Так создается список цветов:

Bild3_ru.PNG

Хотя этот вариант и встречается не так часто, можно создать список значений разных типов:

Bild4_ru.PNG

Изменение количества входов

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

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

Создание списка с определенным количеством экземпляров элемента

При помощи блока erstelle Liste mit Element (создать список с … элементами(-ом)) ты можешь создать список, содержащий указанное количество экземпляров элемента. Например, следующие блоки присваивают переменной Wörter (слова) значение в виде списка [«sehr», «sehr», «sehr»] ([«очень», «очень», «очень»]).

Bild5_ru.PNG

Проверка длины списка

ist leer (пустой)

Значение блока ist leer (пустой) является истиной, если он содержит пустой список, и ложью, если он содержит что-либо другое. Будет ли следующее выражение истиной? Следующий блок будет иметь значение ложь, т. к. переменная «Цвета» не пустая: она содержит три элемента.

Bild6_ru.PNG

Обрати внимание на схожесть этого блока с блоком ist leer (пустой) для текста.

Длина

Значением блока Länge von (длина) является количество элементов списка, подставленного в блок. Например, значением следующего блока было бы 3, т. к. список Farbe содержит три элемента:

Bild7_ru.PNG

Обрати внимание на то, что блок Länge von (длина) считает общее количество элементов в списке, а не количество разных элементов в списке. Например, следующий блок имеет значение 3, хотя список Wörter состоит из трех одинаковых слов:

Bild8_ru.PNG

Обрати внимание на схожесть этого блока с блоком Länge von (длина) для текста.

Поиск элементов в списке

Эти блоки находят положение элемента в списке. В следующем примере блок, находящий положение первого экземпляра элемента, имеет значение 1, т. к. первое слово «sehr» стоит в начале списка слов ([«sehr», «sehr», «sehr»]).

Bild9_ru.PNG

Результатом выполнения следующего блока, находящего положение последнего экземпляра элемента, будет 3, т. к. последнее слово «sehr» в списке Wörter стоит на 3 месте.

Bild10_ru.PNG

Если элемент не встречается в списке, результатом выполнения блока будет 0, как в следующем примере:

Bild11_ru.PNG

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

Вызов элементов из списка

Вызов одного элемента

Вспомни определение списка Farben (цвета):

Bild3_ru.PNG

Следующий блок содержит синий цвет, т. к. он является вторым элементом в списке (если считать слева):

Bild13_ru.PNG

Этот блок содержит зеленый цвет, т. к. он является вторым элементом (если считать справа):

Bild14_ru.PNG

Этот блок содержит первый элемент — красный цвет:

Bild15_ru.PNG

Этот блок содержит последний элемент — желтый цвет:

Bild16_ru.PNG

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

Bild17_ru.PNG

Вызов и удаление элемента

При помощи выпадающего меню блок aus Liste ... abrufen (вызвать … из списка) превращается в блок aus Liste ... abrufen und entfernen (вызвать … из списка и удалить), который выдает такое же значение, но изменяет список:

Bild18_ru.PNG

В этом примере переменной erster Buchstabe (первая буква) присваивается значение «alpha», остальные буквы ([«beta», «gamma»]) остаются в списке.

Bild19_ru.PNG

Удаление элемента списка

Если в выпадающем меню выбрать entfernen (удалить), выступ на блоке слева исчезает:

Bild20_ru.PNG

Первый элемент из списка Buchstaben удаляется.

Вызвать подсписок

Блок aus Liste … Subliste abrufen (вызвать из списка... подсписок) похож на блок aus Liste ... abrufen (вызвать … из списка) с тем отличием, что он извлекает подсписок, а не один элемент. Существует несколько возможностей указать начало и конец подсписка:

Bild21_ru.PNG

Bild22_ru.PNG

В этом примере создается новый список erster Buchstabe (первая буква). Этот новый список содержит два элемента: [«alpha», «beta»].

Bild23_ru.PNG

Обрати внимание на то, что этот список не изменяет исходный список.

Добавление элементов в список

Замена элементов списка

Блок in Liste ... ersetze (заменить … в списке) заменяет элемент в определенном месте списка на другой элемент.

Bild24_ru.PNG

Значение пунктов выпадающего меню см. в предыдущем разделе.

В следующем примере выполняются два действия:

  1. Создается список Wörter (слова) с 3 элементами: [«sehr», «sehr», «sehr»] ([«очень», «очень», «очень»]).
  2. Третий элемент списка заменяется на «gut» («хорошо»). Новым значением переменной Wörter является [«sehr», «sehr», «gut»] ([«очень», «очень», «хорошо»]).

Bild25_ru.PNG

Вставка элементов в определенное место списка

Блок in Liste ... einfügen bei (вставить в список … на место) вызывается через выпадающее меню блока заменить ... в списке:

Bild26_ru.PNG

Этот блок вставляет новый элемент в указанное место списка, а именно перед элементом, ранее находившимся на этом месте. В следующем примере (основанном на предыдущем примере) выполняются три действия:

  1. Создается список Wörter (слова) с 3 элементами: [«sehr», «sehr», «sehr»] ([«очень», «очень», «очень»]).
  2. Третий элемент списка заменяется на «gut» («хорошо»). Таким образом, новым значением переменной Wörter является [«sehr», «sehr», «gut»] ([«очень», «очень», «хорошо»]).
  3. В начало списка вставляется слово «Sei» («будь»). Таким образом, окончательным значением переменной Wörter будет [«Sei», «sehr», «sehr», «gut»] ([«Будь», «очень», «очень», «хорошим»]).

Bild27_ru.PNG

Разделение цепочек символов и объединение в списки

Создание списка из текста

Блок erstelle Liste aus Text (создать список из текста) разбивает на части указанный текст при помощи ограничителя:

Bild28_ru.PNG

В вышеприведенном примере возвращается новый список, содержащий три фрагмента текста: «311», «555» и «2368».

Создание текста из списка

Блок erstelle Text aus Liste (создать текст из списка) создает из списка единый текст при помощи разделителя:

Bild29_ru.PNG

В вышеприведенном примере возвращается новый текст со значением «311-555-2368».

Родственные блоки

Печать списка

Блок drucken (напечатать) в категории Text (Текст) может выдавать списки. В результате выполнения следующей программы на консоль выводятся показанные данные:

Bild30_ru.PNG

Konsole_ru.PNG

Выполнение какого-либо действия для каждого элемента списка

Блок für-jeden (для каждого) в категории «Управление» выполняет ту или иную операцию для каждого элемента списка. Например, этот блок отдельно выводит каждый элемент списка:

Bild31_ru.PNG

При этом из исходного списка элементы не удаляются.

См. также примеры блоков для выхода из цикла.

Обработка

Пользование

Категория «Benutzung» («Пользование») программы ROBO Pro Coding содержит следующие блоки:

Выбор цвета

Этот блок служит входной величиной, если задается вопрос о цвете (напр., при регулировке цветового баланса камерой). При щелчке по цвету или касании цвета можно выбрать один из 70 цветов палитры.

Ожидание

Ожидание до истечения времени

Блок warte [] … (ждать [] ...) приостанавливает выполнение программы на указанное время ожидания. При этом в выпадающем меню (маленький треугольник) можно выбрать единицу измерения времени, а в поле ввода за ним — нужную длину перерыва.

Ожидание с условием

Блок warte bis (ждать, пока не) привязывает перерыв не ко времени, а к выполнению какого-либо условия (напр., нажатию какой-либо клавиши). Условие вставляется после блока warte bis.

Код на Python

Если ты хочешь интегрировать в ROBO Pro Coding имеющийся код на языке Python, его можно вставить в блок Python Code (код на Python). Тогда программа выполнит все, что указано в блоке на языке Python. 

Запустить

Блок starte wenn (запустить, если) тоже привязан к выполнению условия. Программа, указанная в теле блока, запускается только при выполнении этого условия.

Выполнение функции

При помощи блока führe Funktion ... in einem Thread aus (выполнить функцию ... в отдельном потоке) выбранная функция выполняется в отдельном потоке. В некоторых случаях благодаря этому программа может продолжать реагировать на ввод данных и выполняться быстрее.

Обработка
Обработка

Переменные

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

Выпадающее меню

При щелчке по символу выпадающего меню (маленький треугольник) переменной появляется следующее меню:

Bild1_ru.PNG

Это меню содержит следующие опции:

Блоки

Задать

Блок присвоить присваивает переменной какое-либо значение и создает эту переменную, если она еще не существует. Например, здесь переменной Alter (возраст) присваивается значение 12:

Bild2_ru.PNG

Вызвать

Блок rufe ab (вызвать) выдает значение, сохраненное в переменной, не изменяя его:

Bild3.PNG

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

Изменить

Блок ändere (изменить) прибавляет к переменной число.

Bild4_ru.PNG

Блок изменить является сокращением следующей конструкции:

Bild5_ru.PNG

Пример

Посмотри на следующий пример кода:

Bild6_ru.PNG

Первый ряд блоков создает переменную под названием Alter (возраст) и присваивает ей начальное значение 12. Второй ряд блоков вызывает значение 12, прибавляет к нему 1 и сохраняет полученную сумму (13) в переменной. В последней строке выдается сообщение: «Herzlichen Glückwunsch! Du bist jetzt 13» (Поздравляю! Тебе исполнилось 13 лет»).

Обработка

Функции

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

Простая функция

Блок простой функции позволяет создать функцию с именем, введенным в текстовое поле. Функция может содержать любое количество переменных, добавляемых щелчком по значку шестеренки. Эта функция Altern (старение) прибавляет 1 к переменной Alter (возраст):

Bild1_ru.PNG

Функцию можно использовать в основной программе:

Bild2_ru.PNG

Функция с возвращаемым значением

Этот блок позволяет создать функцию с возвращаемым значением. Это возвращаемое значение можно использовать в основной программе. Приведем пример:

Bild3_ru.PNG