0.96" OLED display with EC11 rotary encoder module
zoom_out_map
chevron_left chevron_right

Product images are for informational purposes only and may vary slightly depending on the batch and supplier. Product specifications and prices may be subject to change without notice. We do our best to provide accurate and complete product specifications, but they may not be completely accurate. If you encounter any such situation, please let us know.

The product is intended for specialists and requires qualified and authorized personnel. The product does not include assembly/use instructions . Putting the product into operation by unqualified persons leads to the loss of the warranty according to the Terms and Conditions on the site.

The specified technical parameters (current, power, etc.) represent maximum allowable values under ideal operating conditions. For safe use and optimal lifespan, it is recommended to operate the product continuously at no more than 50% of the specified maximum values.

Module with 0.96 inch OLED screen and EC11 rotary encoder

Compact solution for HMI interfaces and DIY projects, combines a high-contrast 0.96 inch OLED and an EC11 rotary encoder for precise menu navigation and adjustments. I2C communication reduces wiring and allows for quick integration with Arduino and similar boards. Includes encoder push and confirm and return buttons for clear control and immediate visual feedback.

39.98 RON Tax included

33.04 RON Tax excluded

No reviews yet
1-2 zile
check In Stoc

Shipping by Thursday 27 August

Close

This product has a warranty of 2 years.

INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
LOYALTY POINTS
You earn points with every order, worth 5%.

This module combines a 0.96 inch OLED display with an EC11 rotary encoder, providing a compact solution for quickly creating a user interface.

Connecting the OLED via I2C allows for easy integration with Arduino and other development boards, with a reduced wire count. The OLED display provides high contrast and very good readability, and the rotary encoder provides precise control for menu navigation, selections and parameter adjustment.

The module also includes dedicated buttons for confirmation and return, making it suitable for control panels, simple HMI interfaces, and DIY projects where you need clear commands and immediate visual feedback.

 

Specifications:

Operating voltage: 3.3-5V

Display type: OLED

OLED driver: SSD1306

Screen size: 0.96 inch

Control type: rotary encoder EC11

Communication interface: I2C

Dimensions: 56 x 97mm

 

Pinout:

Pine Function
Cone CONFIRM button
SDA I2C data line for OLED
SCK I2C clock line for OLED
PSH Press encoder EC11
TRA Signal A encoder EC11
GRT Signal B encoder EC11
BAK RETURN button
GND Mass
VCC Feeding

 

Use:

Connect the module to the Arduino board following the pinout and power it according to the specifications.

Programming the OLED is done like any other OLED 0.96.

Login:
Module pin Arduino UNO Role
GND GND Common table
VCC 3.3V Module power supply
SCL A5 I2C clock
SDA A4 I2C data
TRA D2 Encoder channel A recommended on interrupt
GRT D3 Encoder channel B recommended on interrupt
PSH D4 Press encoder select
Cone D5 Optional CONFIRM button
BAK 6 Optional RETURN button

 

Arduino UNO Test Code:

#include
#include
#include

#define OLED_ADDR 0x3C
#define OLED_W 128
#define OLED_H 64

Adafruit_SSD1306 display(OLED_W, OLED_H, &Wire)

#define ENC_A 2
#define ENC_B 3
#define ENC_SW 4
#define BTN_CON 5
#define BTN_BAK 6

volatile int8_t encDelta = 0
volatile uint8_t lastA = 0

unsigned long tSw = 0
unsigned long tCon = 0
unsigned long tBak = 0
const unsigned long debounceMs = 180

const char* menuItems[] = {
"Status",
"Settings",
"Calibration",
"Info",
"Reset"
}
const uint8_t menuCount = sizeof(menuItems) / sizeof(menuItems[0])

int menuIndex = 0
int page = 0

int setSpeed = 10
int setThreshold = 50

void isrEncA() {
  uint8_t a = digitalRead(ENC_A)
If (a == lastA) return
LastA = a

  uint8_t b = digitalRead(ENC_B)
If (b != a) encDelta++
Else encDelta--
}

bool pressed(int pin, unsigned long &tLast) {
  if (digitalRead(pin) == LOW) {
    unsigned long now = millis()
    if (now - tLast > debounceMs) {
TLast = now
Return true
}
}
Return false
}

void drawHeader(const char* title) {
Display.clearDisplay()
Display.setTextSize(1)
  display.setTextColor(WHITE)
  display.setCursor(0, 0)
Display.print(title)
  display.drawLine(0, 10, 127, 10, WHITE)
}

void drawMenu() {
DrawHeader("SigmaNortec")

Int y = 14
  for (uint8_t i = 0; i < menuCount; i++) {
If (i == menuIndex) {
      display.fillRect(0, y - 1, 128, 10, WHITE)
      display.setTextColor(BLACK)
} else {
      display.setTextColor(WHITE)
}

    display.setCursor(2, y)
Display.print(menuItems[i])
Y += 11
}

  display.setTextColor(WHITE)
  display.setCursor(0.56)
Display.print("Rotation: menu OK: select BAK: back")

Display.display()
}

void drawStatus() {
DrawHeader("Status")
  display.setCursor(0, 16)
  display.print("Encoder: OK")
  display.setCursor(0, 28)
Display.print("Speed: ")
Display.print(setSpeed)
  display.setCursor(0, 40)
Display.print("Threshold: ")
Display.print(setThreshold)

  display.setCursor(0.56)
Display.print("BAK: back")
Display.display()
}

void drawSettings() {
DrawHeader("Settings")
  display.setCursor(0, 16)
Display.print("Speed: ")
Display.print(setSpeed)
  display.setCursor(0, 28)
Display.print("Threshold: ")
Display.print(setThreshold)
  display.setCursor(0, 44)
Display.print("Rotation: adjustment")
  display.setCursor(0.56)
Display.print("OK: switch BAK: back")
Display.display()
}

void drawInfo() {
DrawHeader("Info")
  display.setCursor(0, 16)
  display.print("OLED SSD1306 I2C")
  display.setCursor(0, 28)
  display.print("Encoder EC11")
  display.setCursor(0, 40)
  display.print("Menu: Sigmanortec")
  display.setCursor(0.56)
Display.print("BAK: back")
Display.display()
}

void setup() {
  pinMode(ENC_A, INPUT_PULLUP)
  pinMode(ENC_B, INPUT_PULLUP)
  pinMode(ENC_SW, INPUT_PULLUP)
  pinMode(BTN_CON, INPUT_PULLUP)
  pinMode(BTN_BAK, INPUT_PULLUP)

LastA = digitalRead(ENC_A)
  attachInterrupt(digitalPinToInterrupt(ENC_A), isrEncA, CHANGE)

  display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)
Display.clearDisplay()
Display.setTextWrap(false)
  display.dim(0)
Display.display()

DrawMenu()
}

void loop() {
Int8_t d = 0
NoInterrupts()
D = encDelta
EncDelta = 0
Interrupt()

  bool ok = pressed(ENC_SW, tSw) || pressed(BTN_CON, tCon)
  bool back = pressed(BTN_BAK, tBak)

If (page == 0) {
If (d != 0) {
      menuIndex += (d > 0) ? 1 : -1
      if (menuIndex < 0) menuIndex = menuCount - 1
      if (menuIndex >= menuCount) menuIndex = 0
DrawMenu()
}

If (ok) {
      if (menuIndex == 0) page = 1
      if (menuIndex == 1) page = 2
      if (menuIndex == 2) page = 3
      if (menuIndex == 3) page = 4
      if (menuIndex == 4) page = 5
      if (page == 1) drawStatus()
      if (page == 2) drawSettings()
      if (page == 3) drawHeader("Calibration"), display.setCursor(0, 20), display.print("Calibration in progress"), display.setCursor(0, 56), display.print("BAK: back"), display.display()
      if (page == 4) drawInfo()
If (page == 5) {
        drawHeader("Reset")
        display.setCursor(0, 20)
        display.print("Reset values")
SetSpeed = 10
SetThreshold = 50
        display.setCursor(0.56)
        display.print("OK: menu")
Display.display()
}
}
} else if (page == 1) {
If (back) {
Page = 0
DrawMenu()
}
} else if (page == 2) {
    static bool editSpeed = true

If (ok) {
      editSpeed = !editSpeed
DrawSettings()
}

If (d != 0) {
If (editSpeed) {
        setSpeed += (d > 0) ? 1 : -1
        if (setSpeed < 0) setSpeed = 0
        if (setSpeed > 99) setSpeed = 99
} else {
        setThreshold += (d > 0) ? 1 : -1
        if (setPrag < 0) setPrag = 0
        if (setPrag > 999) setPrag = 999
}
DrawSettings()
}

If (back) {
Page = 0
DrawMenu()
}
  } else if (page == 3 || page == 4) {
If (back) {
Page = 0
DrawMenu()
}
} else if (page == 5) {
If (ok || back) {
Page = 0
DrawMenu()
}
}}
}

88126

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].