Page tree
Skip to end of metadata
Go to start of metadata
Content

> Home

Inhalt:





»Program start« 

Each program starts with the red »Program start« block.

This block is always available in the Open Roberta Lab and cannot be deleted. The little triangle below the start block is called  »sequence connector«. The first block you want to use will be connected by using the »sequence connector« at the start block.  The sequence connector color changes to yellow when a suitable block comes into its range.

Settings:

  • create a new global variable
  • delete the global variable
  • show sensor data - while running a program the current values of connected sensors will be shown on the display

If global variables have been created:

  • Text, name of the variable
  • Type of the variable, »Number«, »Boolean«, »String«, »Color«, »Connection«, »List Number«, »List Boolean«, »List String«, »List Connection«
  • Value, that corresponds to the variable type. This is the initial value of the variable.






After creating a global variable:




Action

The »Action« category contains the blocks where an action is performed on the LEGO MINDSTORMS EV3-robot. For example, the motors or the screen of the LEGO MINDSTORMS EV3-robot can be programmed.

The »Action« Category includes the following program blocks:

  • Blocks to control motors

  • Blocks to control of the motors
  • Blocks to control the display
  • Blocks to control the status light
  • Blocks to control the speaker

In expert mode, the category »Action« is subdivided into the following subcategories:

  • Move
  • Drive
  • Display
  • Sounds
  • Lights

The expert category contains all blocks of the beginner category.



 

»motor port ... on« [Expert block]

With the »motor port ... on« block you can program the speed (velocity) of the selected motor. Your robot starts the selected motor, until it is stopped or another block specifies new moving parameters.

Options and Arguments:

  • motor port, choose the port where the motor is connected to.
  • value, speed between -100 to 100. Negative values let the motor turn backwards.



 

»motor port ... on ... for« [Expert block]

With the »motor port ... rotation« block you can program the speed (velocity) of the selected motor. Your robot starts the selected motor and rotates the motor until the specified number of rotations or degrees is done. 

Options and Arguments:

  • motor port, choose the one where the motor that you want to program is connected to.
  • number, spped between -100 and 100. 100 is the maximum speed. Negative values lets the motor rotate into the other direction.
  • rotation or degree. Choose the one which fits best. 1 rotation is the same than 360 degrees.
  • number, rotations or degrees, only positive numbers are allowed.




 

»get speed motor port« [Expert block]

The block »get speed motor port « reads the speed (velocity) of the selected motor. The motor can have a speed from -100 (rotating backwards) to 100.

Options and Arguments:

  • motor port, choose the port where the motor is connected to.
Return value:
  • number, the current speed of the motor.







»set motor port speed« [Expert block]

The block »set motor port ... speed« sets the speed (velocity) of one selected motor to a new value. 

Options and Arguments:

  • motor port, choose the port where the motor is connected to.
  • number, speed between -100 and 100. Negative values let the motor run backwards.



 

»stop motor port« [Expert block]

Using the block »stop motor port « switches off one selected motor. You can decide the motor to run out slowly (float) or to break immediately

Setting options:

  • motor port, choose the port where the motor is connected to.
  • float or brake; make your choice.






»drive«

With the »drive« block you can program the direction and also the speed (velocity) of your robot. Your robot moves  until it is stopped or another block specifies new driving parameters. The driving speed can be set in the field  »speed«.

Options and Arguments:

  • direction, forwards or backwards. Choose the direction.
  • number, speed between -100 to 100. 100 is the maximum speed. Negative values lets the motor rotate into the other direction.





»drive distance«

With the »drive distance« block you can program the direction and the speed of the robot. The speed of your robot is set in the »speed« parameter. Once the block has been executed the motors stop automatically.

»drive distance« controls both motors of the robot at the same time, meaning that the settings you make here apply to both motors of the robot. If the robot's actions don't correspond with the block's settings when running the program, check the robot configuration settings, especially the wheel diameter and the track width.

Settings and input values:

  • Drive, »forwards« or »backwards«. Select a direction.
  • Number, speed between  -100 and 100. If the number is negative, the motors will rotate backwards.
  • Number, the distance to drive in cm.






»stop«

The »stop« block stops the motors immediately.

Settings: none







»turn«

With the »turn« block you set the direction (right/left) which the robot will turn. Your robot turns until it is stopped or another block is used for driving. You can set the speed in the block parameter field »speed«.

»turn« controls both motors of the robot at the same time, therefore the robot turns on the spot. If the EV3 Robot's actions don't correspond with the block's settings when running the program, check the EV3 robot configuration settings, especially the wheel diameter and the track width.

Settings and input values:

  • Turn, »right« or »left«. Select the desired direction for turning.
  • Number, speed between  -100 and 100. If the number is negative, the motors will rotate backwards.

If your robot turns into the wrong direction, then the motors are connected to the wrong ports. Just swap the ports and your robot will turn into the right way.






»turn degree«

With the »turn degree« block you program the direction (right/left) that your robot will turn. In addition to the direction you can also program the »degrees«, allowing you to program how many degrees your robot should rotate (around its axis). This means that you do a complete rotation by setting a 360 degree turn..

The »turn degree« block controls both motors of the robot in such a way that the robot turns around its own axis. If the robot's actions don't correspond with the block's settings when running the program, check the EV3 robot configuration settings, especially the wheel diameter and the track width.

Settings and input values:

  • Turn, »right« or »left«. Select the desired direction for turning.
  • Number, speed between  -100 and 100. If the number is negative, the motors will rotate backwards.
  • Number, degrees the robot shall turn. Degree of 360 will perform a full turn around. Negative numbers are not allowed.






»steer ... speed left ... speed right ...«

The block »steer ... speed left ... speed right ...« programs the robot to drive a curve by setting different speeds for the left and right motor. The robot configuration influences the radius of the curve depending from wheel distance and wheel diameter. The turning direction will define the driving direction.


Settings and input values:

  • Turning direction, »forwards« or »backwards«. Select your desired moving direction.
  • Number, speed between -100 and 100 for the left motor. If the number is negative the motor will run backwards.
  • Number, speed between -100 and 100 for the left motor. If the number is negative the motor will run backwards.
Return value: none





»steer ... speed left ... speed right ... distance ...«

The block »steer ... speed left ... speed right ... distance ...« programs the robot to drive a curve by setting different speeds for the left and right motor and also a distance related to the middle between both wheels. The robot configuration influences the radius of the curve depending from wheel distance and wheel diameter. The turning direction will define the driving direction.


Settings and input values:

  • Turning direction, »forwards« or »backwards«. Select your desired moving direction.
  • Number, speed between -100 and 100 for the left motor. If the number is negative the motor will run backwards.
  • Number, speed between -100 and 100 for the left motor. If the number is negative the motor will run backwards.
  • Number, the distance in cm to be driven.
Return value: none





»show text«

With the »show text« block you can display text and numbers on the display of your robot. You can also specify in which column and row the text or numbers should be displayed on the robot screen.

The EV3 display contains some rows and columns, counted from 0 in the top left corner. Depending on the system (lejos or EV3dev) there are different numbers of rows and columns available.

If there was text on the display prior to the show text block then the former text will be overwritten.

Input values:

  • String, input of a text string to be shown in the display.
  • Number, column for the text to start.
  • Number, row for the text to start.






»show picture« [Expert block]

With the »show picture« block you can show one of some stored pictures on the EV3 display of your robot. Avaliable pictures are »glasses«, »eyes open«, »eyes closed«, »flowers«, »tacho«.

Settings and input values:

  • Picture, select one of the available.
  • Number for x, column, where the picture shall start.
  • Number for y, line, where the picture shall start.






»clear display«

With the »clear display« block you can delete text and numbers on the display of your robot, therefore nothing appears on your display.

Settings: none






»play frequency«

With the »play frequency« block you can program the frequency (pitch level) and the time (how long the sound should be played) that a sound is played. The sound is played by the built-in speaker of your LEGO MINDSTORMS EV3 brick for a defined of time. The frequency setting corresponds directly to the frequency in Hertz, for example, setting the frequency to 400 corresponds to 400 Hertz. Example: 261 = C.


Note that the human ear can perceive frequencies from about 30Hz to about 15,000Hz (15kHz). This can vary depending on the person and their age.

Settings:

  • Number, desired frequency in Hz (Hertz) .
  • Number, desired duration in milliseconds (ms).






»play file« [Expert block]

With the »play file« block your robot plays one of five stored sounds.

Settings:

  • Number between 1 and 5 with the following assignment:
    1 = single beep
    2 = double beep
    3 = increasing sound of 4 tones
    4 = decreasing sound of 4 tones
    5 = single low tone






»set volume«

With the »set volume« block you can program the sound volume played. The volume ranges from 0 (no sound) to 100 (full volume). The volume setting remains unchanged until you change it with another »set volume« block.

Setting:

  • Number, volume for loudness. 0 = no tone, 100 = maximum volume.





»get volume« [Expert block]

With the »get volume« block you can read the currend sound volume level.

Return value:

  • Number, currently adjusted volume. 0 = no tone, 100 = maximum volume





»Brick light«

With the »brick light« block you can program the background light of the EV3 buttons. In addition to color, you can also turn on and off the EV3 brick light. The EV3 brick light stays on until you reprogram it. The following colors are available: »green«, »orange« or »red«.

Settings:

  • Colour, select a colour.
  • Flash type, »on«, »flashing« or »double flashing«. Select a flash type for the brick light.





»Brick light off«

With the »brick light off« block you can turn off the brick light.

Settings: none





»reset EV3 brick light«

With the »reset EV3 brick light« block you can reset EV3 brick light back to the default settings.

Settings: none








Sensors

The category Ssensors« contains blocks for all standard sensors of the EV3 system:

  • touch sensor
  • light Sensor
  • ultrasonic sensor
  • infrared sensor
  • rotation sensor (motor encoder)
  • gyro sensor
  • buttons
  • timer

A special feature of the sensor blocks compared to the action blocks is that many sensor-blocks return a »value«. The value type returned by a sensor block corresponds to the color of the connector. The connector is the "nose" which enables NEPO blocks to be inserted into other blocks. An exact description can found in section NEPO.




 

»touch sensor«

With the block »touch sensor« you can "tell" another block whether the touch sensor is pressed or not. This block returns the logical values true = pressed or false = not pressed. This block can only be used in conjunction with another block which requires a logical value as an input parameter, for example together with the »if then« block.

Settings:

  • Port, select the sensor port where your touch sensor is connected.
Return value:
  • Boolean value: »true«, if the touch sensor is pressed, otherwise »false«.

 




 

»get distance/presence« ultrasonic sensor

With the block »get distance/presence« you "tell" another block the distance the ultrasonic sensor measures. The distance is transmitted as a number (in cm). In addition, this block can be set to "presence" in the drop down menu. This setting can check whether another ultrasonic sensor is active. This setting specifies the logical values true = another ultrasonic sensor is present or false = no other ultrasonic is present back.

Ultrasound, which was not sent by the own ultrasonic sensor, can result in erroneous measurements.

Settings:

  • Presence or distance; »presence« means that the presence of another ultrasonic sensor will be checked. »Distance« means that the ultrasonic sensor measures the distance to the next obstacle.
  • Port, select the sensor port where your ultrasonic sensor is connected.
Return value:
  • If »presence« was selected, a boolean value: »true«, if another ultrasonic sensor was detected, otherwise »false«.

    If »distance« was selected, a number, indicating the distance between the ultrasonic sensor and an obstacle in cm.

 



 

»get colour« light sensor / colour sensor

With the block »get colour« you can "tell" another block which color the light sensor measures. The color is transmitted as type »colour« . In addition, this block provides within the drop down menu the settings »light«, »RGB« and »ambient light«. These three additional settings transmit all the same type »number«. The numerical values are between 0 (black) to 100(white). With these various settings this block can be configured according to the specific requirements.

In mode »colour« the light sensor emits light and detects the basic colour under the sensor. Values for basic colours are BLACK, WHITE, GREY, RED, GREEN, BLUE, YELLOW, BROWN.

In mode »light« the light sensor emits light with its red LED and measures the light intensity of the reflected light on a scale of 0 to 100.

In the mode »RGB« the light sensor emits red, green and blue light and measures the reflected light corresponding to the components red, green and blue on a scale from 0 to 100 for each color. A list of three numbers is returned.

In mode »ambient light« the same scale (0-100) as in the mode light is used. Here, the ambient light inciding the sensor is measured.

Settings:

  • Mode of measurement, select the mode of measurement.
  •  Port, select the sensor port where your light/colour sensor is connected.

Return value:

  • Value, depending on the selected ode of measurement.

 




 

»give distance/presence« infrared sensor

With the block »give distance/presence« for infrared sensor you can "tell" another block which distance the infrared sensor measures.

Working in the "distance" mode the distance is transmitted as a number with values between 0 (very close) and 100 (far away). In this mode the sensor detects objects in a distance up to 70 cm.

In addition, this block can be set to "presence" mode in the drop down menu. With this setting you can check whether an infrared sender/beacon is active. This setting returns a list of 4 pairs of values, i.e. 8 numbers. Each pair of values indicates an orientation value and a distance value of the infrared sender. The first pair of values is related to channel 1 of the sender, the second pair to channel 2 etc. Orientation values are between -25 and +25. The value of 0 indikates that the infrared signal comes directly from the front. Values out of the -25/+25 range represent angles of 110° to the left or right, respectively. The distance value of the sender is a relative value between 0 (very close) and 100 (far away). Infrared signals may be detected from a maximum distance of 200 cm.

Example: Result of an infrared sensor measure is [ 0 0 -10 40 0 0 0 0 ]. This means that on channel 2 the direction of the sender/beacon gives a value of -10, which is about 60 degrees to the left, while the distance value of 35 has been found, which represents nearly 70 cm.

An exact measurement of distances in cm is not possible with the infrared sonsor.

Settins:

  • »Distance« or »presence«. Select the measuring mode for the infrared sensor.
  • Port, select the sensor port where your infrared sensor is connected.

Return value:

  • »Distance« mode: number indicating the distance in cm, maximalum distance is 70 cm.

    »Presence« mode: list of numbers.

 




 

»reset encoder«

With the block »reset encoder« the internal sensor (motor encoder) of a motor can be reset to 0 .

Setting:

  • Port, select the sensor port where your motor is connected.
    

 




 

»get rotation/degree« rotation sensor

With the block »get rotation/degree« you can "tell" another block the rotation of the motor. The distance is transmitted as a number (in cm). In addition, this block can be set to »degree« in the drop down menu. With this setting the number of degrees is transmitted instead of cm. This block can only be used in conjunction with another block, which requires a number as an input parameter.

Settings:

  • Measurement mode, »rotation«, »degree« or»distance«. Select your mode of measurement.
  • Encoder port, select the sensor port where your motor/encoder is connected.
Return value:
  • Number, that indicates according to the measurement mode the number of rotations, the degrees, or the distance in cm.

 




 

»button« EV3 buttons

With the block »button« you can "tell" another block whether the selected button is pressed or not. Available buttons are »enter« / »up« / »down« / »left« / »right« / »escape« / »any«. This block returns logical values true = pressed or false = not pressed.

Settings:

  • Button, select the button you want to check.
Return value
  • Boolean value, »true«, if the selected button has been pressed, »false« otherwise.

 




»reset gyroscope«

With the block »reset gyroscope« the gyroscope (also called gyro sensor) can be reset to 0.

Settings:

  • Port, select the sensor port where your gyroscope is connected.

 




»get angle/rate« gyroscope

With the block »get angle/rate gyroscope« you can "tell" another block the angle in which the gyro sensor was rotated around its vertical axis. The angle is transmitted as a number. Alternatively the return value can be set to »rate« in the drop down menu. This setting allows to send the rotation rate of the sensor in "degrees per second" instead of the angle.

In mode »rate« a maximum of 440 degrees/second can be captured. In mode »angle« the accuracy of the gyro sensor is +/- 3 degrees.

Settings:

  • Measurement mode: »angle« oder »rate«
  • Port, select the sensor port where your gyroscope is connected.
Return value:
  • Number, depending from the mode of measurement an angle in degrees or the rate of turns per second.

 




»get value« timer

With the block »get value« you can "tell" another block the current time in milliseconds of the internal timer. 5 timers are available.

Setting:

  • Timer number, select the timer you want to read.
Return value:
  • Number, milliseconds since program start or since the last reset of the selected timer.

 




»reset timer«

With the block »reset timer« the internal timer (1 to 5) can be reset to the value 0.

Setting:

  • Timer number, select the timer you want to reset.

 




 

Control

The category "control" includes blocks with which the program sequence can be controlled. The category includes the following blocks:

  • if do
  • if do else
  • repeat indefinitely
  • repeat n times
  • repeat while/until (Expert block)
  • for each item in list (Expert block)
  • count with from to (Expert block)
  • break out/continue with next iteration of loop (Expert block)
  • wait
  • wait until


 

 

»if do«

With the block »if do« you can selectively trigger actions to be executed by your robot. The »if do« block therefore requires a logical value as an input parameter, the condition. Only if the condition of the »if« statement is true, the inserted block will be executed. In a nested »if do« block, if a further distinction was added, the first »if« condition is queried. If it is not fulfilled (condition = false), the second »else if« condition will be checked. Also this second condition requires a logical value as an input parameter.

The conditions may arbitrarily be expanded by clicking the "+" plus symbol. The "-" minus symbol reduces the block.

Settings and input values:

  • Insert an additional condition.
  • Delete the last condition.
  • Boolean value, »true« or »false«.
  • Blocks that will be executed.
  


 


 

 

»if do else«

With the block »if do else« you can selectively trigger actions which are executed by your robot. The »if do then« block therefore requires a logical value as an input parameter. If the condition in »if« is true the  inserted block will be executed, otherwise (condition is not fulfilled = false) the block connected to the »else« statement will be executed. In a nested »if do else« block with further distinctions added, the first  »if« condition is queried. If it is not true, the second condition »else if«  is checked. Also the second condition requires a logical value as an input parameter. Only when both conditions are not true, the block which is inserted at the »else« statement will be executed.

The conditions may arbitrarily be expanded by clicking the "+" plus symbol. The "-" minus symbol reduces the block.

Settings:

  • Insert an additional if-do-else condition.
  • Delete the last if-do-else condition.
  • Boolean value, »true« or »false«.
  • Do blocks that will be executed if the according condition evaluates to »true«.
  • Else blocks that will be executed if the according condition evaluates to »false«.



 

 

»repeat indefinitely«

With the block »repeat indefinitely« you can endlessly run the blocks on your robot. All blocks which are within the »repeat indefinitely« block will be executed endlessly. The blocks are applied sequentially from top to bottom. Once the last block has been executed, the program repeats with the first block again. Therefore, this block is also called »loop«.

Input:

  • Blocks to be repeated indefinitely.



 

 

»repeat n times«

With the block »repeat« you can run other block as many times as you like. All blocks in the »repeat« block will be executed as often as defined in the entry field. The blocks are applied sequentially from top to bottom. Once the last block has been executed, the program repeats with the first block again. Therefore, this block is also called »loop«.

Only integer values can be entered.

Settings and input:

  • Number that indicates how often the contained blocks will be repeated.
  • Blocks to be repeated as often as defined.


 


 

 

»repeat while/until« [Expert block]

With the block »repeat while/until« you can run other block as many times as you like. All blocks in the »repeat while/until« block will be executed as long as the condition in the entry field is true. The blocks are applied sequentially from top to bottom. Once the last block has been executed, the program repeats with the first block again if the condition is still true. Therefore, this block is also called »conditional loop«.

 

Settings and input:

  • »while« or »until«, defining the type of the conditional repetition.
  • Boolean value, »true« or »false«.
  • Blocks that will be repeated while/until the condition evaluates to »true«. 


 


 

 

»for each item in list« [Expert block]

With the block »for each item in list« all list items will successively be bound to a variable. The variable can be used within the loop. With each loop cycle the next item of the list will be bound until all list elements have been processed.

Settings and input value:

  • Type of list elements, »Number«, »String«, »Boolean«, »Colour«, »Connection«
  • Variable, name of free choice; list elements will be delivered one after the other to the variable.
  • List  that contains elements of the desired type. If the list elements are not of the correct type then the list will not fit to the input slot.
  • Blocks which will be executed as often as there are elements in the list.


 


 

 

»count with from to« [Expert block]

With the block »count with from to« you can run other block as many times as you like. All blocks in the »count with from to« block will be executed as long as the counting is in progress. The blocks are applied sequentially from top to bottom. Once the last block has been executed, the program repeats with the first block again if the counting is in progress. The last parameter declares the step width for counting.

Settings:

  • Variable, name of free choice; numbers of the counter will be delivered one after the other to the variable. 
  • Number, initial value of the counter.
  • Number, final value of the counter. As the counter exceeds this value the loop ends.
  • Number, defining the increment. The variable value will increase by this amount after every loop cycle.
  • Blocks that will be executed in every loop cycle.



 

 

»break out/continue with next iteration of loop« [Expert block]

With the block »break out/continue with next iteration of loop« a loop can be terminated ahead of schedule. As soon as the block is entered within a sequence of blocks, all further blocks up to the end of the loop will be ignored.

Settings:

  • Type of breaking behavior, »break out« or »continue with next iteration«.
 

 


 

 


 

 

»wait«

With the block »wait« you can "pause" your program at the point where you inserted the »wait« block. Your program will then remain for the specified duration at this point. After the specified time the next block will be executed. For example you can display text in the screen of your robot for exactly the time you specified in the »wait« block.

Settings:

  • Number, waiting time in milliseconds.



 

 

»wait until«

With the block »wait until« you can "stop" your program at the point you insert the »wait until« block. Your program then waits until the condition is true. The »wait until« block you can extended by click on "+" symbol. Your program then waits until (at least) one of the condition of your »wait until« block is true.

Settings:

  • Add a new condition.
  • Delete the last condition.
  • Boolean value, »true« or »false«.


 

 



 

Logic

With the »logic« blocks you can "create" conditions. With this condition you can interrelate states, values, and events with each other.

The following »logic« blocks are available at NEPO :

  • comparison
  • and/or
  • not (Expert block)
  • true/false
  • null (Expert block)
  • test (Expert block)


 

 

»comparison«

With the block »comparison« you can compare different parameters of the same type (number, color, logical value, text). This block can only be used in conjunction with another block which requires a logical value as an input parameter.

Settings and input values:

  • Value for the left hand side.
  • Comparison, select one of =, ≠, <, ≤, >, ≥
  • Value for the right hand side.

Return value:

  • Boolean value, »true« or »false«.

 


 

 

»and/or«

With the block »and/or« you can interrelate logical values with each other. The »and/or« block with the setting "and" will be true only if both logical parameters are "'true"'. If the block has the setting »or« it is sufficient if one of the two parameters is "true", so that the »and/or« block will return true.

Settings:

  • Boolean value on the left hand side.
  • Boolean function, »and« or »or«.
  • Boolean value on the right hand side.
Return value:
  • Boolean value »true« or»false«.
  •  

     



     

     

    »not« [Expert block]

    Using the »not« lets you invert a logical value and pass this value to another block.

    Input value:

    • Boolean value, to be inverted.
    Return value:
    • Boolean value, »true« or »false«; result of inverting.


     


     

     

    »true/false«

    With the block »true/false« you can return either the logical value »true« or »false« to another block.

    Settings:

    • Boolean value, make your choice.
    Return value:
    • Boolean value, »true« or »false«.



     

     

    »null« [Expert block]

    The block »null« is a place holder for an input value that is not yet specified. If for instance a new connection variable has been created and is not yet bound, the initial value of this connection will be set to »null«.

    Input value: none

    Return value::

    • Boolean value, »null«.

     


     

     

    »test« [Expert block]

    Using the »test« block will perform a test and returns a value which depends on the test result.

    Input values:

    • Boolean value for the test; if no input value is given "true" will be assumed.
    • Arbitrary value, evaluated by a block.
    • Arbitrary value, evaluated by a block.
    Return value:
    • Value of arbitrary type.




     

    Math

    Using »Math« blocks offers calculations and parameter settings.

    The following »Math« blocks are available at NEPO:

    • parameter
    • calculating
    • mathematical function (Expert block)
    • trigonometric function (Expert block)
    • constant (Expert block)
    • number property (Expert block)
    • change by x (Expert block)
    • round (Expert block)
    • list evaluation (Expert block)
    • remainder of (Expert block)
    • constrain (Expert block)
    • random integer (Expert block)
    • random fraction (Expert block)

     


     

     

    »parameter«

    With the block »parameter« you can send numbers to another block.

      Settings:

    • Number

    Return value:

    •  Number



     

     

    »calculating«

    With the block »calculating« you can sum up, subtract, multiply, and divide numbers. This block can only be used in conjunction with another block which requires a number as an input parameter.

    Settings and input values:

    •  Number
    •  Mathematical operator, choose one of +, −, ×, ÷, ^
    • Number
    Return value:
    •  Number, result of the calculation.


     


     

    Degree and radian measure

    In standard blocks of Open Roberta, especially along with the actions »turn… by x degree« and in the sensor block »get angle gyrosensor …« the angles will be represented in degree (0° ... 360°). The unit is called degree and will be represented by the Symbol °. 90° represents a right angle, 180° a half circle or a turn around, and 360° represents a full circle.

    The trigonometric functions in the expert mode, like sin, cos, tan, ... the input parameters will be expected to be given in radian measure. The unit is called RAD. A right angle is represented by π/2, the half circle or turn around is π, and the full cirle is 2π.

    To convert degree (°) into radian measure (RAD) or vice versa  you may use the following calculations:

    • degree to radian measure: (x degree / 180) * π
    • radian measure to degree: (x RAD * 180) / π

     


     

     

    »mathematical function« [Expert block]

    With the block »mathematical function« some elementary mathematical functions may be calculated. Available functions are »square root«, »absolute«, »invert« (multiply by -1), »ln« (natural logarithm), »log10« (decadic logarithm), »e^« (exponential function), »10^« (base 10 exponent)

    Settings and input value:

    • Mathematical function, choose one.
    • Number to apply the function to.
    Return value:
    •  Number, result of the function application.


     

     


     

     

    »trigonometric function« [Expert block]

    With the block »trigonometric function« sine, cosine, tangent and their respective revers functions can be calculated. Input values are expected in radian measure(see hint above).

    Settings and input value:

    • Trigonometric function, choose one.
    • Number, in radian measure.
    Return value:
    •  Number, result of the trigonometric calculation.


     

     


     

     

    »constant« [Expert block]

    With the »constant« block some mathematical constant values are available: »π« (3,1415...), »e« (2,718...), »φ« (1,618...), »sqrt(2)« (1,414...), »sqrt(½)« (0,7071...), »∞«

    Settings:

    • Mathematical constants, choose one.
     

    Return value:

    •  Number, value of the selected mathematical constant. Infinity will return »infinity«.


     


     

     

    »number property« [Expert block]

    With the block »number property« you check whether a given number has a specific property: »even«, »odd«, »prime«, »whole«, »positive«, »negative«, »divisible by«.

    Input value and settings:

    • Number, the property of this input value will be checked.
    • Number property, choose one.
    • Number, evaluated from a block. The second input value is only required for the property »divisible by«.
    Return value:
    • Boolean value, »true« or »false«, depending on the selected property.



     

     

    »change by x« [Expert block]

    The block »change by x« increments a numerical variable by a defined value.

    Settings:

    • Variable name, which value is to be changed. Choose the variable to be changed.
    • Number, given by a block.


     

     


     

     

    »round« [Expert block]

    With the block »round« values may be rounded. Rounding will set the decimal places to 0. It depends on the value of the decimal places whether the block rounds up or down. You may also decide by settings to always round up or down.

    Settings and input value:

    • Type of rounding, choose a round mode.
    • Number, given by a block.
    Return value:
    • Number, rounded whole number, according to the round mode.



     

     

    »list evaluation« [Expert block]

    With the block »list evaluation« you may analyze a list.

    Settings:

    • sum - addition of all list values
    • min - smallest value in the list
    • max - largest value in the list
    • average - average of all list values
    • median - median of all list values
    • standard deviation - standard deviation of all list values
    • random item - one list value randomly selected

    Settings and input value:

    • Mode of list evaluation, choose one mode.
    • List of numbers
    Return value:
    • Number, calculated according to the selected list evaluation mode.


     

     


     

     

    »remainder of« [Expert block]

    The block »remainder of« calculates a divison and returns the remainder of the division.

    Input values:

    • Number to be divided (dividend).
    • Number, divisor.
    Return value:
    • Number, rest of the division.


     


     

     

    »constrain« [Expert block]

    The block »constrain« ensures that given boundaries will not be exceeded.

    Input values:

    • Number, that will be constrained.
    • Number, lower bound.
    • Number, upper bound.
    Return value:
    • Number, constrained by the lower and the upper bound.



     

     

    »random integer« [Expert block]

    With the block »random integer« you may generate random integer numbers within defined limits

    Input values:

    • Number, lower bound
    • Number, upper bound
    Return value:
    • Number, a whole random number from within the upper and lower bounds.


     

     


     

     

    »random fraction« [Expert block]

    With the block »random fraction« a random value between 0.0 and 1.0 is calculated.

    Return value:

    • Number, positive random value between 0.0 and 1.0.


     

     



     

    Text

    »Text« blocks perform simple operations on text strings.

    Available »Text« blocks in NEPO are:

    • Text
    • create text (Expert block)
    • append text (Expert block)

     

     


     

     

    »Text«

    The simple »Text« block creates a little text.

    Input value:

    • String, containing arbitrary characters.
    Return value:
    • String, containing arbitrary characters.



     

     

    »create text« [Expert block]

    The »create text« block compiles a text from different input parameters. Using the + sign will insert further input slots. All input parameters will be connected one after the other. Essentially the »create text« block converts an arbitrary input value into a text string.

    Input values:

    • Arbitrary values (numbers, text, logical values, colours)
    Return value:
    • String, containing arbitrary characters, compiled sequentially from all input values.


     


     

     

    »append text« [Expert block]

    The »append text« block will append some string to a given string, for instance to extend a message with a signature.

    Input values:

    • String, to which some other text will be appended.
    • String, that shall be appended.




     

    Variables

    The »Variables« blocks are used to create global variables of six different parameter types. The global variables store values which may be used at arbitrary positions in a program.

    Each variable has to be created prior to its use. Create a variable by clicking the »+« sign in the »start« block. Each variable has to be assigned a name and a parameter type. Further clicks on the »+« sign will create additional variables.

    The name of a variable has to be unique in a program.

    Settings:

    • Insert another variable.
    • Delete this variable.
    • Variable name, special characters and space sign are not allowed.
    • Variable type, »number«, »boolean«, »string«, »colour«, »connection«, »list number«, »list boolean«, »list string« oder »list connection«
    • Initial values, according to the variable type.
    These »Variables« blocks are available in NEPO:

    • set variable
    • get variable

     

    The name of a variable has to start with a letter. Variables names must not contain special characters (%_"!...). While entering a variable's name NEPO indicates whether the name is acceptable by changing the background color of the variable's name input field.

    • white background = acceptable name
    • red background = invalid name


     

     

    »set variable«

    Using the block »set variable« will assign a value to a variable. Depending on the variable type the value may be assigned by an input connector.

    Settings and input value:

    • Variable, which value is to be changed.
    • Value, new value for the variable, evaluated from a suitable block.



     

     

    »get variable«

    Using the block »get variable« returns the value of a variable to another block.The type of the output parameter is equal to the type that has been assigned to the variable in the »start« block.

    Settings:

    • Variable, that will be read. The value will not be changed by reading.
    Return value:
    • Value, stored in the variable.




     

    Lists [Expert blocks]

    A liste is a sequence of data (of identical parameter types) with elements in a fixed succession. Create a »list« type variable to make use of a »Lists« block. NEPO provides five different parameter types for lists: number, string, boolean, color and connection.

    NEPO provides the following »Lists« blocks:

    • create list
    • repeat element in list
    • length of
    • is empty?
    • find in list
    • get list element
    • set list element
    • get sublist

     


     

     

    »create list« [Expert block]

    The block »empty list« creates a list with no content.The block »list« generates a list with some predefined values.

    This block may only be used in the context of a »set variable« block.

    Using + or − enables you to extend or reduce the list at its end.

    Settings and input values:

    • List type, »Number«, »String«, »Boolean«, »Colour«, »Connection«.
    • Create further list element, append to the end of the list.
    • Delete list element at the end of the list.
    • Values, according to the list type. Here the input of initial values is possible.
    Return value:
    • Empty list or list, containing elements of the specified list type.



     

     

    »repeat element in list« [Expert block]

    The »repeat element in list« block generates a list of equal elements.  

    Settings:

    • List type, »Number«, »Boolean«, »String«, »Colour« or »Connection«.
    • List element, according to the selected list type. This value will be repeated in the list.
    •  Number, defining how often the list element will be repeated.
    Return value:
    • List of the specified list type, containing the specified number of equal elements.



     

     

    »length of« [Expert block]

    The »length of« block returns a value which is the lenght of the list given as parameter. An empty list has a length of 0.

    Input value:

    • List, evaluated by an appropriate block.
    Return value:
    • Integer, number of list elements.



     

     

    »is empty?« [Expert block]

    A list given as parameter will be checked whether it is empty.

    Input value:

    • List, evaluated by an appropriate block.
    Return value:
    • Boolean, either »true« or »false«.



     

     

    »find in list« [Expert block]

    A list is searched for an item. If the item is in the list, the list position will be returned. If the item is not in the list the result is -1.

    Settings and input values:

    • List, that will be examined.
    • Position of the occurrence, either »first« or »last«.
    • Value, list item to be found.
    Return value:
    • Number, indicating the position where the element was found in the list.
      Note: Counting list positions will start with 0.



     

     

    »get list element« [Expert block]

    This block accesses an item of a list. Depending on the settings this item may be altered.

    A list is given as parameter. Then a drop-down-list specifies what will happen to the list item under consideration.

    Settings:

    • List, that is under consideration.
    • Action for the element found: »get« reads the element and leaves it unchanged, »get and remove« reads the element and removes it from the list, »remove« just removes the element from the list.
    • Position of the element found: »#«, »# from end«, »first«, »last« or »random« .
    • Number, indicating the list position. This input value is not required if »first«, »last« or »random« was selected as position.
      Note: Counting of list positions starts with 0.
    Return value:
    • List element that has been found at the specified list position; »undefined«, if the list position does not exist.
      With selection of »remove« there is no return value; instead the list will be shortened by this list element.


    Select an action:

    Select an item position:


     

     

    »set list element« [Expert block]

    In a list given as input parameter one specified element will be replaced by a new value.

    Settings and input values:

    • List, that will be changed.
    • Action for the element found; »set« changes the element, »insert at« inserts a new element into the list.
    • Position for the element to be changed: »#«, »# from end«, »first«, »last« or »random« .
    • Number, indicating the list position. This input value is not required if »first«, »last« or »random« was selected.
      Note: Counting of list positions begins with 0.
    • List element, that will be set or inserted at the selected list position.



     

     

    »get sublist« [Expert block]

    From a list given as parameter a sublist will be created. The sublist contains all those elements that match the further specifications of the block.

    Settings and input values:

    • List to be examined.
    • Position, start of the sublist: »#«, »# from end« or »first«.
    • Number, indicating the list position. This input value is not required if »first« has been selected.
      Note: Counting of list positions starts with 0.
    • Position, end of the sublist: »#«, »# from end« or »last«.
    • Number, indicating the list position. This input value is not required if »last« has been selected.
      Note: Counting of list positions starts with 0.
    Return value:
    • List, a sublist of the same type as the given list.


    List position to start the sublist

    List position for the end of the sublist



     

    Functions [Expert blocks]

    With »Functions« blocks (in Java also called »methods« or »subprograms«) you may create more readable programs. NEPO offers some function blocks:

    • Function blocks with/without input parameters and no return parameter
    • Function blocks with/without input parameters and one return parameter
    • If block to be used within a function

    With elementary function blocks you may program simple and komplex functions which may be used by function calls. Each programmed function is available immediately as an additional block in the »Functions« category. Those are

    • Function calls with/without input parameters and without return parameter
    • Function calls with/without input parameters and also one return parameter

    Depending from the number of input and return parameters the selection of function blocks varies.

    A unique name is assigned by NEPO to each new function definition (doSomething, doSomething2, ...). This name may be altered. Overwriting of a defined function is not possible.

     

    Strictly speaking each of your programs starts with a function, the so called main function. In NEPO we called this »start« .


     


     

     

    Function block with/without input parameter and without return parameter [Expert block]

    In a function block with/without input parameter and without return parameter a sequence of program statements will be condensed. The input parameters will be determined by the local variables of the function block. Local variables may be generated by using the »+« sign of the function block. Local variables will not be initialized.

    If a function block contains an if-block the function may be terminated before reaching it's end.

    The function block is available in the »Functions« category immediately after its definition. Using function blocks improves the readability of complex programs.

    Settings:

    • Function name, no special characters and white spaces allowed
    • Generate new local variables, that will be assigned with the function call.
    • Delete the associated local variable.

    • The name of a function block has to start with a lower case letter. Special characters are not allowed in a function block name.
    • If the function block defines input parameters (local variables), all the parameter slots have to be occupied when calling the function.

    Example function with two local variables and no return parameter:

    Using the function in a program:


     

     

    Function block with/without input parameter and with return parameter [Expert block]

    In a function block with/without input parameter and with return parameter a sequence of program statements will be condensed. The input parameters will be determined by the local variables of the function block. Local variables may be generated by using the »+« sign of the function block. Local variables will not be initialized. After running through all the blocks of the function a value will be returned.

    If a function block contains an if-block the function may be terminated before reaching it's end. An alternative value may be returned by the if-block.

    The function block is available in the »Functions« category immediately after its definition. Using function blocks improves the readability of complex programs.

    Settings:

    • Function name, no special characters and white spaces allowed
    • Generate new local variables, that will be assigned with the function call.
    • Delete the associated local variable.
    • Data type for the return value; choose one data type.
    • Block, that returns a value of the defined data type.
    Return value:
    • Value of the defined data type, evaluated in an appropriate block.

    • The name of a function block has to start with a lower case letter. Special characters are not allowed in a function block name.
    • If the function block defines input parameters (local variables), all the parameter slots have to be occupied when calling the function.

    Example definition of a function to calculate the hypothenuse of a right triangle with two input parameters and one return parameter:

    Using the funktion in a program:

     

     


     

     

    If statement within a function [Expert block]

    The if statement within a function is of special importance. As the function sequence meets an if statement the validity of the condition will be checked.

    If statement within a function with return value:

    • If the condition evaluates to »true« the rest of the function will be ignored and the function terminates. The second input value of the if statement will be returned. A possibly defined return value of the function will be ignored. The return value data type is determined by the return data type of the function definition.
    • If the condition evaluates to »false« the sequence of the function blocks will be continued. The return value of the function will be returned after reaching the end of the function.

    If statement within a function with no return value:

    • An if statement within a function without return value has just the if statement as input parameter.
    • If the condition evaluates to »true« the rest of the function will be ignored and the function terminates.
    • If the condition evaluates to »false« the sequence of the function blocks will be continued.

    Settings and input values:

    • Boolean value, possibly evaluated by a condition.
    • Value of the specified data type.
    Return value:
    • Value of the specified data type.


     

    Example: If x > 5 the function terminates and returns "Winner" and there will be no movement of the robot. Otherwise the robot drives some distance and the function returns "Loser".



     

    Messages [Expert blocks]

    Two EV3 robots may exchange messages.

    Prerequisites:

    • Bluetooth has to be activated on the participating EV3 robots.
    • The OpenRoberta lab has to show the experts blocks.

    One of the involved robots establishes the connection to the other robot (expert block: connect to robot name). The other robot is waiting for a connection call (expert block: wait for connection). This works similar to telephone calls: A caller dials the number of a communication partner.

    When the connection is established the robots may exchange messages in both directions.

     

    If more than two EV3 robots are present the robot names have to be adjusted to ensure the unambiguous identification of the message recepient.

    ON the EV3 brick: System - Change Name

    The current version of leJOS (0.9.0-beta) is buggy regarding the connection of robots. An EV3 robot that initiates a communication connection (block: connect to robot name) does not reach the end-of-program mode because the connection will not be terminated. In this case the program has to be terminated manually by using the keystroke combination "ok + down".


     


     

     

    Connect to robot name [Expert block]

    A message interchange connection is initiated by an EV3 robot, like a telephone call that is initiated by the caller. You need to know the name of the communication partner.

    The connection between two EV3 robots is stored in a global variable of type "connection". As long as this global variable is valid the message connection is available.

    Step 1: Create a global variable of type "connection".

    Step 2: Enter the name of an EV3 robot that is partner of the message exchange.

    The connection variable of the communication partner will automatically be initiated by using the expert block "wait for connection" (see below). The connection variable will be initiated when the calling EV3 robot has established the connection by using the block "connect to robot name".

    Input value:

    • String, name of a robot to which a connection shall be started.
    Return value:
  • Connection object, bound to a global variable.

  •  

    Establish a connetion using a clobal connection variable:

     


     

     

    Data to send via connection [Expert block]

    A text message will be transferred using a global connection variable. The text message will be entered in a text block. To give the connection information to the EV3 robot the value of the global connection variable will be read.

    Currently only strings can be sent via bluetooth.

    Settings:

    • Message data type, »String«.
    • String, message to be sent.
    • Connection type, »Bluetooth«.
    • Connection variable, established for the connection.


    Example:


     

     

    Data received via connection [Expert block]

    A text message will be transferred using a global connection variable. The text message will be transferred into a text block. To give the connection information to the EV3 robot the value of the global connection variable will be read.

    Settings and input value:

    • Message data type, »String«.
    • Connection type, »Bluetooth«.
    • Connection variable, established for the connection.
    Return value:
    • String, content of the received message.


     

    Example:


     

     

    Wait for connection [Expert block]

    A message interchange connection is initiated by an EV3 robot, like a telephone call that is initiated by the caller. A robot that is called is waiting for a connection.

    The connection between two EV3 robots is stored in a global variable of type "connection". As long as this global variable is valid the message connection is available.

    Step 1: Create a global variable of type "connection".

    Step 2: The value of the connection variable is set to the expert block "wait for connection".

    The connection variable will be set when the calling EV3 robot has initiated the connection (see above: connect to robot name).

    Return value:

    • Connection object that may be stored in a connection variable.


     

    Example:


     

     

    • No labels