Studuino Programming Environment Manual

This manual explains the Studuino Programming Environment and how to use it. As the Studuino Programming Environment develops, this manual may be edited or revised.

Index 1. Robotist and Studuino Programming Environments .................................................. 1 1.1.

Overview and Features ............................................................................................ 1

1.2.

System Requirements.............................................................................................. 2

1.3.

About Studuino ........................................................................................................ 2

2. Introduction ............................................................................................................... 3 2.1.

Installing USB Device Drivers .................................................................................. 4

2.2.

Installing and Uninstalling the Studuino Programming Environment ...................... 4

3. Startup Screen .......................................................................................................... 5 4. Studuino Icon Programming Environment ................................................................. 7 4.1.

Overview and Features ............................................................................................ 7

4.2.

The Icon Palette ....................................................................................................... 8

4.3.

The Program Field ................................................................................................. 10

4.4.

The Attribute Field.................................................................................................. 16

4.5.

The Main Menu ...................................................................................................... 22

4.6.

Context Menus ....................................................................................................... 31

5. Studuino Block Programming Environment ............................................................. 32 5.1.

Overview and Features .......................................................................................... 32

5.2.

The Command Group Palette and Block Palette .................................................. 33

5.2.1.

About Block Programming .............................................................................. 33

5.3.

The Script Field ...................................................................................................... 44

5.4.

The Condition Field ................................................................................................ 44

5.5.

The Main Menu ...................................................................................................... 45

5.6.

Context Menus ....................................................................................................... 56

6. Troubleshooting ...................................................................................................... 57 6.1.

General Troubleshooting ....................................................................................... 57

6.2.

Studuino Icon Programming Environment ............................................................. 58

6.3.

Studuino Block Programming Environment ........................................................... 59

1. Robotist and Studuino Programming Environments 1.1. Overview and Features

Arduino compatible board

Studuino

Studuino Programming Environment

Artec Blocks

Create your robot by combining blocks and parts! Studuino is suitable for programming at any

Parts (motors, LEDs,

experience level

buzzers, and sensors)

Robotist is made up of Studuino, Artec blocks, parts, and the Studuino Programming Environment. Mix and match these different elements to make your own original robots! The programs you create in the Studuino Programming Environment allow you to control how your robot moves. The Studuino Programming Environment is designed so that even beginners can easily create advanced programs. Simply drag and drop the icons or blocks that control your robot into the Program Field. These programs are Arduino compatible. Programs created in the Studuino environment can be converted into Arduino language, which you can use to design even more advanced programs.

1

1.2. System Requirements Item

Specifications

OS

Windows XP (SP2 or later) / Vista / 7 / 8 / 8.1, Mac OS X, Raspbian

Processor (CPU)

Pentium 4, 2 GHz or higher (or equivalent) recommended

Memory

256 MB or higher

USB

USB2.0 port

Software

Microsoft .NET Framework 4.0 required (automatically installed with the Studuino software)

Display

XGA (1024×768) or higher

1.3. About Studuino This section covers the Studuino connectors used when making a robot. Black Black Gray





④ ①

Gray Black Black

⑦ ⑥

③ ① DC Motor connectors These connectors are for DC Motors. Up to two DC Motors can be connected. The connector names are M1 and M2. ② Servomotor connectors (multiple-pin digital connector) These connectors are for Servomotors. Up to 8 motors can be connected. The connector names are D2, D4, D7, D8, D9, D10, D11, and D12. When a Servomotor is connected, the signal wire (gray wire) must be on the inner side, as shown above.

2

③ Sensor/LED/Buzzer headers (multiple-pin analog connector) These 12-pin connectors are for sensors, LEDs, or buzzers. Each connector has 3 pins. The connector names are A0-A7. Any sensor (other than Touch Sensors or accelerometers) can be connected to connectors A0-A7. Touch sensors, LEDs, and buzzers can be connected to A0-A5. Accelerometers can only be connected to connectors A4 and A5. When a Sensor/LED/Buzzer is connected, the signal wire (gray wire) must be on the inner side. ④ Push-button switches Push-button switches are mapped to A0-A3. Sensor/LED/Buzzer connectors A0-A3 cannot be used with a push-button switch. ⑤ Reset switch This switch resets the board. Press this switch to restart Studuino when it is initialized but does not operate properly or the PC does not recognize it. ⑥ Power supply connector Connects to a power source. Sensors/LEDs/Buzzers/switches can use voltage supplied by USB, but DC Motors and Servomotors require power from the power jack. Connect a battery box to the power jack when USB is disconnected. ⑦ Communication jack (USB mini B) Connects to a cable for PC communication. The included USB mini-B cable can be replaced with a commercially available one. The following connectors or switches cannot be used at the same time: 

DC Motor connector M1 and Servomotor connector D2, D4



DC Motor connector M2 and Servomotor connector D7, D8



Push-button switch A0 and Sensor/LED/Buzzer connector A0



Push-button switch A1 and Sensor/LED/Buzzer connector A1



Push-button switch A2 and Sensor/LED/Buzzer connector A2



Push-button switch A3 and Sensor/LED/Buzzer connector A3

For example, you can’t use a DC Motor connected to M1 while a Servomotor is connected to D2 or D4. They may not work properly due to interference. Likewise using a Servomotor connected to D2 or D4 while a DC Motor is connected to M1 may cause the DC Motor to malfunction.

2. Introduction You'll need to install both USB device drivers and the Programming Environment

3

software to use the Studuino Programming Environment.

2.1. Installing USB Device Drivers You'll need to install device drivers before you program your Studuino with your PC. Read the Studuino Setup Guide (Installing the USB Device Driver) for instructions on how to do this.

2.2. Installing and Uninstalling the Studuino Programming Environment For details on how to install or uninstall the Studuino Programming Environment for Windows, Mac OS X or Raspberry Pi, please read Studuino Programming Environment (Installing Studuino Software).

4

3. Startup Screen

Only Windows users can open the Studuino Programming Environments using the Startup screen. See section 7. An Introduction to Mac OS X and Raspberry Pi for details on how to open the environment on those systems. You'll see the above screen when opening the Studuino Programming Environment on Windows. Read below for details. 

Icon Programming Environment Clicking on Icon Programming Environment will start the software and allow you to

make a program to control your robot. For more details on programming a robot using the Studuino Icon Programming Environment, see 4. Studuino Icon Programming Environment. 

Block Programming Environment Clicking the Block Programming Environment will start the software and allow you to

make a program to control your robot. For more details on programming a robot using the Studuino Block Programming Environment, see 5. Studuino Block Programming Environment.



Language Choose the Globe icon next to the Robotist logo to change the software language

5

to Japanese, English, or Chinese. 

Samples Movies, instructions, and files for robots made with Artec Blocks, Studuino, and

other parts. 

Manuals Manuals for the Studuino Programming Environment.



Exit Use this button to close the Studuino Programming Environment.

6

4. Studuino Icon Programming Environment 4.1. Overview and Features

Icon Palette

Program /Transfer Program Field

Attribute Field

The Studuino Icon Programming Environment is designed for creating programs to control your Artec robot by dragging and dropping icons into the Program Field. More detailed operations for each icon can be set in the Attribute Field. A full-fledged program can easily be created by using Test Mode (refer to Test Mode in 4.5. The Main Menu). Test Mode provides real-time control of your robot. You can also check sensor-input values with the Sensor Viewer (refer to Sensor Viewer in 4.5. The Main Menu). After creating a program, transfer it to your Studuino and execute it by clicking the (Transfer) icon. The control program can also be converted to Arduino language for editing using Arduino IDE (refer to Display Arduino Language in 4.5. The Main Menu).

7

4.2. The Icon Palette DC Motor

Buzzer

LED

Wait Servomotor Sensor

Motion

Repeat

Submenu

The Icon Palette contains icons used to control your robot. The Operation group contains robot action icons, the Sensor group contains icons that control sensor values, the Repeat group contains icons that control program loops, and the Submenu group contains icons that run submenu items. The following section explains the different types of icons in each group.



Operation Group The Operation group contains icons that control robot parts. Controls DC Motors

Controls Servomotors

Controls a single LED

Plays a melody

Plays a single note

Waits for a specified time

As shown below, when two DC Motors are connected to M1 and M2 as car wheels you can use icons to control the movement of your car. The wheels should be in front.

Connect to M2

Connect to M1

Forward

8

Forward

Backward

Left turn (F)

Left turn (B)

Right turn (F)

Right turn (B)

Rotation



Sensor Group In the Sensor group there are icons that use sensor values as conditions for robot

movements. Do not use sensor values as conditions for robot movements Use one sensor value as a condition for robot movements Use two sensor values as conditions for robot movements



Repeat Group The Repeat group contains icons that are used to repeat a part of the process. Repeat start



Repeat end

Submenu Group The Submenu group contains icons that run a specific process from a submenu. Run Submenu 1

Run Submenu 2

9

4.3. The Program Field

Drag & drop

Menu tabs

Operation

The Program Field is used to create robot control programs by dragging and dropping control icons into the Icon Palette. Each column is treated as one operation. Use the tabs at the top to switch between the Main menu, Submenu 1, and Submenu 2. 

Menu Runs in numerical order Repeat icon boxes



Operation icon boxes

Condition icon boxes

The Menu is used to create programs for your robot. You can program up to 24 actions. The programs you create are run in numerical order. The Menu, from top to bottom, contains boxes for Repeat, Operation, and Condition icons. Place Repeat icons in Repeat boxes, icons from the Operation or Submenu group in Operation boxes, and icons from the Sensor group in Condition boxes. 

Repeat Icon Boxes Icons from the Repeat group can be dragged and dropped into Repeat boxes.

Follow the steps below to set Repeat icons.

10

① Drop a Start Repeat icon in the loop box of the operation which you want to repeat.

② Drop an End Repeat icon in the Repeat box of the operation where you want the loop to end. Repeat segments will be enclosed in a purple rectangle.

③ After dropping ②, a Repeat Settings dialog box will appear where you can enter the number of times you want the loop to repeat. If you check Repeat indefinitely, the loop will repeat an endless number of times. ④

You have now made a loop. To change the number of times the loop repeats, click the End Repeat icon and the Repeat Settings dialog box will reappear.

11



Operation Icon Boxes Icons from the Operation and Submenu groups can be dragged and dropped into

Operation boxes. Submenu icons are used to execute operations set in Submenu

or

of the Program Field (see the Submenus section for details). Also, you can copy any icon in an Operation box by dragging and dropping it into an empty box. As shown below, copied icons will retain the attributes of their parent icons. Drag and drop

Attributes for #1

Attributes for #2

Copied icons retain the attributes of the parent icon



Condition Icon Boxes Moves the car forward

When a condition is set, it executes along with the A no condition icon is set automatically

operation in the same column

Conditions are modified in the Attribute Field

When an icon is dropped in an Operation box, a

no condition icon is created in the

Condition box automatically. By dropping an icon from the Sensor group into the Condition box, sensor input values can be used as conditions for the operation. Sensor or threshold values which are used for the condition can be set in the Attribute Field. Selecting a Sensor icon with a condition allows you to modify that condition in the Attribute Field. Refer to 4.4.

12

The Attribute Field for details on how to modify conditions for Sensor icons. The above picture shows a program which has an unconditional operation that makes the car move forward in box 1, but a conditional operation in step 2 that makes the car move backwards if value of the Light Sensor is less than 3. This operation will not run if the value of the Light sensor is greater than 3.



Submenus Placing a Submenu icon in the main menu will run operations in the Submenu

Operations Conditions

Smaller programs of up to 8 operations can be created in Submenus. When a Submenu icon is placed in the Main menu, programs created in the Submenu are executed in numerical order. Submenus contain Operation and Condition boxes. Operation group icons are placed in Operation boxes and Sensor group icons in Condition boxes.

13



Selecting and Placing Multiple Icons Multiple icons in the Program Field can be copied by selecting and dragging & dropping

them into another box. Click in the blue area outside the Operation, Condition, and Repeat boxes and your icon will change to

. Drag your cursor to create a selection box around the icons you want

to copy. Release the left mouse button once you have selected the icons and your cursor will return to normal. ★ Only Operation icons can be selected. Empty boxes and Submenu icons will not be included in your selection. Mouse cursor changes into a hand

Only Operation icons Selection box

can be selected

appears as a dotted line

Dotted line turns solid once selection has been made Mouse cursor returns to normal

14

Now drag the icons to a new space. Your mouse cursor will change to the first icon in the selection. Dragging the icons to another space will copy them. Dragging your cursor to a different menu tab will switch to that menu. Dragging the icons to boxes in a different menu tab will copy them there. ★ Copying Operation icons will also copy any Condition icons that you have set for them. Dragging Operation icons with no condition will set a

no condition icon for them.

Drag and drop Operation icons

Drag icons to a tab to switch tabs and drop them in an empty box

15

4.4. The Attribute Field

Selecting an icon will show its settings in the Attribute Field

Each Control icon has unique attributes. For example, a

Motion icon for a car

has information on speed, duration, and so forth. This information can be modified in the Attribute Field. When an icon in the Program Field is selected, the attributes of the selected icon are displayed in the Attribute Field where they can be changed. The following section explains attributes for different icons.



Motion Icon 1

Attribute

Description

Speed

Set movement speed from 0-10.

Time

Set movement time from 0.1 to 25.5 sec.

Brake

Use this setting to stop your robot. This is useful for when you need to make your robot stop at a certain place. With Brake set to OFF, your robot will run its program and coast to a stop. Use the OFF setting to help your robot smoothly transition between movements.

16



Motion Icon 2

Attribute

Description

Speed

Set movement speed from 0-10.

Rotation

Set a left or right turn.

Time

Set movement time from 0.1 to 25.5 sec.

Brake

Use this setting to stop your robot. This is useful for when you need to make your robot stop at a certain place. With Brake set to OFF, your robot will run its program and coast to a stop. Use the OFF setting to help your robot smoothly transition between movements.



DC Motor Icon

Attribute Connector

Description Sets which connector the DC Motor is connected to. Refer to Port Settings in 4.5. The Main Menu to see which connectors you can use.

Rotation

Sets the rotation direction (forward or backward).

Rotation

Sets the rotation speed of the DC Motor from 0-10.

Speed Time

Set movement time from 0.1 to 25.5 sec.

Brake

Use this setting to stop your robot. This is useful for when you need to make your robot stop at a certain place. With Brake set to OFF, your robot will run its program and coast to a stop. Use the OFF setting to help your robot smoothly transition between movements.

17



Servomotor Icon

Attribute Angle

Description Check the box for each motor and you can set an angle from 0 to 180 degrees in one degree increments. Refer to Port Settings in 4.5. The Main Menu to see which connectors you can use.

Speed



Set five levels of speed for the selected angles.

LED Icon

Attribute

Description

Switch

Turns the LED on or off.

Connector

Set the port of the LED. Refer to Port Settings in 4.5. The Main Menu to see which connectors you can use.



Buzzer Icon

Attribute

Description

Sound

Sets a note to play with a length of 0.1 to 1.0 seconds.

Connector

Set the port of the buzzer. Refer to Port Settings in 4.5. The Main Menu to see which connectors you can use.

18



Melody Icon

Attribute Compose

Description Add notes by scale and rests by selecting them and pressing the → button. A tempo of either 90, 120, or 150 can be selected. Each icon can hold eight notes and/or rests.

Connector

Set the port of the buzzer. Refer to Port Settings in 4.5. The Main Menu to see which connectors you can use.



Wait Icon

Attribute Time

Description Waits for a specified length of time. Set wait time from 0.1 to 25.5 sec.

19



Single Sensor Condition Icon

Attribute Condition

Description Set a condition threshold by using the combo box to choose a sensor connected to the Studuino, and select the type of condition (equality (=), inequality (< >), or range (|→←|, ←||→)). Ranges are open intervals and do not include the threshold numbers. The picture below shows the combo box and the sensors connected to the Studuino. Refer to Port Settings in 4.5. The Main Menu to see how the sensors will be displayed.

20



Dual-condition Icon

Attribute Condition

Description Set a condition threshold by using the combo box to choose a sensor connected to the Studuino, and select the type of condition (equality (=), inequality (< >), or range (|→←|, ←||→)). Ranges are open intervals and do not include the threshold numbers. A Dual-condition icon has an extra combo box for choosing an if/else statement. The picture below shows the combo box and the sensors connected to the Studuino. Refer to Port Settings in 4.5. The Main Menu to see how the sensors will be displayed.

21

4.5. The Main Menu 

File Menu Use the File menu to save and open files.



Open

Open a previously saved file. 

Save

Saves the program you're currently working on and overwrites the previous version. 

Save As

Saves the program with a specified name. 

Exit

Closes the Studuino Icon Programming Environment.



Edit Menu The Edit menu can be used to modify your program.

 Undo Undoes your last action. The software will remember the last 10 actions you've performed, including placing icons, inserting and deleting columns, and changing port settings.  Reset Removes all icons from the Program Field. 22

 Show Arduino Language Converts the program in your Program Field to Arduino language. The source code you export using this feature can be compiled and sent to your Studuino using the Arduino IDE.  Motor Calibration Use this feature to adjust the angles of your Servomotors and the speed of your DC Motors and save the settings to a file. Running this feature will start Test mode and open the Motor Calibration dialog box.  Servomotor Calibration When the dialog box opens, all angles for the connected Servomotors are set to 90 degrees by default. Entering an offset value from -15 to 15 degrees will set the angle for the corresponding Servomotor to 90 degrees + the offset value. Returns all offset values to 0

Enter offset values here

Watch your Servomotors and adjust the values until you get the correct 90 degree angle. Click OK when you have finished calibrating your Servomotors. Saved settings will be used for future programs.

23

 DC Motor Calibration Once the dialog has opened, click Rotate and the two DC Motors will begin rotating at their highest speed. Use the sliders to adjust the motors and make them move at the same speed. Clicking Stop will stop the motors and enable the OK and Cancel buttons again. Click OK. Saved settings will be used for future programs.

Click here and the motors will begin spinning at maximum speed.

Use the slider to adjust the speed of the motors.

 Port Settings

24

Opening Port Settings allows you to see the parts connected to your Studuino in the Studuino Icon Programming Environment. Clicking on this feature will show the Port Settings dialog box.

As shown in the picture below, this dialog box shows all Studuino connectors and switches on the Studuino. Check any which have a part connected to them.

Servomotor

Button

DC Motor

Sensor/LED/Buzzer

As described in 1.3. About Studuino, DC Motor connector M1 and Servomotor connectors D2 and D4, DC Motor connector M2 and Servomotor connectors D7 and D8, push-button switches A0-A3 and Sensor/LED/Buzzer connectors A1-A3 cannot be used at the same time. As these combinations also cannot be used at the same time in the Port Settings dialog, please uncheck one side while the other is active. For example, when using D2 and D4 for the Servomotor, the checkboxes for D2 and D4 would only 25

be available by unchecking M1 for the DC Motor. For an accelerometer, which uses two connectors, all of the corresponding connectors should be checked. Part Accelerometer

Connector Combination A4, A5

Connector combination when multiple connectors are used

When the checkboxes of the corresponding connectors under Connector Combination above are checked, the part connected to the Studuino will be displayed. Checking one box for a part which uses multiple connectors will automatically select the boxes for any other connectors it’s using.

When an accelerometer is selected with A4, A5 is selected automatically.



Run Menu 26

The Run menu allows you to link with your Studuino while making programs.



Transfer Transfer builds any program you've made and sends it to your Studuino. You can

also transfer programs by clicking on the

button between the Program Field and

Icon Palette. Make sure that your Studuino is connected to your PC via a USB cable before transferring your program. You'll see a status bar like the one to the right while your program transfers. This status bar will disappear once the program has transferred. Messages will also appear if there is a communication error between your PC and Studuino. See below for details on these messages. This message appears if communication between the PC and Studuino is interrupted during a transfer. The error that causes this message may cause the Studuino Icon Programming Environment to close without warning. Save your data and restart the software. This message appears when there is no connection between your PC and Studuino. If you see this message, check the connection between your PC and Studuino and try again.

This message appears when another

27

application is interfering with communication between your PC and Studuino. Close any applications which may be causing this error and try again. 

Run Run executes any program you've transferred.



Test Mode Click on Test or the

button between the Program Field and Icon Palette to start

Test Mode. You can use Test Mode to communicate with your Studuino and control parts in real time. Test Mode can be used to adjust icon settings in order to fine tune your robot. The table below describes each Test Mode icon. Icon Motion

Description Click on any Motion icon in the Program Field to see its movement settings.

DC Motor Click on any Motion icon in the Program Field to see its angle settings. You can Servomotor

also check angle settings in real time using the Attribute Field. ★ Changes to speed settings will not be recognized in Test mode.

LED

Changing LED settings will turn them on and off.

Buzzer

The buzzer will play notes when changed in the Attribute Field. Click on any Melody icon in the Program Field and the buzzer will play the

Melody

melody. Your robot will also play notes selected in the Attribute Field using its buzzer.

Make sure your PC and Studuino are connected before starting Test Mode. You will see a message like the one to the right when initializing Test Mode. This message will disappear once Test mode has started. Messages will appear if there is a communication error between the PC and Studuino when starting Test mode. See below for details on these messages. This message appears if communication between the PC and Studuino is interrupted when starting Test mode. The error that causes this message may cause the Studuino Icon Programming Environment to close without warning. Save your data using the dialog box.

28

This message appears when there is no connection between your PC and Studuino. If you see this message, check the connection between your PC and Studuino and try again. This message appears when another application is interfering with communication between the PC and Studuino. Close any applications which may be causing this error and try again. 

Sensor Viewer Open the Sensor Viewer by clicking the

button in the Attribute field. The

Sensor Viewer communicates with your Studuino, displaying the values of any sensor connected to the unit.

Shows the values for connected sensors.

Make sure your PC and Studuino are connected before opening the Sensor Viewer. When starting the Sensor Viewer you will see a similar status bar to the one that appears when initializing Test mode. This message will disappear once the Sensor Viewer has opened. Messages will appear if there is a communication error between the PC and Studuino when starting the Sensor Viewer. See below for details on these messages. This message appears if communication between the PC and Studuino is interrupted

29

when starting the Sensor Viewer. The error that causes this message may cause the Studuino Icon Programming Environment to close without warning. Save your data using the dialog box. This message appears when there is no connection between your PC and Studuino. If you see this message, check the connection between your PC and Studuino and try again. This message appears when another application is interfering with communication between the PC and Studuino. Close any applications which may be causing this error and try again. 

Help Menu The Help menu contains information about the Studuino Icon Programming

Environment.



About Studuino Icon Programming

Shows the version of the software you are currently using.

30

4.6. Context Menus Right-clicking on a box in the Program Field will bring up a context menu.



Delete Deletes an icon.



Delete a Column Removes a column and moves other columns to the left.



Add a Column Inserts an empty column.

31

5. Studuino Block Programming Environment 5.1. Overview and Features Command Group Palette

Drag & drop

Sensor Board

Block Palette

Script Field

Condition Field

The Studuino Block Programming Environment is a visual programming environment developed for Robotist. It is based on the Scratch programming environment developed by the Massachusetts Institute of Technology. Robot control programs can be created by dragging blocks from the Block Palette and attaching them to other blocks in the Script Field. It is possible to create high-level programs as advanced as ones written in other programming languages (such as C) because the blocks support standard programming elements such as branching, loops, and variables. You can also control your robot in real time using Test mode. Use Test mode to create a program while checking sensor values (using the Sensor Board), robot status, and more (see 5.5. The Main Menu). After you create your program, it can be transferred to Studuino and executed by clicking Transfer. The finished control program can also be converted to Arduino language for later editing (refer to Export Arduino Language in 5.5. The Main Menu). The Studuino Block Programming Environment is described below.

32

5.2. The Command Group Palette and Block Palette The Command Group Palette and Block Palette control blocks which are used for programming. These palettes can be viewed by clicking on their palette buttons. The Command Group Palette buttons and blocks which are displayed in the corresponding Block Palette are described below. Button Motion

Block Blocks which control DC Motors, Servomotors, buzzers, and LEDs Standard elements of programming such as

Control

branching, loops, functions and processing blocks

Sensing Operators Variables

Blocks which reference sensor values Blocks which control basic and advanced arithmetic and logic operators Blocks which control variables, lists, and processing for variables and lists

5.2.1. About Block Programming In the Studuino Block Programming Environment there are two kinds of Blocks, ones with notches on the top and bottom such as without notches such as

(process blocks) and ones and

(setting blocks). Process

blocks, used mainly for processing actions, are joined to create the programs that control your robot.

The DC Motor moves at top speed Blocks attach vertically

Blocks with rounded edges such as

for one second before stopping.

return values, and are used mainly

to modify the settings of other blocks. Hexagonal blocks such as

are used to set

33

conditions and modify conditional process blocks such as

.

Putting together a light sensor value

Creates a block which uses

block and a val blockProcess blocks Join

the sum of the light sensor and val blocks

Type 15 This operator checks

Setting a less than (