Fab Academy 2025

@ Fab Lab Rwanda, Kigali

Interface and Application Programming:

Interface and Application Programming


Group assignment: Team Botswana-Lesotho

The requirement of this group assignment is to compare as many tool options as possible for creating interfaces and applications for our development board. The team is expected to document their work on the group work page, showcasing the process and results. Additionally, each individual is required to reflect on their personal page about what they learned during the assignment.

What is Interface and Application Programming

Interface and application programming involves creating software that allows users to interact with hardware devices. This includes designing graphical user interfaces (GUIs), command-line interfaces (CLIs), or other forms of interaction that enable communication between the user and the hardware. The goal is to make the hardware more accessible and functional for specific tasks or applications.

For this assignment, the focus was on developing interfaces and applications for our custom development board. This required understanding the board's capabilities, programming its microcontroller, and designing software that could effectively communicate with it.

Tools for Interface and Application Programming

There are various tools available for interface and application programming, each with its own strengths and weaknesses. Some of the tools explored by the team include:

Processing GUI Example

An example of a GUI created using Processing

The Work We Did

As part of this assignment, the team explored multiple tools to create interfaces and applications for the development board. Each tool was evaluated based on its ease of use, compatibility with the board, and the features it offered. The results of these evaluations were documented in detail, highlighting the strengths and weaknesses of each tool.

For example, Processing was used to create a simple GUI that could send and receive data from the development board via serial communication. MIT App Inventor was used to create a mobile app that could control the board's outputs using Bluetooth. Python with Tkinter was used to create a desktop application for monitoring sensor data from the board in real-time.

The team also conducted experiments to test the interfaces and applications with the development board, ensuring that they worked as intended and provided a seamless user experience.

Processing

To begin with, we downloaded Processing from its official website. You can find the download link here. Below is an image of the Processing download page:

Processing Download Page

Processing Download Page

After installing Processing, we proceeded to create a GUI. To enhance the GUI creation process, we installed a library called ControlP5. This library provides a set of GUI components such as sliders, buttons, and text fields that can be easily integrated into Processing sketches.

We followed a tutorial from this YouTube video to guide us through the process. Below are the steps we followed to install the ControlP5 library in Processing:

  1. Open Processing and navigate to the menu bar.
  2. Click on Sketch > Import Library > Add Library....
  3. In the Library Manager, search for ControlP5 in the search bar.
  4. Select the ControlP5 library from the search results and click the Install button.
  5. Wait for the installation to complete. Once installed, the library is ready to use in your sketches.

After installing the library, we created a simple GUI using Processing. Below is an image of the GUI we created:

Processing GUI with ControlP5

Processing GUI with ControlP5

Conclusion

Through this assignment, the team gained valuable insights into the process of creating interfaces and applications for hardware devices. The hands-on experience with different tools helped the team understand their capabilities and limitations, as well as the importance of designing user-friendly interfaces. This knowledge will be useful for future projects involving hardware and software integration.

Instructor

Contacts

  • Map
  • +250 781 187 555