Màn hình oled 0.96inch 12864 giao tiếp iic spi

Mã sản phẩm: E3601445
65.000₫
Còn hàng
MÔ TẢ SẢN PHẨM Màn hình Oled 0.96 inch giao tiếp I2C cho khả năng hiển thị đẹp, rõ nét vào ban ngày và khả năng tiết kiệm năng lượng tối đa với mức chi phí phù hợp, màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO. THÔNG SỐ KỸ THUẬT: Điện...

MÔ TẢ SẢN PHẨM

Màn hình Oled 0.96 inch giao tiếp I2C cho khả năng hiển thị đẹp, rõ nét vào ban ngày và khả năng tiết kiệm năng lượng tối đa với mức chi phí phù hợp, màn hình sử dụng giao tiếp I2C cho chất lượng đường truyền ổn định và rất dễ giao tiếp chỉ với 2 chân GPIO.

THÔNG SỐ KỸ THUẬT:

  • Điện áp sử dụng: 2.2~5.5VDC.
  • Công suất tiêu thụ: 0.04w
  • Góc hiển thị: lớn hơn 160 độ
  • Số điểm hiển thị: 128x64 điểm.
  • Độ rộng màn hình: 0.96 inch
  • Màu hiển thị: Trắng / Xanh Dương.
  • Giao tiếp: I2C Driver: SSD1306

KẾT NỐI ARDUINO:

MÀN HÌNH OLED 0.96INCH 12864 GIAO TIẾP IIC SPI 4

CODE MẪU:

   /*
  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);
      }
    }
  }
}

 

 

Phương Thức Thanh Toán

1. Thanh toán bằng tiền mặt, nhận hàng tại Điện tử 360

- Quý khách hàng có thể đến nhận hàng và thanh toán trực tiếp tại cửa hàng Điện tử 360. 

- Quý khách hàng nên gọi điện trước ( Hotline: 0868 306 306 ) để báo số đơn hẹn thời gian để chúng tôi chuẩn bị hàng sẵn cho bạn, khỏi mất thời gian chờ đợi.

2Thanh toán C.O.D -  Thanh Toán Sau Khi Nhập Hàng.

Cước phí thu hộ COD được tính như sau:

Đối với đơn hàng có giá trị <1.000.000đ ( Sản Phẩm <1kg )

+ Tuyến thành phố: thu thêm 16.500đ

+ Tuyến huyện: thu thêm 22.000đ

Đối với đơn hàng có giá trị > 1.000.000đ ( Sản Phẩm <1kg )

+ Tuyến thành phố : thu thêm số tiền= (tiền hàng+Phí CPN)*0.8%

+ Tuyến huyện: thu thêm số tiền=(tiền hàng+phí CPN)*1,5%
Khách hàng thanh toán theo hình thức COD khi nhận hàng phải thanh toán số tiền là

Tổng tiền thanh toán= giá trị hàng hóa + phí chuyển phát nhanh + phí dịch vụ COD
3. Thanh toán Qua tài khoản ATM

 - Quý khách chuyển khoản với Nội dung:
+ Đối với khách hàng đặt hàng qua Email:
  - Tên + Địa Chỉ + Tên Hàng
+ Đối với khách hàng đặt hàng trên Website:
  - Mã Số Của Đơn Hàng + Tên + Địa Chỉ

 ( VD: Quý khách có mã đơn hàng  " #E1354 " => QK Điền Nội Dung khi chuyển :  "1354  +  Tên + Đia Chỉ " )

- Quý khách chuyển khoản vào các tài khoản sau: 

mb

Ngân Hàng MBBANK

 STK: 0000 10891 8888

 Chi nhánh: MBBank Nam Thăng Long, Hà Nội 

 Chủ TK: ĐINH THỊ YẾN

    

- Sau khi chuyển khoản, quý khách vui lòng nt vào số điện thoại : 0868 306 306 với nội dung: Quý khách có thể chuyển tiền vào tài khoản của chúng tôi bằng nhiều cách: Qua thẻ ATM, ra ngân hàng chuyển tiền, chuyển khoản trên internetBanking...

+ TênKH + Địa Chỉ + Tên Đơn Hàng. ( Liên hệ cửa hàng)
+ Số Cuối Mã Đơn Hàng ( Mua trực tiếp trên website)
( VD: #1354 => 
 QK chỉ cần nhắn tin: 1354 _Tên_Số tiền chuyển )
Chúng tôi sẽ liên hệ xác minh và xếp hàng gửi quý khách.

4. Các trường hợp khác

- Khách hàng có yêu cầu chuyển hàng qua bên thứ 3 khác như nhà xe, người quen, hoặc đơn vị vận chuyển không ký hợp đồng trực tiếp với Điện tử 360... Chi phí và mọi rủi ro trong quá trình vận chuyển do khách hàng chịu. Khi nhân viên giao hàng Điện tử bàn giao sản phẩm cho bên thứ 3, thì khách hàng và đối tác vận chuyển của khách hàng cần xác nhận bằng điện thoại, tin nhắn SMS hoặc trên phiếu xuất hàng của Điện tử 360.

 

A. MUA HÀNG TRỰC TIẾP

 Quý khách hàng có thể qua trực tiếp showroom của công ty để xem hàng và kiểm tra hàng tại địa chỉ: ( Số 62, ngõ 61 Phạm Tuấn Tài, Cổ Nhuế 1, Bắc Từ Liêm, Hà Nội ).

B. MUA HÀNG ONLINE

Phương thức mua hàng trên website Dientu360 bao gồm ( 5 bước )

Bước 1: Chọn Sản Phẩm

t1

Bước 2: Thanh Toán Trên Giỏ Hàng

 Ở bước này khách hàng có thể chọn vào thanh toán khi đã chắc chắn sản phẩm mình đã lựa chọn hoặc bấm vào giỏ hàng để xem lại sản phẩm mình đã chọn.

 Nếu còn thiếu sản phẩm khách hàng có thể tiếp tục chọn sản phẩm cho vào giỏ hàng trước khi nhấn thanh toán.

chuthich1

 

Bước 3: Điền Thông Tin Khách Hàng

 Quý khách hàng điền đầy đủ thông tin liên hệ cũng như địa chỉ nhận hàng để tránh sai xót trong quá trình chuyển hàng.

>Bước 4: Chọn Phương Thức Thanh Toán Và Nhận Hàng

 

chuthich2

 Bước 4: Khách Hàng Lựa Chọn Phương Thức Thanh Toán Và Nhận Hàng

chuthich3

Bước 5: Xác Nhận Hoàn Tất Việc Đặt Hàng

 Sau khi hoàn thành các thủ tục trên, quý khách hàng bấm vào nút Đặt Hàng để hoàn thiện việc đặt hàng. Nhân viên của Dientu360 sẽ liên hệ và xác nhận đơn hàng của quý khách.

t2

popup

Số lượng:

Tổng tiền: