Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.
Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.
Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.
Modul ecran OLED 1.3 inch, SH1106, encoder rotativ EC11, I2C
Solutie compacta pentru interfete HMI si proiecte DIY, combina un OLED 1.3 inch cu contrast ridicat si un encoder rotativ EC11 pentru navigare precisa in meniuri si reglaje. Comunicarea I2C reduce cablajul si permite integrare rapida cu Arduino si placi similare. Include apasare pe encoder si butoane de confirmare si revenire pentru control clar si feedback vizual imediat.
Expediere estimata: joi 22 octombrie
Cumparand acest produs primesti 0,40 € in puncte de fidelitate.
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
Produsele sunt expediate din stoc propriu
Primesti puncte la fiecare comanda, in valoare de 5%
Modulul combina pe o singura placa un ecran OLED de 1.3 inch cu un encoder rotativ EC11, acceptand atat semnale de rotatie cat si apasari de buton, pentru construirea rapida a unei interfete de utilizator in proiecte electronice. Este potrivit pentru panouri de control, meniuri de configurare, reglaje de parametri si orice aplicatie unde este nevoie de navigare clara si feedback vizual imediat.
Afisarea este asigurata de un ecran OLED cu driver SH1106, cu rezolutie de 128 x 64 pixeli, conectat prin interfata I2C la adresa implicita 0x3C. Encoderul rotativ EC11 are maner tip floare de prun si ofera 20 de pozitii (pulsuri) pe rotatie completa, cu comutator de apasare integrat, semnalele de rotatie fiind disponibile separat pe pinii TRA si TRB, iar apasarea encoderului pe pinul PSH.
Printre caracteristicile principale se numara ecranul OLED 1.3 inch cu driver SH1106, encoderul rotativ EC11 cu buton incorporat, cele doua butoane tactile suplimentare CONFIRM si BACK, header-ul de pini pentru I2C si semnalele encoderului, precum si gaurile de montaj din coltul placii. Alimentarea se face prin pinii VCC si GND, la o tensiune de 3.3 - 5 V.
Prin interfata I2C si prin semnalele digitale ale encoderului si butoanelor, modulul este compatibil cu Arduino, ESP32, STM32, Raspberry Pi si alte placi de dezvoltare care dispun de pini I2C si intrari digitale.
Specificatii:
Tensiune alimentare: 3.3 - 5 V
Tip display: OLED
Driver OLED: SH1106
Dimensiune ecran: 1.3 inch
Rezolutie ecran: 128 x 64 pixeli
Tip control: Encoder rotativ EC11
Rezolutie encoder: 20 pulsuri per rotatie, cu comutator incorporat
Interfata comunicare: I2C, adresa implicita 0x3C
Butoane suplimentare: CONFIRM (CON) si BACK (BAK)
Dimensiuni placa: 56 x 97 mm
Pinout:
| Conector | Pin | Functie |
|---|---|---|
| P1 Header pini | CON | Buton CONFIRM |
| P1 Header pini | SDA | Linie date I2C pentru OLED |
| P1 Header pini | SCL | Linie ceas I2C pentru OLED |
| P1 Header pini | PSH | Apasare encoder EC11 |
| P1 Header pini | TRA | Semnal A encoder EC11 |
| P1 Header pini | TRB | Semnal B encoder EC11 |
| P1 Header pini | BAK | Buton RETURN |
| P1 Header pini | GND | Masa |
| P1 Header pini | VCC | Alimentare |
| Pin modul | Arduino UNO | Rol |
|---|---|---|
| GND | GND | Masa comuna |
| VCC | 3.3V | Alimentare modul |
| SCL | A5 | Ceas I2C |
| SDA | A4 | Date I2C |
| TRA | D2 | Canal A encoder, recomandat pe pin de intrerupere |
| TRB | D3 | Canal B encoder, recomandat pe pin de intrerupere |
| PSH | D4 | Apasare encoder (select) |
| CON | D5 | Buton CONFIRM optional |
| BAK | D6 | Buton RETURN optional |
Utilizare:
Conectati pinii VCC si GND ai modulului la sursa de alimentare si la masa comuna cu placa de control, respectand tensiunea de 3.3 - 5 V si polaritatea corecta.
Conectati SDA si SCL la pinii I2C ai microcontrolerului, de exemplu A4 si A5 pe Arduino UNO.
Conectati TRA si TRB la doi pini digitali, de preferinta capabili de intrerupere, pentru citirea precisa a sensului si a pasilor de rotatie ai encoderului.
Conectati PSH la un pin digital cu rezistenta de pull-up pentru a citi apasarea encoderului.
Conectati optional CON si BAK la pini digitali separati daca doriti butoane dedicate de confirmare si revenire, independente de apasarea encoderului.
Programati afisarea OLED ca pentru orice alt modul cu driver SH1106, folosind o librarie compatibila precum Adafruit_SH110X.h impreuna cu Adafruit_GFX si adresa I2C implicita 0x3C.
Cititi semnalele TRA si TRB printr-o rutina de intrerupere pentru a determina directia rotatiei, iar PSH, CON si BAK ca intrari digitale cu debounce software.
Nu inversati conexiunile VCC si GND si nu depasiti tensiunea maxima admisa de modul.
Pentru rezultate stabile, folositi cabluri scurte intre modul si placa de control si pastrati rezistentele de pull-up active pe liniile digitale ale encoderului si butoanelor.
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:
Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.
Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.
Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.
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]
/*
Quick verification sketch for the SH1106 1.3 inch OLED module with EC11 rotary encoder
Board: Arduino Uno
Wiring:
Module VCC -> Arduino 3.3V
Module GND -> Arduino GND
Module SDA -> Arduino A4
Module SCL -> Arduino A5
Module TRA -> Arduino D2 (interrupt pin)
Module TRB -> Arduino D3
Module PSH -> Arduino D4
Module CON -> Arduino D5
Module BAK -> Arduino D6
Libraries (Library Manager):
Adafruit SH110X by Adafruit
Adafruit GFX Library by Adafruit
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#define OLED_ADDRESS 0x3C
Adafruit_SH1106G display(128, 64, &Wire, -1);
const int PIN_TRA = 2;
const int PIN_TRB = 3;
const int PIN_PSH = 4;
const int PIN_CON = 5;
const int PIN_BAK = 6;
volatile long encoderCount = 0;
volatile uint8_t lastStateA = 0;
void encoderISR() {
uint8_t stateA = digitalRead(PIN_TRA);
if (stateA == lastStateA) return;
lastStateA = stateA;
uint8_t stateB = digitalRead(PIN_TRB);
if (stateB != stateA) {
encoderCount++;
} else {
encoderCount--;
}
}
void setup() {
Serial.begin(9600);
Serial.println("Scanning I2C bus...");
Wire.begin();
byte foundAddress = 0;
for (byte address = 1; address < 127; address++) {
Wire.beginTransmission(address);
if (Wire.endTransmission() == 0) {
Serial.print("Device found at address 0x");
Serial.println(address, HEX);
foundAddress = address;
}
}
if (foundAddress == 0) {
Serial.println("No I2C device found, check wiring");
}
pinMode(PIN_TRA, INPUT_PULLUP);
pinMode(PIN_TRB, INPUT_PULLUP);
pinMode(PIN_PSH, INPUT_PULLUP);
pinMode(PIN_CON, INPUT_PULLUP);
pinMode(PIN_BAK, INPUT_PULLUP);
lastStateA = digitalRead(PIN_TRA);
attachInterrupt(digitalPinToInterrupt(PIN_TRA), encoderISR, CHANGE);
if (!display.begin(OLED_ADDRESS, true)) {
Serial.println("SH1106 display not found at 0x3C");
} else {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SH110X_WHITE);
display.setCursor(0, 20);
display.print("TEST OK");
display.display();
Serial.println("Display initialized");
}
}
void loop() {
static long lastCount = -1;
if (encoderCount != lastCount) {
lastCount = encoderCount;
Serial.print("Encoder count: ");
Serial.println(encoderCount);
}
if (digitalRead(PIN_PSH) == LOW) {
Serial.println("Encoder button pressed");
delay(200);
}
if (digitalRead(PIN_CON) == LOW) {
Serial.println("CONFIRM button pressed");
delay(200);
}
if (digitalRead(PIN_BAK) == LOW) {
Serial.println("BACK button pressed");
delay(200);
}
}
Modulul combina pe o singura placa un ecran OLED de 1.3 inch cu driver SH1106 si un encoder rotativ EC11 cu buton incorporat, plus doua butoane tactile suplimentare CONFIRM si BACK. Este gandit pentru interfete de utilizator in proiecte cu microcontroler, unde trebuie afisat un meniu sau o valoare si unde utilizatorul trebuie sa navigheze si sa confirme o selectie fara tastatura sau touchscreen.
Tutorialul foloseste o placa Arduino Uno, pentru ca modulul comunica prin I2C si prin intrari digitale simple, interfete pe care Arduino Uno le are deja disponibile, fara sa fie nevoie de WiFi sau de memorie suplimentara.

Cum functioneaza:
Ecranul este controlat de driverul SH1106, care gestioneaza o memorie interna de pixeli organizata pe 128 x 64 puncte si primeste comenzi si date prin protocolul I2C, pe liniile SDA si SCL, la adresa 0x3C. Microcontrolerul nu deseneaza direct pe panou, ci trimite blocuri de octeti care reprezinta paginile de memorie ale display-ului, lucru facut automat de o librarie compatibila SH1106.
Encoderul EC11 are doua contacte interne decalate, TRA si TRB, care se inchid pe rand in timpul rotatiei. Ordinea in care cele doua semnale trec din starea inalta in starea joasa arata sensul de rotatie, iar fiecare pereche de tranzitii corespunde unui singur pas mecanic, modulul avand 20 de pozitii pe o rotatie completa, adica aproximativ 18 grade pe fiecare pas, 360 de grade impartite la 20 de pozitii. Codul citeste aceste tranzitii printr-o rutina de intrerupere atasata pe TRA si determina daca TRB este in aceeasi stare cu TRA sau in stare opusa, pentru a sti daca rotatia este in sensul acelor de ceasornic sau invers.
Butonul incorporat al encoderului, pe pinul PSH, precum si butoanele independente CON si BAK, functioneaza ca simple intrari digitale care trec pe nivel jos cand sunt apasate, modulul avand deja rezistente de pull-up integrate, iar codul citeste starea lor la intervale scurte si aplica un debounce software pentru a elimina apasarile false date de contactul mecanic.
Ce ai nevoie:
- 1 x Modul ecran OLED 1.3 inch, SH1106, encoder rotativ EC11, I2C
- 1 x Placa dezvoltare Uno R3 cu Wifi ESP8266, compatibila Arduino
- 1 x Fire jumper tata-mama
Conectare:
Modulul se alimenteaza intre 3.3 V si 5 V, iar semnalele I2C si intrarile digitale sunt deja compatibile cu nivelul logic al Arduino Uno, asa ca nu este nevoie de convertor de nivel sau de rezistente de pull-up externe pentru butoane. Conectati mai intai alimentarea si masa, apoi liniile I2C, apoi semnalele encoderului si ale butoanelor.
| Pin produs | Se conecteaza la | Rol |
|---|---|---|
| VCC | 3.3V | Alimentare modul |
| GND | GND | Masa comuna |
| SDA | A4 | Date I2C |
| SCL | A5 | Ceas I2C |
| TRA | D2 | Canal A encoder, pin de intrerupere |
| TRB | D3 | Canal B encoder |
| PSH | D4 | Apasare encoder |
| CON | D5 | Buton CONFIRM |
| BAK | D6 | Buton BACK |
Biblioteci:
Instalati din Library Manager biblioteca Adafruit SH110X, de la Adafruit, pentru controlul ecranului OLED cu driver SH1106, impreuna cu Adafruit GFX Library, de la Adafruit, de care depinde pentru desenarea textului si a formelor.
Codul:
Programul de mai jos afiseaza un meniu cu trei optiuni pe ecranul OLED, pe care il puteti naviga rotind encoderul, confirma apasand PSH sau CON si reseta la primul element apasand BAK, afisand in acelasi timp mesaje de depanare pe monitorul serial.
/*
Tutorial sketch for the SH1106 1.3 inch OLED module with EC11 rotary encoder
Board: Arduino Uno
Wiring:
Module VCC -> Arduino 3.3V
Module GND -> Arduino GND
Module SDA -> Arduino A4
Module SCL -> Arduino A5
Module TRA -> Arduino D2 (interrupt pin)
Module TRB -> Arduino D3
Module PSH -> Arduino D4
Module CON -> Arduino D5
Module BAK -> Arduino D6
Libraries (Library Manager):
Adafruit SH110X by Adafruit
Adafruit GFX Library by Adafruit
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#define OLED_ADDRESS 0x3C
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
Adafruit_SH1106G display(OLED_WIDTH, OLED_HEIGHT, &Wire, -1);
const int PIN_TRA = 2;
const int PIN_TRB = 3;
const int PIN_PSH = 4;
const int PIN_CON = 5;
const int PIN_BAK = 6;
volatile int encoderDelta = 0;
volatile uint8_t lastStateA = 0;
const char *menuItems[] = {"Status", "Settings", "About"};
const uint8_t menuCount = sizeof(menuItems) / sizeof(menuItems[0]);
int menuIndex = 0;
unsigned long lastPshTime = 0;
unsigned long lastConTime = 0;
unsigned long lastBakTime = 0;
const unsigned long debounceDelay = 180;
// Interrupt routine, called on every change of PIN_TRA
void encoderISR() {
uint8_t stateA = digitalRead(PIN_TRA);
if (stateA == lastStateA) return;
lastStateA = stateA;
uint8_t stateB = digitalRead(PIN_TRB);
if (stateB != stateA) {
encoderDelta++;
} else {
encoderDelta--;
}
}
// Generic debounced button check
bool buttonPressed(int pin, unsigned long &lastTime) {
if (digitalRead(pin) == LOW) {
unsigned long now = millis();
if (now - lastTime > debounceDelay) {
lastTime = now;
return true;
}
}
return false;
}
// Draws the menu with the current selection highlighted
void drawMenu() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
display.setCursor(0, 0);
display.print("Sigmanortec Demo");
display.drawLine(0, 10, 127, 10, SH110X_WHITE);
int y = 16;
for (uint8_t i = 0; i < menuCount; i++) {
if (i == menuIndex) {
display.fillRect(0, y - 1, 128, 9, SH110X_WHITE);
display.setTextColor(SH110X_BLACK);
} else {
display.setTextColor(SH110X_WHITE);
}
display.setCursor(4, y);
display.print(menuItems[i]);
y += 10;
}
display.display();
}
void setup() {
Serial.begin(9600);
pinMode(PIN_TRA, INPUT_PULLUP);
pinMode(PIN_TRB, INPUT_PULLUP);
pinMode(PIN_PSH, INPUT_PULLUP);
pinMode(PIN_CON, INPUT_PULLUP);
pinMode(PIN_BAK, INPUT_PULLUP);
lastStateA = digitalRead(PIN_TRA);
attachInterrupt(digitalPinToInterrupt(PIN_TRA), encoderISR, CHANGE);
if (!display.begin(OLED_ADDRESS, true)) {
Serial.println("OLED not found at address 0x3C");
while (true) delay(1000);
}
Serial.println("OLED SH1106 + EC11 encoder demo ready");
drawMenu();
}
void loop() {
noInterrupts();
int delta = encoderDelta;
encoderDelta = 0;
interrupts();
if (delta > 0) {
menuIndex = (menuIndex + 1) % menuCount;
Serial.println("Encoder turned clockwise");
drawMenu();
} else if (delta < 0) {
menuIndex = (menuIndex - 1 + menuCount) % menuCount;
Serial.println("Encoder turned counter-clockwise");
drawMenu();
}
if (buttonPressed(PIN_PSH, lastPshTime) || buttonPressed(PIN_CON, lastConTime)) {
Serial.print("Selected menu item: ");
Serial.println(menuItems[menuIndex]);
}
if (buttonPressed(PIN_BAK, lastBakTime)) {
Serial.println("Back button pressed");
menuIndex = 0;
drawMenu();
}
}
Cum functioneaza codul:
La inceputul codului sunt definite obiectul display din clasa Adafruit_SH1106G, adresa OLED_ADDRESS si pinii PIN_TRA, PIN_TRB, PIN_PSH, PIN_CON si PIN_BAK, impreuna cu tabloul menuItems care contine cele trei optiuni de meniu si variabila menuIndex care retine optiunea curent selectata.
Functia encoderISR este atasata ca intrerupere pe schimbarea starii pinului PIN_TRA, compara noua stare cu lastStateA si, daca s-a schimbat, verifica starea lui PIN_TRB pentru a decide daca variabila encoderDelta creste sau scade, acumuland astfel pasii de rotatie intre doua treceri prin loop.
Functia buttonPressed primeste pinul de verificat si aplica un debounce bazat pe millis, returnand adevarat doar daca pinul este pe nivel jos si a trecut suficient timp de la ultima apasare citita pentru acel pin.
Functia drawMenu sterge ecranul, scrie un titlu si o linie despartitoare, apoi parcurge menuItems si deseneaza fiecare optiune, evidentiind cu un dreptunghi plin optiunea aflata la pozitia menuIndex.
In setup se initializeaza portul serial, se configureaza pinii ca intrari cu pull-up, se citeste starea initiala a lui PIN_TRA in lastStateA, se ataseaza intreruperea encoderISR si se initializeaza display-ul cu display.begin folosind OLED_ADDRESS, dupa care se deseneaza meniul initial.
In loop se citeste si se reseteaza encoderDelta intr-o zona protejata de noInterrupts si interrupts, se actualizeaza menuIndex si se redeseneaza meniul la fiecare pas de rotatie, apoi se verifica buttonPressed pentru PIN_PSH, PIN_CON si PIN_BAK pentru a afisa pe serial optiunea selectata sau revenirea la primul element.
Rezultat:
Deschideti monitorul serial la 9600 baud, rotiti encoderul pentru a vedea pe ecran cum se muta selectia intre optiunile de meniu, apasati PSH sau CON pentru a confirma o optiune si BAK pentru a reveni la prima optiune, observand mesajele corespunzatoare pe monitorul serial.
OLED SH1106 + EC11 encoder demo ready
Encoder turned clockwise
Encoder turned clockwise
Selected menu item: Settings
Encoder turned counter-clockwise
Selected menu item: Status
Encoder turned clockwise
Encoder turned clockwise
Selected menu item: About
Back button pressed
Probleme frecvente:
Ecranul ramane stins sau display.begin returneaza fals, situatie in care verificati mai intai conexiunile SDA si SCL si alimentarea VCC si GND, apoi confirmati prin scanare I2C ca modulul raspunde la adresa 0x3C.
Meniul sare mai multe pozitii la o singura rotatie usoara a encoderului, caz in care TRA sau TRB nu sunt conectate corect sau firele sunt prea lungi si preiau zgomot, folositi fire scurte si verificati ca ambele semnale ajung pe pinii digitali indicati.
Un buton pare sa se apese de mai multe ori la o singura apasare, semn ca intervalul de debounce este prea mic pentru contactul mecanic respectiv, mariti usor valoarea debounceDelay din cod.
Rotirea encoderului nu produce nicio reactie, verificati ca intreruperea este atasata corect pe pinul PIN_TRA si ca acesta este un pin capabil de intrerupere pe placa folosita, pe Arduino Uno doar D2 si D3 ofera aceasta functie.
Nimic nu apare pe monitorul serial, confirmati ca viteza aleasa in monitor este 9600 baud, aceeasi cu cea din Serial.begin, si ca placa este conectata pe portul corect.
Limitari si sfaturi:
Ecranul monocrom de 1.3 inch si rezolutia de 128 x 64 pixeli limiteaza numarul de linii de meniu afisate clar in acelasi timp, pentru meniuri mai lungi este utila derularea sau impartirea pe mai multe pagini. Encoderul ofera 20 de pozitii pe rotatie, suficient pentru reglaje fine de parametri, dar fara senzor de pozitie absoluta, asa ca la pornire valoarea curenta trebuie initializata din cod sau citita dintr-o memorie nevolatila daca se doreste pastrarea ultimei setari. Pornind de la acest exemplu se poate construi un meniu cu mai multe niveluri, afisarea unor valori citite de la senzori sau controlul unor module externe prin selectii confirmate cu PSH sau CON.