Documentation / Concepts / Concepts


This page contains descriptions of the concepts and items that are part of the BrainBuilder Development Studio.

Development Studio areas

BrainBuilder Development Studio

Top menu bar

  • File: for saving and opening projects

  • Options: development board programmer type

  • Firmware: to generate the new firmware and flash it the development board

  • Cloud: to log in and out

  • Tools: to autodetect the port where the development board is connected to

  • Help: opens a browser with the documentation site

This is were the main folders (Project Info, Miscellaneous, Hardware, Logic, Screens) and their content are.

Here you’ll find a list of variables for easy reference. It is maintained automatically.

ToDo info area

This lists the next actions to do (if there are any). For example when starting a new project, the first thing to do is adding a development board. This will be shown here as a ‘to do’ item.


Block is a generic term used to represent a physical item, like a development board, sensor or LEDs, and also to refer to logical entities as variables and rules.

Project info

Project info is a space to make notes for yourself about the project. You don’t have to fill it in.


The Hardware folder contains all physical components of your project. One component that always should be added there is your development board. All inputs and outputs and outputs are added here. If you want, you can organize items in subfolders by adding a Folder.

Development board

Available development boards are: Arduino Mega, Nano, Uno. You can define more than one, but only one can be enabled.

Analog input

For reading from analog sensors

Digital input

To read a digital input

Digital output

Commonly used to switch something on or off, control a servo motor.


The LED probably doesn’t need an introduction, it’s an easy way to visually signal a status,

Hardware switch

For reading a button or switch. You don’t have to think about debouncing, that’s taken care of.


These are the logic components available


A rule specifies one or more actions, based on a condition. For example, switch on the heating if it gets cold. To switch ‘GreenLed’ on when the ‘Light’ level is less than 200, and off if the light level is higher than that, add a RuleBlock, name it ‘LedOn’ and the following rule:

if ( Light < 200 ) {
    Led = 1;
} else {
    Led = 0 ;

See: Rules


A blinker can be used to make a ‘blinking light’ or a buzzer or do any number of things. You can specify an interval of 5 milliseconds or more.

Global variable

A global variable can be read and set by all components. Set the type of variable as desired (from ‘bit’ to (un)signed 64 and float-16) When a value is read, the last value written to it is shown.

Screen definitions

Defining a screen (LCD) To define a screen, make sure to add a LCD display (in the Hardware folder).

A screen contains a list of screen items. Screen items can be ‘text fields’ and ‘variable fields’. Tip: if the screen doesn’t look as you expected, check if row and column positions are what they should be and that values fit in their fields. Using grid paper makes it easy to plan the layout.

Text field


A text string to display


The row position (starting with 0 for the top row) of the LCD screen


The column (starting with 0) position where the field should be displayed

Variable field

In addition to the attributes of the ‘text field’, the variable field also has


The variable that should be displayed, such as from a sensor


The number of positions the field must use.


For reporting data via USB.