За замовчуванням модуль використовує 4-провідний режим SPI, тобто. , BS0 і BS1 за замовчуванням підключені до 0 (1 і 0 не позначають рівень, але опір підключений або пов'язаний з методом зварювання, конкретне підключення обладнання показано в таблиці нижче):
Примітка. На малюнку вище показано зварювання на устаткуванні, а наступна таблиця є фактичним підключенням обладнання:
Режим зв'язку | BS1/BS0 |
3-провідний інтерфейс SPI | 0/1 |
4-провідний інтерфейс SPI | 0/0 |
I2C | 1/0 |
- Використання 4-провідного SPI:
- Використання 3-провідного SPI:
- Використання I2C:
При використанні I2C: високий та низький стан постійного струму може керувати адресою керованого пристрою. Якщо він підключений до GND, то 7-бітна адреса I2C: 0x3C;
PS: Програма за замовчуванням працює у режимі SPI. Якщо потрібно переключити режим, змініть DEV_Config.h. Подробиці дивіться в описі програми - нижній апаратний інтерфейс - вибір
PS: при використанні STM32 демонстрація I2C використовує аналоговий I2C, зверніть увагу на підключення.
Технічні характеристики
Мікросхема драйвера | 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-контактний |
Споживання енергії | Нормальне споживання електроенергії дисплеєм становить 21mA-28MAX |
Робочий струм | Під час нормальної роботи струм становить близько 20 мА, а під час сну струм знаходиться на рівні UA |
Перспектива | Повний огляд |
Робоча температура | -20 ℃ ~ 70 ℃ |
Температура зберігання | -30 ℃ ~ 80 ℃ |
Робоча напруга | 2,8-5,5 В. |
Визначення інтерфейсу SPI на SSD1306
PIN | СИМВОЛ | Описи |
1 | GND | Живлення заземлення |
2 | VDD | Позитивний блок живлення (2,8-5,5 В) |
3 | SCK | Годинникова лінія |
4 | SDA | Лінія даних |
5 | RES | Скинути рядок |
6 | DC | Дані/команда |
7 | CS | Вибір чіпа |
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);
}
}
}
}
Економічний якісний OLED дисплей з високою контрастністю 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
Напруга живлення модуля - 3.3 В, але на платі встановлений стабілізатор з низьким падінням напруги, що дозволяє живити дисплей як від 5 В, так і від 3.3 В безпосередньо
Підключення 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 Сигнал скидання, активний низький рівень
Драйвер качати тут: http://www.rinkydinkelectronics.com/
Бібліотека U8gLib підтримує велику кількість контролерів екрану, в числі яких і SSD1306
Максимальне споживання (коли включені всі пікселі дисплея) близько 20 мА, тому при необхідності його можна живити прямо від Піна мікроконтролера.
Як задати тип интерфейсу?
Интерфейс | BS0/BS1 | DIN | SCK |
---|---|---|---|
3-проводный SPI | 1/0 | MOSI | SCLK |
4-проводный SPI | 0/0 | MOSI | SCLK |
I2C |
Відео: https://www.youtube.com/watch?v=-IFwwWj11Kw&t=742s
Відгуків про цей товар ще не було.
Нема питаннь про цей товар
Найчастіші запитання
Суб'єкт господарювання - ФОП група №3 без ПДВ (фізична особа - підприємець з розрахунковим рахунком в банку). Місце реєстрації та складу м. Дрогобич. Всі дані можна перевірити на сайті Міністерства Юстиції.
Приватні умільці і інженери, любителі саморобок, школи юних техніків і групи технічної творчості які не пов'язані з комерційними закупівлями великих партій товарів. Склад магазину - невеликий. Юридичні особи обслуговуються в повному обсязі (рахунок+наклдадна)
Магазин працює за принципом "Купуй, якщо розумієш". Як консультації можуть бути запропоновані напрямки технічних рішень але не схеми реалізації та монтажу. При покупці керуйтеся загальнодоступними джерелами інформації з Інтернету.
Перейдіть на сторінку товару. Наявність вказано над ціною. За наявності товару виберіть модель, якщо вони є під вказівником ціни. Натисніть синю кнопку "У кошик". Кількість товару відобразиться поряд із значком кошика у правому верхньому кутку. Коли кошик буде заповнений, перейдіть до оформлення замовлення, натиснувши кнопку "Оформити" або кнопку "Кошик". Заповніть дані для надсилання товару. Якщо товару поклали більше, ніж є на складі - система Вас попередить і не дасть замовити. Після поправки кількості в кошику натисніть синю кнопку "Оформити" і потім "Підтвердити", При цьому перевіряється фактична наявність товару на складі. Якщо товару не вистачає, з'явиться попередження. Зменшіть товар у кошику до зникнення попередження. При успішному Замовленні сторінка сайту привітає Вас та автоматично надішле Замовлення вам на емейл.
Магазин arduinka.biz.ua - інструмент ІТ комунікацій без торгового залу. Спосіб офіційного діалогу - е-mail. Лист з текстом замовлення - підтвердження укладення угоди. Лист може потрапити в СПАМ, бо відсилається автоматично роботом сайту. Перевірте папку СПАМ! Лист не прийде якщо адреса вказана неправильно. При відсутності листа звертайтеся в Viber або телефоном
Щоб коректно замовити впишіть в один рядок (наприклад Прізвище) назву, а в інший рядок (наприклад Ім'я) код ЗКПО фірми чи ФОП та місто одержання / розташування. Виберіть оплату на розрахунковий рахунок. У листі про замовлення у вас з'явиться кнопка "Роздрукувати рахунок" де і будуть вказані ваші реквізити отримувача. Можете внести всі дані в поле "Коментар до замовлення"
1. Зробіть інше замовлення і в коментарі вкажіть на необхідність відправити однією посилкою. Проведіть оплату
2. Будь ласка, повідомте в магазин по телефону про бажання додати товар в існуючу посилку. Сплатіть товар після узгодження з магазином
Важливо! Товар замовлений сьогодні до 21:00 - відправляється завтра. Товар передається щодня понеділок-субота на "Нова пошта" з 12:00 до 13:00 на замовлення попереднього дня. "Укрпошта" - відправка по робочих днях до 12:00 Форма оплати - тільки безготівкова, оплата - на бізнес-карту прив'язану до рахунку, на розрахунковий рахунок або на рахунок через посередників фінансових послуг Інтеркаса, Портмоне, Лікпей, Мастерпасс і т.п. Способи: Інтернет банкінг, термінали самообслуговування, Швидка оплата через сервіс Sendmoney (міжбанківський сервіс Приватбанку) >Реквізити оплати приходять на емейл. Не переходьте до оплати не отримавши повідомлення про успішне замовлення!
Наложка практикується виключно з постійними клієнтами магазину