140.00 грн.
Актуальные остатки
Легальная оплата на счет
Низкие цены
Достака: Нова Пошта, Укрпошта, Самовывоз
Модуль OLED обеспечивает три интерфейса привода: 3-проводной SPI, 4-проводной SPI и интерфейс I2C соответственно. К задней части модуля можно припаять два резистора, а соответствующий метод связи можно выбрать путем выбора резисторов, как показано на рисунке:
По умолчанию модуль использует 4-проводной режим связи SPI, т.е. , BS0 и BS1 по умолчанию подключены к 0 (1 и 0 не обозначают уровень, но сопротивление подключено или связано с методом сварки, конкретное подключение оборудования показано в таблице ниже):
Примечание. На рисунке выше показано сварка на оборудовании, а следующая таблица представляет собой фактическое подключение оборудования:

Режим связи БС1/БС0
3-проводной интерфейс SPI 0/1
4-проводной интерфейс SPI 0/0
I2C 1/0

Конкретная конфигурация оборудования следующая:

  • Использование 4-проводного SPI:

То есть заводские настройки программы: BS0 и BS1 подключены к 0 и к земле, DIN подключен к 0 и к Raspberry Pi MOSI, а CLK подключен к 0 и к Raspberry Pi SCLK;

  • Использование 3-проводного SPI:

Подключите BS0 к 1 и к VCC, подключите BS1 к 0 и к GND, подключите DIN к 0 и к Raspberry Pi MOSI, подключите CLK к 0 и к Raspberry Pi SCLK;

  • Использование I2C:

BS0 подключается к 0 и к GND, BS1 подключается к 1 и к VCC (3,3 В), DIN подключается к 0 и к Raspberry Pi SDA, CLK подключается к 1 и к Raspberry Pi SCL;
При использовании I2C: высокое и низкое состояние постоянного тока может управлять адресом ведомого устройства. Если он подключен к GND, то 7-битный адрес I2C: 0x3C;
PS: Программа по умолчанию работает в режиме SPI. Если вам нужно переключить режим, измените DEV_Config.h. Подробности смотрите в описании программы - нижний аппаратный интерфейс - выбор интерфейса
PS: при использовании STM32 демонстрация I2C использует аналоговый I2C, обратите внимание на подключение.

   /*
  modified on Des 13, 2020
  Modified by MohammedDamirchi from https://github.com/adafruit/Adafruit_SSD1306
  Home
*/
/**************************************************************************
 This is an example for our Monochrome OLEDs based on SSD1306 drivers
 Pick one up today in the adafruit shop!
 ------> http://www.adafruit.com/category/63_98
 This example is for a 128x32 pixel display using SPI to communicate
 4 or 5 pins are required to interface.
 Adafruit invests time and resources providing this open
 source code, please support Adafruit and open-source
 hardware by purchasing products from Adafruit!
 Written by Limor Fried/Ladyada for Adafruit Industries,
 with contributions from the open source community.
 BSD license, check license.txt for more information
 All text above, and the splash screen below must be
 included in any redistribution.
 **************************************************************************/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for SSD1306 display connected using software SPI (default case):
//#define OLED_MOSI   9
//#define OLED_CLK   10
//#define OLED_DC    11
//#define OLED_CS    12
//#define OLED_RESET 13
//Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
//  OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
//Comment out above, uncomment this block to use hardware SPI
#define OLED_DC     8
#define OLED_CS     10
#define OLED_RESET  9
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
  &SPI, OLED_DC, OLED_RESET, OLED_CS);

#define NUMFLAKES     10 // Number of snowflakes in the animation example
#define LOGO_HEIGHT   16
#define LOGO_WIDTH    16
static const unsigned char PROGMEM logo_bmp[] =
{ B00000000, B11000000,
  B00000001, B11000000,
  B00000001, B11000000,
  B00000011, B11100000,
  B11110011, B11100000,
  B11111110, B11111000,
  B01111110, B11111111,
  B00110011, B10011111,
  B00011111, B11111100,
  B00001101, B01110000,
  B00011011, B10100000,
  B00111111, B11100000,
  B00111111, B11110000,
  B01111100, B11110000,
  B01110000, B01110000,
  B00000000, B00110000 };
void setup() {
  Serial.begin(9600);
  // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  if(!display.begin(SSD1306_SWITCHCAPVCC)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  // Show initial display buffer contents on the screen --
  // the library initializes this with an Adafruit splash screen.
  display.display();
  delay(2000); // Pause for 2 seconds
  // Clear the buffer
  display.clearDisplay();
  // Draw a single pixel in white
  display.drawPixel(10, 10, SSD1306_WHITE);
  // Show the display buffer on the screen. You MUST call display() after
  // drawing commands to make them visible on screen!
  display.display();
  delay(2000);
  // display.display() is NOT necessary after every single drawing command,
  // unless that's what you want...rather, you can batch up a bunch of
  // drawing operations and then update the screen all at once by calling
  // display.display(). These examples demonstrate both approaches...
  testdrawline();      // Draw many lines
  testdrawrect();      // Draw rectangles (outlines)
  testfillrect();      // Draw rectangles (filled)
  testdrawcircle();    // Draw circles (outlines)
  testfillcircle();    // Draw circles (filled)
  testdrawroundrect(); // Draw rounded rectangles (outlines)
  testfillroundrect(); // Draw rounded rectangles (filled)
  testdrawtriangle();  // Draw triangles (outlines)
  testfilltriangle();  // Draw triangles (filled)
  testdrawchar();      // Draw characters of the default font
  testdrawstyles();    // Draw 'stylized' characters
  testscrolltext();    // Draw scrolling text
  testdrawbitmap();    // Draw a small bitmap image
  // Invert and restore display, pausing in-between
  display.invertDisplay(true);
  delay(1000);
  display.invertDisplay(false);
  delay(1000);
  testanimate(logo_bmp, LOGO_WIDTH, LOGO_HEIGHT); // Animate bitmaps
}
void loop() {
}
void testdrawline() {
  int16_t i;
  display.clearDisplay(); // Clear display buffer
  for(i=0; i<display.width(); i+=4) {
    display.drawLine(0, 0, i, display.height()-1, SSD1306_WHITE);
    display.display(); // Update screen with each newly-drawn line
    delay(1);
  }
  for(i=0; i<display.height(); i+=4) {
    display.drawLine(0, 0, display.width()-1, i, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(250);
  display.clearDisplay();
  for(i=0; i<display.width(); i+=4) {
    display.drawLine(0, display.height()-1, i, 0, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  for(i=display.height()-1; i>=0; i-=4) {
    display.drawLine(0, display.height()-1, display.width()-1, i, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(250);
  display.clearDisplay();
  for(i=display.width()-1; i>=0; i-=4) {
    display.drawLine(display.width()-1, display.height()-1, i, 0, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  for(i=display.height()-1; i>=0; i-=4) {
    display.drawLine(display.width()-1, display.height()-1, 0, i, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(250);
  display.clearDisplay();
  for(i=0; i<display.height(); i+=4) {
    display.drawLine(display.width()-1, 0, 0, i, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  for(i=0; i<display.width(); i+=4) {
    display.drawLine(display.width()-1, 0, i, display.height()-1, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(2000); // Pause for 2 seconds
}
void testdrawrect(void) {
  display.clearDisplay();
  for(int16_t i=0; i<display.height()/2; i+=2) {
    display.drawRect(i, i, display.width()-2*i, display.height()-2*i, SSD1306_WHITE);
    display.display(); // Update screen with each newly-drawn rectangle
    delay(1);
  }
  delay(2000);
}
void testfillrect(void) {
  display.clearDisplay();
  for(int16_t i=0; i<display.height()/2; i+=3) {
    // The INVERSE color is used so rectangles alternate white/black
    display.fillRect(i, i, display.width()-i*2, display.height()-i*2, SSD1306_INVERSE);
    display.display(); // Update screen with each newly-drawn rectangle
    delay(1);
  }
  delay(2000);
}
void testdrawcircle(void) {
  display.clearDisplay();
  for(int16_t i=0; i<max(display.width(),display.height())/2; i+=2) {
    display.drawCircle(display.width()/2, display.height()/2, i, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(2000);
}
void testfillcircle(void) {
  display.clearDisplay();
  for(int16_t i=max(display.width(),display.height())/2; i>0; i-=3) {
    // The INVERSE color is used so circles alternate white/black
    display.fillCircle(display.width() / 2, display.height() / 2, i, SSD1306_INVERSE);
    display.display(); // Update screen with each newly-drawn circle
    delay(1);
  }
  delay(2000);
}
void testdrawroundrect(void) {
  display.clearDisplay();
  for(int16_t i=0; i<display.height()/2-2; i+=2) {
    display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i,
      display.height()/4, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(2000);
}
void testfillroundrect(void) {
  display.clearDisplay();
  for(int16_t i=0; i<display.height()/2-2; i+=2) {
    // The INVERSE color is used so round-rects alternate white/black
    display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i,
      display.height()/4, SSD1306_INVERSE);
    display.display();
    delay(1);
  }
  delay(2000);
}
void testdrawtriangle(void) {
  display.clearDisplay();
  for(int16_t i=0; i<max(display.width(),display.height())/2; i+=5) {
    display.drawTriangle(
      display.width()/2  , display.height()/2-i,
      display.width()/2-i, display.height()/2+i,
      display.width()/2+i, display.height()/2+i, SSD1306_WHITE);
    display.display();
    delay(1);
  }
  delay(2000);
}
void testfilltriangle(void) {
  display.clearDisplay();
  for(int16_t i=max(display.width(),display.height())/2; i>0; i-=5) {
    // The INVERSE color is used so triangles alternate white/black
    display.fillTriangle(
      display.width()/2  , display.height()/2-i,
      display.width()/2-i, display.height()/2+i,
      display.width()/2+i, display.height()/2+i, SSD1306_INVERSE);
    display.display();
    delay(1);
  }
  delay(2000);
}
void testdrawchar(void) {
  display.clearDisplay();
  display.setTextSize(1);      // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE); // Draw white text
  display.setCursor(0, 0);     // Start at top-left corner
  display.cp437(true);         // Use full 256 char 'Code Page 437' font
  // Not all the characters will fit on the display. This is normal.
  // Library will draw what it can and the rest will be clipped.
  for(int16_t i=0; i<256; i++) {
    if(i == '\n') display.write(' ');
    else          display.write(i);
  }
  display.display();
  delay(2000);
}
void testdrawstyles(void) {
  display.clearDisplay();
  display.setTextSize(1);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(0,0);             // Start at top-left corner
  display.println(F("Hello, world!"));
  display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text
  display.println(3.141592);
  display.setTextSize(2);             // Draw 2X-scale text
  display.setTextColor(SSD1306_WHITE);
  display.print(F("0x")); display.println(0xDEADBEEF, HEX);
  display.display();
  delay(2000);
}
void testscrolltext(void) {
  display.clearDisplay();
  display.setTextSize(2); // Draw 2X-scale text
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(10, 0);
  display.println(F("scroll"));
  display.display();      // Show initial text
  delay(100);
  // Scroll in various directions, pausing in-between:
  display.startscrollright(0x00, 0x0F);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrollleft(0x00, 0x0F);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrolldiagright(0x00, 0x07);
  delay(2000);
  display.startscrolldiagleft(0x00, 0x07);
  delay(2000);
  display.stopscroll();
  delay(1000);
}
void testdrawbitmap(void) {
  display.clearDisplay();
  display.drawBitmap(
    (display.width()  - LOGO_WIDTH ) / 2,
    (display.height() - LOGO_HEIGHT) / 2,
    logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1);
  display.display();
  delay(1000);
}
#define XPOS   0 // Indexes into the 'icons' array in function below
#define YPOS   1
#define DELTAY 2
void testanimate(const uint8_t *bitmap, uint8_t w, uint8_t h) {
  int8_t f, icons[NUMFLAKES][3];
  // Initialize 'snowflake' positions
  for(f=0; f< NUMFLAKES; f++) {
    icons[f][XPOS]   = random(1 - LOGO_WIDTH, display.width());
    icons[f][YPOS]   = -LOGO_HEIGHT;
    icons[f][DELTAY] = random(1, 6);
    Serial.print(F("x: "));
    Serial.print(icons[f][XPOS], DEC);
    Serial.print(F(" y: "));
    Serial.print(icons[f][YPOS], DEC);
    Serial.print(F(" dy: "));
    Serial.println(icons[f][DELTAY], DEC);
  }
  for(;;) { // Loop forever...
    display.clearDisplay(); // Clear the display buffer
    // Draw each snowflake:
    for(f=0; f< NUMFLAKES; f++) {
      display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, SSD1306_WHITE);
    }
    display.display(); // Show the display buffer on the screen
    delay(200);        // Pause for 1/10 second
    // Then update coordinates of each flake...
    for(f=0; f< NUMFLAKES; f++) {
      icons[f][YPOS] += icons[f][DELTAY];
      // If snowflake is off the bottom of the screen...
      if (icons[f][YPOS] >= display.height()) {
        // Reinitialize to a random position, just off the top
        icons[f][XPOS]   = random(1 - LOGO_WIDTH, display.width());
        icons[f][YPOS]   = -LOGO_HEIGHT;
        icons[f][DELTAY] = random(1, 6);
      }
    }
  }
}

Характеристики SPI дисплея на базе чипа SSD1306

Чип драйвера SSD1306
Интерфейс поддержки SPI / IIC
разрешение 128×64
Размер дисплея 0,96 дюйма
Цвет дисплея Белый свет / синий свет / желто-синий цвет
Габаритные размеры 27.5×27.8(mm)
Размер стекла 26.7×19.26×1.4(mm)
Область отображения 21,74 (Ш) × 10,864 (мм)
Шаг точки 0.17×0.17(mm)
Размер точки 0.15×0.15(mm)
Количество контактов 7-контактный
Потребляемая мощность Нормальное энергопотребление дисплея составляет 21 мА-28 МАКС.
Рабочий ток Ток составляет около 20 мА во время нормальной работы, а ток на уровне ua во время сна.
Перспектива Полный обзор
Рабочая Температура -20℃~70℃
температура хранения -30℃~80℃
Рабочее напряжение 2,8-5,5 В

  Определение интерфейса 

ШТЫРЬ  УСЛОВНОЕ ОБОЗНАЧЕНИЕ Описания
1 GND Заземление питания
2 VDD Положительный источник питания (2,8-5,5 В)
3 SCK Линия часов
4 SDA Линия передачи данных
5 RES Сбросить строку
6 DC Данные / команда
7 CS Выбор чипа

Экономичный качественный OLED дисплей 128x64 с высокой контрастностью 7 контактов. Кроме протокола I2C поддерживает SPI. Легко подключается, выскокое быстродействие, возможно подключение сразу нескольких дисплеев к любому микроконтроллеру или мини-компьютеру по шине I2C. Адрес можно выбрать перепайкой перемычки. 

Характеристики OLED Дисплей  0.96 I2C SPI

  • Драйвер дисплея: SSD1315 / совместимый со старым SSD1306
  • Интерфейс: 7 pin из которых: 3-SPI, 4-проводный SPI, I2C
  • Рабочее напряжение: 3,3В
  • Напряжение интерфейсов: 3,3В
  • Разрешение: 128*64
  • Размер дисплея: 0.96-дюйма
  • Цвета: Желто-синий/белый / Синий
  • Угол обзора: >160°
  • Размеры: 33мм*33.50мм
  • Рабочая температура: 20-70

Как задать тип интерфейса?

Интерфейс BS0/BS1 DIN SCK
3-проводный SPI 1/0 MOSI SCLK
4-проводный SPI 0/0 MOSI SCLK
I2C

Питание модуля – 3.3 В, но на плате установлен стабилизатор с низким падением напряжения, что позволяет питать дисплей как от 5 В, так и от 3.3 В напрямую

oled 0.96 spi дисплей для Ардуино

Подключение OLED Дисплей  0.96 I2C SPI 128x64

  • 1 VCC Напряжение питания (3,3В-5В)
  • 2 GND 
  • 3 NC НЕ используется
  • 4 DIN Вход данных
  • 5 CLK Вход тактовых импульсов
  • 6 CS Выбор кристалла, активный низкий уровень
  • 7 D/C Выбор Команды/Данные. низкий уровень для команд, высокий для данных
  • 8 RES Сигнал сброса, активный низкий уровень

Максимальное потребление (когда включены все пиксели дисплея) порядка 20 мА, поэтому при необходимости его можно питать прямо от пина микроконтроллера.

Драйвер качать тут: http://www.rinkydinkelectronics.com/
Библиотека U8gLib  поддерживает большое количество контроллеров экрана, в числе которых и SSD1306

SPI шина более скоростная чем I2C. Подключение по SPI обеспечивает скорость соединения до 20 Мбит/с. 

Видео: https://www.youtube.com/watch?v=-IFwwWj11Kw&t=742s

Отзывов: 0

Нет отзывов о данном товаре.

Вопросов: 0

Нет вопросов об этом товаре.

Рекомендуем посмотреть
FAQ

Общие сведения о магазине

Субъект хозяйствования - ФОП группа №3 без НДС (физическое лицо - предприниматель с расчетным счетом в банке).  Место регистрации и склада г. Дрогобыч. Все данные можно проверить на сайте Министерства Юстиции

Частные умельцы и инженеры, любители самоделок, школы юных техников и группы технического творчества которые не связаны с коммерческими закупками крупных партий товаров. Склад магазина - небольшой. Юридические лица обслуживаются в полной мере (счет +накладная)

Магазин работает по принципу "Покупай, если понимаешь". В качестве консультации могут быть предложены направления технических решений но не схемы реализации и монтажа. При покупке руководствуйтесь общедоступными источниками информации из Интернета

Перейдите на страницу товара. Наличие указано над ценой. При наличии товара выберите модель если они есть под указателем цены. Нажмите синюю кнопку "В корзину". Количество товара отобразится рядом со значком корзины в правом верхнем углу. Когда корзина будет заполнена, перейдите к оформлению заказа нажав на кнопку "Оформить" или кнопку "Корзина". Заполните данные для отправки товара. Если товара положили больше чем есть на складе - система Вас предупредит и не даст заказать. После поправки количества в корзине нажмите синюю кнопку "Оформить" и потом "Подтвердить", При этом проверяется фактическое наличие товара на складе. Если товара не хватает появится предупреждение. Уменьшите товар в корзине до исчезновения предупреждения. 

При успешном Заказе страница сайта поздравит Вас и автоматически отправит Заказ вам на емейл.

Магазин arduinka.biz.ua - инструмент ІТ коммуникаций без торгового зала. Способ официального диалога - е-mail.  Письмо с текстом заказа - подтверждение заключения сделки. Письмо может попасть в СПАМ т.к. отсылается автоматически роботом сайта. Проверьте папку СПАМ! Письмо не придет, если адрес указан неправильно. При отсутствии письма обращайтесь в Viber или по телефону

Чтобы корректно заказать впишите в одну строку (например Фамилия) название, а в другую строку (например Имя) код ЗКПО и город получения /расположения. Выберите оплату на расчетный счет. В письме о заказе у вас появится кнопка "Распечатать счет"  где и будут указаны ваши реквизиты получателя. Можете внести все данные в поле Комментарий к заказу

1. Сделайте другой заказ и в комментарии к нему укажите на необходимость отправить одной посылкой. Произведите оплату
2. Сообщите в магазин по телефону о желании добавить товар в существующую посылку. Оплатите товар после согласования с магазином

Важно! Товар заказанный сегодня до 21:00 - отправляется завтра. Товар передается ежедневно понедельник-суббота на "Нова пошта" по заказам предыдущего дня. "Укрпошта" - отправка по рабочим дням до 12:00

Форма оплаты - только безналичная, оплата - на бизнес-карту привязанную к счету, на расчетный счет или на счет через посредников финансовых услуг Интеркасса, Портмоне, Ликпей, Мастерпасс и т.п. 

Способы: Интернет банкинг, терминалы самообслуживания, Быстрая оплата через сервис Sendmoney (межбанковский сервис Приватбанка)
Реквизиты оплаты приходят на емейл. Не переходите к оплате не получив сообщение об успешном заказе!
Наложка практикуется исключительно с постоянными клиентами магазина!