Blocks
This page contains basic info about jBlocks commands in Blocks mode. More about jBlocks can be found on the Environment page.
Group Basic
Start
Block Start is the most important block in every program and it is called immediately after the program starts.
Never-ending loop
The Never-ending loop block is used in the main part of the program. It doesn't allow the program being quit.
Printing values to console
Blocks Print, Print variable and Print without linefeed are used to print string or variable into console. It is useful for debugging and watching program operations.
The parameter is string to be printed. Strings are „quoted“. When we want to print variable or an expression, we have to insert extra quites and join string and expression by +. The following example:
prints content of variable promenna.
Comment
Block Comment is useful to store information and short notes about the program. Comments don't have any influence to the program, the program ignores them.
Delay loop
Current time in milliseconds
The block stores current time in milliseconds into an integer variable. When used in console mode the time is counted since midnight 1. 1. 1970 (UTC). hen used in jBotBrain II. program the time is counted since the program starts. It is necessary to hanle overflow (after reaching value 2 147 483 647 the time raises from -2 147 483 648).
Group Variables
Variable is used to store some value. We can create variables, write and read them. The jBlocks environment has three date types:
Datetype | Java equivalent | Example | Range |
---|---|---|---|
Integer | int | -5, 0, 42 | -2 147 438 648 .. 2 147 438 647 |
Byte | byte | -5, 0, 'A' (65) | -128 .. 127 |
Logical value | boolean | true, false | |
Floating point number | float | 0.00f, 42.207f | 1,4×10-45 .. 3,4×1038 |
Operations with numbers
Operations with numbers can be applied to integer and floating point number variables. Floating point number can be converted to integer using so-called casting. Casting float to int trims the part after floating point.
Operation | Explanation |
---|---|
+ | Addition |
- | Substraction |
* | Multiplication |
/ | Division |
% | Modulo (division remainder) |
++ | Increment 1 (Operation a++ adds 1 to variable a) |
– | Decrement 1 |
(int) | Casting floating point expression to int |
<< a >> | Bit shifts – (a << b) shifts number „a“ b bits left, (a >> b) shifts number „a“ b bits right |
Bit shifts examples:
Expression | Result | Before | After |
---|---|---|---|
8 >> 1 | 16 | 10002 | 100002 |
5 << 2 | 20 | 1012 | 101002 |
6 >> 1 | 3 | 1102 | 112 |
Advanced operations with numbers - Mathematical functions
The Java Math class contains usful mathematical functions such as sine, square root or logarithm. jBlocks allows calling of standard Java functions, so that we can use them for instance in numerical expressions.
To compute the sqare root of 4, you can use:
There can also be variable or another function in brackets instead of numeric constant (4). The value in brackets is called parameter. If there are more parameters than one, they have to be separred by commas.
Math class function results usually have to be casted to (int) or (float) depending on chosen datetype.
In the Math class there are also two constants: Math.PI and Math.E. The first one contains π value, the second one value of Euler constant e (the base of natural logarithm). These constant also have to be casted to (float) or (int).
Usage of mathematical functions can be found on Examples page.
Function | Explanation |
---|---|
abs(a) | Returns the absolute value of a. |
acos(a) | Returns the arc cosine of angle a. Angle in radians can be in range 0-PI. |
asin(a) | Returns arc sine of angle a. Angle in radians can be in range ←PI/2; PI/2>. |
atan(a) | Returns arc tangent of angle a. Angle in radians can be in range ←PI/2; PI/2>. |
ceil(a) | Rounds value a up. |
cos(a) | Returns cosine of angle a (angle in radians). |
exp(a) | Returns ea, where e is the base of natural logarithm. |
floor(a) | Rounds value a down. |
IEEEremainder(a, b) | Computes remainder using IEEE 754 standard. |
log(a) | Returns natural logarithm (base e) of a. |
max(a, b) | Returns the smaller of two values a, b. |
min(a, b) | Returns the greater of two values a, b. |
pow(a, b) | Returns a raised to the power of b (ab). |
random() | Returns random number higher than or equal 0.0 and lesser than 1.0. |
round(a) | Rounds value a (returns the closest integer value). |
sin(a) | Returns sine of angle a (angle in radians). |
sqrt(a) | Vrátí square root of a. |
tan(a) | Returns tangent of angle a (angle in radians). |
toDegrees(a) | Converts angle a from radians to degrees. |
toRadians(a) | Converts angle a from degreees to radians. |
Bitwise operations
Bitwise operations can be used with logical expressions or in conditions. Instead of true and false there are 1 and 0 values in tables for better readibility. They can be grouped using brackets as well as operations with numbers.
! Negation:
A | !A |
---|---|
1 | 0 |
0 | 1 |
&& Bitwise AND:
A | B | A && B |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
|| Bitwise OR:
A | B | A || B |
---|---|---|
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
^^ Bitwise exclusive OR (XOR):
A | B | A ^^ B |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
Set variable
Block Set variable stores value into variable. Variable name may contain characters a-z, A-Z and 0-9 and mustn't begin with number. All identifiers (variabe and function names) are unique in a programme so we can not use the same name for logical and integer variable. If we do so, an error mesage appears.
Array
Array is a group of variables with the same datetype (Integer or Byte in jBlocks). The Create array blocks creates new array with n items.
The Set (array) command is used to store value into array on a given index. The index is a number in [brackets]. Indexing starts at 0. To read array value (e. g. in the Print command), use syntax array[0].
Array of bytes are useful when dealing with the Bluetooth interface.
Group Console
This grou is available only in the Console mode (program for PC).
Reads an integer from console and saves it into variable.
Reads float from console and saves it into variable.
Reads logical value from console and saves it into variable. The logical value is true if the number read from console equals to 1.
Clear the console. This function is available only for built-in console in jBlocks environment because the clear screen command is not platform independent.
Group Conditions
If
Commands placed inside the If block are run only id condition in If's parameter equals to true.
In conditions, following comparsion operators can be used:
Operator | Explanation |
---|---|
== | Equality (equals to) |
!= | Equality (does not equal to) |
< > | Relational (lesser than, greater than) - for numerical expressions |
<= >= | Relational (lesser than ir equals to, greater than or equals to) - for numerical expressions |
Else
The Else block must be placed directly after the If block. Commands placed in this block are run if the condition in the If block equals to false.
Cycles
The Repeat n times loop runs commands laced inside this block n-times. It is usable for running repeating operations, such as browsing array's content.
The While loop runs commands placed inside the block until the considion in parameter equals to true. Placing true into the condition results into a never-ending loop.
If you want to „jump“ from the cycle before the condition equals to false use the Break block.
Group Functions
A function is a group of commands, sub-routine, with its unique name. Function can be called from anz part of the programme or called as a background operation. They are useful to manage repeating routines such as turning all LEDs off, printing values etc. and to keep the programme clear.
The jBlocks environment does not use parameters as programming languages do. Instead of them just use variables since all variables defined in the programme are global, so that variable defined in the main loop can be accessed from any function.
Function
The Function block creates new function. For the function name there are same rules as for variable names - characters a-z, A-Z and 0-9 are allowed.
Call function
The Call function block runs selected function and waits until it finishes.
The Call function non-blocking runs selected function as a background operation (thread) so that the main programme does not have to wait until the function finishes. This is useful for LED blinking, reading buttons etc.
Timer
The Timer block calls selected function in given interval (milliseconds). This is useful for periodically repeating actions.
Return
Group LEDs and buttons
This group is avaliable only on the jBotBrain II platform.
Turn on, off and blink LED
Turns one of four LEDS (GREEN1, GREEN2, ORANGE, RED) on.
Turns selected LED off.
Blinks selected LED with interval in milliseconds.
Wait for button press
Save buttons
This block saves all buttons' value nto an integer variable. Every button has unique constant (if multiple buttons are pressed, the values are joined using bitwise OR):
Button | Value |
---|---|
S1 | 1 |
S2 | 2 |
S3 | 4 |
S4 | 8 |
Save button
The Save button block saves selected button's state into an logical variable. If the button is pressed, the variable esuals to true. Otherwise is the variable equal to false.
If button is pressed
This block extends the If block. Commands placed inside the block are run onl if the selected button is pressed.
Play tone
This non-blocking (programme does not wait until the tone is played) block plays selected tone for period in milliseconds.
Group I/O ports
This group is avaliable only on the jBotBrain II platform.
Read analog
This command reads voltage meassured by one of six analog inputs (0-5) into an integer variable. Voltage is read in millivolts (1000mV = 1V).
Read digital input/port
The Read digital input block reads logical level from one of six inputs (0-5) into a boolean variable. If there is a high level on the pin, true is read.
The Read digital port block reads state of whole digital port into an integer variable. Logical levels are saved into high six bits (1 = high level, 0 = low level).
Set digital otuput/port
The Set dgital output block sets logical level on selected digital output (0-7).
The Set digital port block sets logical levels on whole digital port. Everz digital output has its own bit (1 = hogh level, 0 = low level).
Counter
This command saves counter's frequency in Hertz (1 Hz = 1 s-1). Each digital inputs (0-5) can be used as a counter. The counter is usable with Optocoupler (SD 01).
This command saves counter's edge count into an integer variable.
The Reset counter blocks sets edge count to zero.
Group Motors
This group is avaliable only on the jBotBrain II platform.
Set servo
Sets servo connected to one of eight digital outputs to position represented by integer value in range 1-100% or 500-2500 ms (50% or 1500 ms is center position, 0% and 100% or 500 ms and 2500 ms are limit positions ± 90°).
Set motor speed
Sets speed of motor A or B. Speed is an integer value in range 0-100 where 100 is the maximal speed.
Set motor direction
Sets direction of motor A or B.
Hodnota | Otáčení |
---|---|
CLOCKWISE | Clockwise |
COUNTERCLOSKWISE | Anti clockwise |
STOP | Brake (motor shorted) |
STANDBY | Motor disconnected |
Set motors to standby mode
Group Sensors
This group is avaliable only on the jBotBrain II platform.
Tactile sensor
Saves state of a tactile sensor (SD 05 module) connected to one of 6 digital inputs into a boolean variable. Variable has true value if the sensor is pressed.
Conditional block extended from the If block. Runs commands placed inside this block if the tactile sensor is pressed.
Waits until the tactile sensor is pressed.
Potentiometer
Reads potentiometer shaft position (SA 01 module) in percent (0-100%) and saves it into an integer variable. The potentiometer is connected to an analog input.
Infrared rangefinder
Saves infrared rangefinder's (SA 03, SA 05 or SA 06 modules) distance in centimeters into a float variable. The rangefinder is connected to an analog input.
Temperature sensor
Saves temperature in °C read from temperature sensor (SA 04 module) connected to an analog input into a float variable.
Pressure sensor
Saves pressure read from pressure senro (SA 02 module) connected to an analog input into a float variable.
Ultrasonic rangefinder
Saves ultrasonic rangefinder's (SI module) distance in centimeters into a float variable. Distance is in range 5-100 cm.
Accelerometer
Reads acceleration on X, Y or Z axis from accelerometer (SI 01 module) and saves it into a float variable.
Gyroscope
Reads angle read on X, Y or Z axis from gyroscope (SI 06 module) and saves it into a float variable.
Resets accumulated angle value on X, Y or Z axis of gyroscope (SI 06 module).
RGB sensor
Saves color (R - red, G - green, B - blue) intensity read from a RGB sensor (SI 04 module) into an integer variable. Intensity is meassured in range 0-255.
Saves intensity of all colors into an array with 3 items:
Index | Color |
---|---|
0 | Red (R) |
1 | Green (G) |
2 | Blue (B) |
Calibrates the RGB sensor (SI 04 module).
Turns the LED on a RGB sensor (SI 04 mdule) on (true) or off (false).
Light sensor
Line sensor
Saves position read from a line sensor (SI 05 module) into integer variable.
Saves values read from a line sensor (SI 05 module) into an array with 5 items (indexed 0-4).
Calibrates black or white color sensed by the line sensor (SI 05 module) or resets to the default value.
Group Modules
This group is avaliable only on the jBotBrain II platform.
LCD display
Prints string onto a LCD display (MI 06 module).
Prints string onto the LCD without linefeed (usable for printing more values on a single row).
Clears LCD and moves carred on first line.
RGB LED
Stepper motor driver
Sets behaviour of stepper motor A or B connected to the driver:
- Direction: CLOCKWISE or COUNTERCLOCKWISE
- Speed: stepping frequency in Hertz (Hz), value 0 stops the motor
- Stepping: HALF (half steps) nebo FULL (full steps)
- Steps count: number of steps to be done or 0 for continuous rotation
Saves state of selected stepper motor into variable. The state is true if the motor has already reached given position.
Group Logic control
This group is avaliable only on the jBotBrain II platform.
Save coutner value
Assigns a falling/rising edge counter to a logical variable and saves edges count into integer variable count. The counter can be configured as incremental or encremental using + or - sign.
Reset counter
Timer
Starts timer TON, TOF or TP with delay in milliseconds. Timers are non-blocking, so the programme does not wait until they finished their operation.
TON | If there is a rising edge (true) on the input, timer's output is set to logical 1 (true) after the delay. If the input changes to logical 0 (false), the output changes to logical 0 (false) immediately. |
---|---|
TOF | If there is a falling edge (false) on the input, timer's output is set to logical 0 (false) after the delay. If the input changes to logical 1 (true), the output changes to logical 1 (true) immediately. |
TP | If there is an pulse on the input, timer's output is immediately set to logical 1 (true). The output is set back to logical 0 (false) after the delay. |
Group Bluetooth
This group is avaliable only on the jBotBrain II platform.
Sets the Bluetooth module power (value true means power on). The module must be on in order to use other functions in this group.
Senfds specified number of bytes (buffer.length for all items) using the Bluetooth interface. The array's date type must be Byte. It is possible to use integers (0, 1, 2, …) or character literals ('A' stands for 65, '
' equals to 32, …).
Receives given number of bytes (buffer.length for the maximum count) from the Bluetooth communication interface, saves them into specified array of Bytes and saves their count into given Integer variable. The variable's value is 0 if there is no received byte.
Sends string via the Bluetooth communication interface. This string is not terminated with new line character "\n"
, it has to be specified explicitly (e.g. "Hello, world\n"
).
Group Dashboard
This group is avaliable only on the jBotBrain II platform. It is used to interact with Dashboard panels.
Initialisation
Starts communication with the Dashboard. The initialisation must be done before first value is sent. The receiver mechanism uses Bluetooth interface and therefore the program should not contain any blocks from the Bluetooth group.
Sending values
Sends value as an integer, floating point number, logical value or a text string.
Sets RGB LED diode panel's color or color of given RGB LED matrix panel's pixel. The color can be also sent as a simple string in RRGGBB format.
Sets Buzzer panel's tone. The value sent is a numerical constant (same as constants in Java class jBotBrain2.hw.Sound).
Receiving values
Event caused by receiving value from given panel. This block's behavior is similar to function: following blocks are eveluated after value was received. The receiver runs as standalone thread, therefore it does not block the main program loop. But the event processing should not be too long (for example it must not contain any never ending loop), because it would block the receiver. The event is ideal for saving received value into a variable.
Saves currently received value into variable with specified date type (integer, floating point number or logical value) in order to use it in program. These commands can be used only in the Received value from panel event.
Saves currently received value into a byte array with one byte per character. This can be used for processing complex messages which does not contain just numerical or logical values (i.e. color format).