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

Programming with NEPO® follows a simple principle. The blocks are interconnected and executed by the robot according to their order. This principle is called »sequential operation«. Only blocks that are connected with each other are executed while running the program. The blocks that are connected together and to the start block are also called a sequence or  »task«.

To connect blocks with each other, they have sequence connections and/or connectors. Depending on the mode of a block, the number of the connectors may vary.

Programming with NEPO is really easy. Every program begins with the »start« block.

This block is always added by default in the Open Roberta Lab workspace. The first block that you will execute is connected with the  »sequence connector« of the »start« block. The sequence connector is a triangle at the bottom of the block and this triangle will become yellow as soon as a suitable block is in close proximity.

Transferring a program onto your senseBox

When you have finished your first program, of course you want to try it out. You have to transfer it to your senseBox. To do this you can follow the instructions below:

  1. First you have to set your senseBox to »transfer mode«. Press the red »Reset«button twice. The red LED next to the »Reset« button will dim.
  2. Now you can press the »Run on senseBox« button in the Open Roberta Lab.
  3. Now press »Save target as ...« and select your senseBox. Your senseBox will always log on to your computer as »SENSEBOX«.
  4. If you now press »save«, your program will be transferred to your senseBox and you are done.
    1. You can tell that the transfer was successful by the green LEDs of your senseBox starting to light up again. Otherwise repeat all previous steps.


NEPO is the name of our graphical programming language. It is easy and fun to learn programming. NEPO can also be used to program and interact with other robot systems.

Perhaps NEPO seems familiar to you. When designing NEPO we were inspired by existing concepts from scratch and blockly.

The graphical NEPO blocks have different components and thus different attributes. A block always represents a certain functionality. Its function can easily be determined by its block category, for example »sensors« . Features of the graphical blocks are:

Selection Menu

In the selection menu you can choose between different functions for the block, such as in block »drive« between forward and reverse.

Sequence connection

The blocks are interconnected using the sequence connection. A program consists of all interconnected blocks. The blocks will be executed according to their order, from top to bottom. A NEPO block can have more than one sequence connection.


Input - Parameter Input

Depending on the block different values can be passed to a block. The type of the value can be identified by the colored compounds (called »connectors« ) of a block. In the chapter »block catagory« you can see the different values a block can have. Blocks can only be connected when the colors of the input and the output connector match,.

Output - Return parameters

A block may optionally also pass a value (only one) to another block. These blocks have colored output connectors. Blocks can only be connected when the colors of the input and the output connector match.


By rightclicking a block its contextmenu can be opened.

Several actions can be performed, using the menu:

  • Duplicate (copys the block and connected input parameters)
  • Add comment (adds a comment to this block)
  • Inline Inputs (changes the appearance of the block)
  • Collapse Block (minimizes the block)
  • Disable Block (deactivates the block so that it won't be executed)
  • Delete x Blocks (deletes the selected and all connected blocks)


There are seven different input and output types within NEPO. These types are as follows:

  1. Logical value (light blue)
  2. Number (dark blue)
  3. String/Text (green)
  4. Color (yellow)
  5. List (purple)
  6. Connection (pink)
  7. Image (magenta

The type »List« can contain a Logical, Number, String or Color type

Block Categories (Beginner, Expert)

A block-category groups blocks which have similar functionality. For example, the block-category "sensors" contains all blocks which control the sensors of your robot.

The Open Roberta Lab offers two choices when selecting existing blocks:

  •     Beginner
  •     Expert

The selection "Beginners" is the default selection. This category includes the main program blocks  which are most important for programming a robot.

Choosing "Expert " includes the three additional block-categories "Lists", "Functions", and " Messages" and additional NEPO blocks in other block categories.

NEPO offers eleven block categories:

Block categoryBeginnerExpert




Programming Languages for Code Generation

Robot SystemProgramming Language
WeDoStackmachine JSON Code (It runs in the browser, editing is not recommended)
EV3lejos 0.9.0, 0.9.1Java




EV3 c4ev3

Calliope mini ...


NXTC (NXC, not exactly C)
EdisonMicroPython (very limited)






Arduino C/C++

Arduino C/C++ is actually C/C++, but a somewhat reduced selection from C/C++.

MicroPython is Python for microcontrollers.

Block descriptions

You can find a detailed description of all available blocks here.

  • No labels