Site icon Pallav Aggarwal

Ultra Low Power Displays from Ynvisible

Overview

So far I was aware of that Glass segment display are the display which consumes lowest power compare to any other type of display available in the market and also that they are one of the cheapest.

But, recently I came across a company called Ynvisible from Canada who are manufacturing ultra low power displays using printing technology and has a lot of other unique features.

These displays typically consumes only 0.21uW per cm2 of display area. They are also cost very less at high volume as the manufacturing cost is significantly low.

Key Features

How to operate

You don’t need a special driver IC, it can be directly interfaced with any MCU operating at 2.2V – 3V. Refer below images:

Low Power Display Evaluation Kit

Company provides evaluation kit which contains various segment display and boards with the help of which you will be able to evaluate quickly and understand how you can use it for your application

Advantages and limitations

Advantages

  • Low Power
  • Thin
  • Flexible
  • Reliable
  • Water proof
  • Low cost

Limitations

  • Slow refresh rate
  • Matrix type graphic display is not available yet
  • Can’t be used the dark, need external source
  • Standard of the self displays are not available, you can get your display custom design (samples are available for the evaluation)

Applications

Due to its it unique ultra low power feature these can be used in various applications like mentioned below:

How to buy these low power displays?

You can buy Segment display kit, designer color display kit or individual segment displays or boards(click, driver, adapter) from their web store directly.

What do you think, can these displays be used in some of your products, let me know in the comments below?

If you prefer the video format:

Watch the video

Seven Segment Display with STM32 MCU

In order to check what it takes to interface segment display with an MCU, I then connected the Single digit Segment display with STM32L031 Nucleo board using adapter board.

The connections are pretty straight forward, all segments and common need to be connected to GPIO Pins(output).

I wrote the below given code to quickly test.

Example Code

Display Function

void display(uint8_t value)
{
	switch(value)
		{
		case 0: 
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);

			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);

			HAL_Delay(250);
			//HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_SET);

		break;

		case 1: 
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_Delay(250);

		break;

		case 2:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);

		break;

		case 3:

			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 4:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);

			HAL_Delay(250);
		break;

		case 5:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 6:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 7:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 8:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 9:
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_SET);
			HAL_Delay(250);
		break;

		case 10: // OFF
			HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_SET);
			HAL_GPIO_WritePin(SegA_GPIO_Port, SegA_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegB_GPIO_Port, SegB_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegC_GPIO_Port, SegC_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegD_GPIO_Port, SegD_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegE_GPIO_Port, SegE_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegF_GPIO_Port, SegF_Pin, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(SegG_GPIO_Port, SegG_Pin, GPIO_PIN_RESET);
			HAL_Delay(250);
			//HAL_GPIO_WritePin(COM_GPIO_Port, COM_Pin, GPIO_PIN_RESET);

		break;

		}

}

Main Code

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

	display(0);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(1);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(2);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(3);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(4);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(5);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(6);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(7);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(8);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);

	display(9);
	HAL_Delay(1000);
	display(10); // OFF
	HAL_Delay(500);
  }
  /* USER CODE END 3 */
}

Quick Video showing Seven Segment Display demo (counting from 0 – 9)


I hope you found this post useful and you learned something new.

Exit mobile version