Modul OLED SH1106 1.3 inch cu encoder rotativ EC11 si butoane CONFIRM BACK
zoom_out_map
chevron_left chevron_right

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.

3.034,36 Ft Cu TVA

2.507,74 Ft Fara TVA

Nu exista recenzii
1-2 zile
check In Stoc

Expediere estimata: joi 22 octombrie

Ai gasit mai ieftin? Spune-ne! (autentifica-te pentru a trimite o solicitare)

Cumparand acest produs primesti 151,72 Ft in puncte de fidelitate.

Garantie: 24 luni pentru persoane fizice
LIVRARE GRATUITA
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
EXPEDIERE RAPIDA
Produsele sunt expediate din stoc propriu
PUNCTE FIDELITATE
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.

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:

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.

Modul ecran OLED 1.3 inch, SH1106,  encoder rotativ EC11, I2C

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:

 

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

Conectare modul OLED SH1106 cu encoder EC11 la Arduino Uno

 

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.

Produse vizualizate