Introduction: ELEGOO Kit Lab or How to Make My Life As a Developer Easier

About: I spent my career in computer networks. Now retired I am interested in topics that work my neurons. I am passionate about home automation and site administration that I host at home. I acquired skills in the f…

Objectives of the project

Many of us have problems with the mock-up around the UNO controllers. Often the wiring of components becomes difficult with many components. On the other hand, programming under Arduino can be complex and can require many lines of code. The project described here should make the mock-up much easier. This project is based on and uses almost 80% of the components of the "ELEGOO Super Starter Kit UNO R3".

The objectives of this project are:

- The creation of a technical bus allowing the simultaneous use of up to four breadboards.

- The creation of a reference program used as a basis for numerous assemblies.

- The creation of functions facilitating the readability of the programming.

- The assembly of the LCD display in I2C.

All the project files can be downloaded here.

Step 1: The Prototyping Bus

The components:

  • Multi-stranded ribbon cable of 40 conductors (35cm).
  • Connectors for 40-pin flat cable (5).
  • 40-pin male-male PCB connector.
  • Optional half-size breadboards (2).

From the ELEGOO kit:

  • The controller board.
  • The extension board.
  • Breadboards (2).

The assembly is simple to carry out:

Mount the five connectors on the flat cable. Four connectors will be fixed with the connector part facing up and one connector with the connector part facing down. This connector will later be plugged onto the expansion board.

Mount the two PCB connectors in parallel on the expansion board to receive the connector of the ribbon cable.

Solder the pins on the underside of the board to the input/output pins of the UNO extension connectors.

Plug the expansion board onto the UNO controller and then plug in the ribbon cable connector.

After mounting, all signals from the controller board will be available on the four connectors of the flat cable.

The result is an extension bus that can accommodate up to four breadboards as shown in the image.

A certain number of pins will be unconnected on the extension board (I wrote them down in lower case letters) and are available. They can be used to connect circuits between the breadboards.

Step 2: First Assembly: the LCD Display in I2C

The LCM1602/HD44780 LCD display has many links. Its direct connection to the UNO controller reduces the possibility of connecting other components.

That is why I added a PCF8574 chip to reduce the number of links to 2 using the I2C protocol.

The components:

  • A 16-pin male-to-male PCB connector.
  • A 2x8cm ELEGOO solder board
  • A PCF8574 chip.
  • A 4-pin connector with its PCB part.

The components of the ELGOO kit:

  • The LCD display
  • The 10k potentiometer

The assembly:

The assembly is tested on the prototyping bus and then welded on the soldering plate. This display can easily be added for simple use in other projects.

Step 3: Programming

The objective of the program is to simplify the work when developing new projects.

The program is composed of several parts:

- The declarative part with the inclusion of libraries and constants. This fixed part will be common to all the tests of the various components. (B, C)

- The development part which contains the "setup" and "loop" sequences. (D)

- The functions part which groups three of them (A). These functions are described below.

The directory "0-My_ELEGOO_soft_build" contains five files that should be kept together in the same folder:

  • "0-My_ELEGOO_soft_build.ino".
  • "1-My_LCD_function.ino".
  • "2-My_IR_function.ino".
  • "3-My_Output_port_extension.ino".
  • "Some samples.rtf "

By opening the file " 0-My_ELEGOO_soft_build.ino " Arduino will also open the other files (.ino). All the files are displayed and could be modified.

The "Some samples.rtf" file contains some examples of simple programs that use the functions.

Step 4: Various Functions

The LCD control

The purpose of this function is to make it easier to display information on the LCD with a single command. This command will be used in the void setup and void loop sections. It also shows how to build a function.

This function is called by lcdw(par1, par2, par3, par4, par5) ;

  • par1 indicates the desired sub-function.
  • par2 indicates the line number on the display (0 or 1).
  • par3 indicates the column number on the display line (0 to 15).
  • par4 contains the text to be displayed.
  • par5 contains a numeric value to be displayed.

Examples are:

lcdw(0,0,0, "",0); initializes the display. Only this call will have to be placed in the void setup item.

lcdw(1,1,5, "HELLO WORLD",0); displays the text on the second line from position 6.

lcdw(1,1,5, "HELLO WORLD",25); displays the text "HELLO WORLD 25" on the second line from position 6. lcdw(1,0,0,""",25); displays "25" in the first line from position 1.

lcdw(2,0,0,"",0); clears the display.

This function is quite simple and can be completed according to your needs.

The infrared interface and its remote control

The purpose of this function is to facilitate the use of the infrared sensor with its remote control. This function is called by tst = IRrec(par1);

  • par1 indicates the desired sub-function. 0 to initialize the sensor, 1 to receive and decode the key pressed on the remote control. A text corresponding to the name of the key is returned in the variable tst

Increase in the number of digital doors

The objective is to use the 74hc595 chip to increase the number of digital output pins. The circuit uses 3 UNO pins as input and offers 8 binary gates as output. We will use two functions. The physical connection diagram will be described in the next section.

The circuit consists of two registers with 8 positions (one register internal to the ino program and another contained in the circuit). The update is done in two steps. First of all, values in the internal register can be changed (using the setExtPin function). Then the internal register is copied into the circuit (using the Expin function).


  • Par1: 0 for initialization of the chip. 1 to set all the output gates to LOW. 2 to copy the internal register to the 74hc595 chip.

setExtPin(par1, par2);

  • par1: the number of the door to be changed (0-7).
  • par2: the desired door status (LOW or HIGH).

Step 5: Examples of BUS Use, Program, and Examples

To harmonize the elements described in this project I propose some examples.

These examples can be found in the file " Some samples.rtf ".

The wiring of the components is given by the diagrams above. The project has been designed to allow the simultaneous use of many components.

To use a model, you just must:

- Wire the desired components on the breadbord.

- Copy the relevant part of the "Some samples.rtf" file into the program part (D) and compile/upload it into the controller.

You will find that these templates do not have many lines of code. This is to make programming easier.

The program, when compiled, will only load the functions used. The output code is optimized.

On the other hand, the hardware bus with its ability to use several breadboards greatly facilitates assembly.

For this project all the components have been wired together on several breadboards. The LCD display was connected to the UNO expansion board.

This allows an easy combination and a quick assembly of the components. Thanks to the short wiring wires, the whole unit is visually appealing.

You can now give free rein to your imagination for the modelling of your projects.

Enjoy it!