Posted on — Leave a comment

Express a number in IEEE-754 single-precision floating-point format

Sign

0 = positive number
1 = negative number

Biased Exponent(E)

A bias of 127 is to be added to the exponent number.
The biased exponent can range from -126 to +128
Which can fit in 8-bit’s.

Mantissa(F)

There is a one-bit towards the left of the floating point.
It must be noted here that is the number is shorter than 23 bits in length. Zeroes are padded towards the right side. to fit in the 23-bit field.

Posted on — Leave a comment

IEEE-754 32-bit Single Precision Floating Point Representation

IEEE 754 format for the representation of 32 bit single-precision floating-point numbers
IEEE 754 format for the representation of 32 bit single-precision floating-point numbers

In an ARM Cortex, M4F processor-based microcontroller such as STM32L476vg; the floating-point number is stored in accordance to the IEEE-754.

In the above video, I have written a small code using IAR workbench. When I debugged the program using IAR. I have observed that the floating-point number is converted by the compiler into IEEE 754 format and it is being stored in S# registers of the STM32L476vg. Which are the register present in the FPU(Floating Point Unit) or VFP(Vectored Floating Point) unit.

If you want to go into details, here is the abstract

Abstract: This standard specifies interchange and arithmetic formats and methods for binary and decimal floating-point arithmetic in computer programming environments. This standard specifies exception conditions and their default handling. An implementation of a floating-point system conforming to this standard may be realized entirely in software, entirely in hardware, or in any combination of software and hardware. For operations specified in the normative part of this standard, numerical results and exceptions are uniquely determined by the values of the input data, sequence of operations, and destination formats, all under user control.

“IEEE Standard for Floating-Point Arithmetic,” in IEEE Std 754-2008 , vol., no., pp.1-70, 29 Aug. 2008, doi: 10.1109/IEEESTD.2008.4610935.

A great tool to have is the online IEEE 754 convertor

https://www.h-schmidt.net/FloatConverter/IEEE754.html

Posted on — Leave a comment

Arduino Uno I2C LCD Display Using Arduino IDE | In-Browser Code Uploader

The I2C LCD display is a simple way to show text, sensor readings, and status messages in Arduino projects while using only two communication pins. In this project, we will interface a 16×2 I2C LCD with an Arduino Uno and display text on the screen.

Using the In-Browser Flash feature, you can upload the program directly from your browser without copying the code manually.


Components Required

  • Arduino Uno
  • 16×2 I2C LCD Display
  • USB Cable
  • Jumper Wires

About the I2C LCD Display

A standard 16×2 LCD normally requires many Arduino pins. The I2C module attached to the LCD reduces the connection requirement to only four pins:

  • VCC
  • GND
  • SDA
  • SCL

This makes wiring simpler and leaves more pins available for other sensors and modules.


Circuit Connections

I2C LCD PinArduino Uno Pin
VCC5V
GNDGND
SDAA4
SCLA5

Circuit Diagram

Open circuit Open circuit

Arduino Code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
lcd.init();
lcd.backlight();

lcd.setCursor(0, 0);
lcd.print("Hello EXASUB");

lcd.setCursor(0, 1);
lcd.print("Arduino Uno");
}

void loop()
{
}

In-Browser Flash

Upload the program directly to your Arduino Uno using the button below.

How to use the In-Browser Flash button


How the Code Works

Include Required Libraries

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

The Wire library enables I2C communication, while the LiquidCrystal_I2C library controls the LCD display.

Create LCD Object

LiquidCrystal_I2C lcd(0x27, 16, 2);

This creates an LCD object with:

  • I2C Address: 0x27
  • 16 columns
  • 2 rows

Initialize LCD

lcd.init();
lcd.backlight();

The LCD is initialized and the backlight is turned on.

Set Cursor Position

lcd.setCursor(0, 0);

Moves the cursor to the first column of the first row.

lcd.setCursor(0, 1);

Moves the cursor to the first column of the second row.

Display Text

lcd.print("Hello EXASUB");
lcd.print("Arduino Uno");

These commands display text on the LCD screen.


Expected Output

After uploading the code, the LCD should display:

Hello EXASUB
Arduino Uno

Troubleshooting

LCD Shows Nothing

  • Check VCC and GND connections.
  • Ensure SDA is connected to A4.
  • Ensure SCL is connected to A5.
  • Adjust the contrast potentiometer on the I2C module.

LCD Displays Random Characters

The I2C address may be incorrect.

Most modules use:

0x27

Some modules use:

0x3F

Finding the I2C Address

If the LCD does not respond, use the following I2C Scanner sketch.

#include <Wire.h>

void setup()
{
Wire.begin();
Serial.begin(9600);

Serial.println("Scanning...");
}

void loop()
{
byte error, address;

for(address = 1; address < 127; address++)
{
Wire.beginTransmission(address);
error = Wire.endTransmission();

if(error == 0)
{
Serial.print("I2C device found at 0x");
Serial.println(address, HEX);
}
}

delay(5000);
}

Open the Serial Monitor to view the detected I2C address.


Applications

  • Digital clocks
  • Temperature displays
  • Home automation systems
  • Menu-driven projects
  • Sensor monitoring systems
  • Robotics projects

Conclusion

In this project, we learned how to interface a 16×2 I2C LCD display with an Arduino Uno and display text on the screen using only two communication pins. I2C LCDs are widely used in Arduino projects because they simplify wiring and provide an easy way to display information.

Use the In-Browser Flash button above to quickly upload the project and start experimenting with LCD displays.

Posted on — Leave a comment

3D Printed Right-Angle Friction Drive Using Cam and Follower

In this project we explore a simple but powerful mechanical idea:
how a rotating cam and a disc-type follower can be used to create a right-angle friction drive — without gears, belts, or electronics.

This entire mechanism is 3D printed and demonstrates how motion can be transferred purely through geometry and contact.


📹 Project Video

FreeCAD Rendering: 3D Printed Right-Angle Friction Drive

https://youtube.com/shorts/w_zL9D7RV9Q


🔧 What is a Right-Angle Friction Drive?

A right-angle friction drive transfers rotation between two shafts that are oriented at 90 degrees to each other using surface contact instead of teeth.

Instead of gears:

  • One rotating surface presses against another
  • Friction forces transfer motion
  • The driven part rotates because of rolling contact

This principle is used in:

  • Record players
  • Paper feeders
  • Conveyors
  • Machine tools
  • Old mechanical clocks

⚙️ How This Mechanism Works

This design uses:

  • A cam disc (rotating plate)
  • A flat roller follower (disc on a shaft)
  • A guided vertical shaft
  • A printed frame that holds everything in alignment

When the cam rotates:

  • It rubs against the flat follower disc
  • The disc rolls along the cam surface
  • That rolling causes the follower shaft to rotate
  • The top plate rotates smoothly as a result

Even though the axes are at right angles, rotation is transferred cleanly.

This is not gear action — it is rolling friction drive.


🧠 Why the Disc Rotates

The follower disc is mounted on a pin and is free to spin.

When the cam touches it:

  • The cam’s surface has tangential velocity
  • That velocity forces the disc to roll
  • Rolling motion turns into shaft rotation

This eliminates sliding friction and allows smooth motion.

In engineering, this disc is called a:

Roller follower


🛠 Why Use Friction Instead of Gears?

Friction drives have unique advantages:

FeatureBenefit
SmoothNo noise, no vibration
SafeSlips instead of breaking
SimpleNo teeth or alignment needed
Shock-proofOverload protection built-in

This is why friction drives are used in printers, CNC feeders, and audio equipment.


🧩 Mechanical Insight

By changing only the cam shape, this same rig can be converted into:

  • A rotary drive (as shown here)
  • A lifting cam
  • A pump
  • A stamping mechanism
  • A timing controller

The cam profile is mechanical programming.

Rotation in → Motion out.


🧪 Why 3D Printing is Perfect for This

3D printing allows:

  • Fast experimentation
  • Custom cam profiles
  • Swappable parts
  • Learning through real motion

This project shows that even with plastic parts, you can explore real kinematic systems used in industry.


📦 Applications of This Concept

This exact principle is used in:

  • Turntable drives
  • Conveyor rollers
  • Filament feeders in 3D printers
  • Mechanical automation systems
  • Educational models

🧠 Final Thought

This project shows that:

Motion does not need electronics — geometry is enough.

A rotating shape can drive, lift, pause, and spin simply by touching another shape.

That is the beauty of mechanical engineering.