请问一下大家为什么我买的四针OLED屏幕没有任何反应?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1093|回复: 11

[未解决] 请问一下大家为什么我买的四针OLED屏幕没有任何反应?

[复制链接]
发表于 2022-8-16 21:14 | 显示全部楼层 |阅读模式


我买的显示屏就是上面这种,四针,i2c通讯
目前是无论用商家给的例子程序,还是用adafruit都没有任何反应。
我的代码如下:

#include <SPI.h> // 加载SPI库
#include <Wire.h> // 加载Wire库
#include <Adafruit_GFX.h> // 加载Adafruit_GFX库
#include <Adafruit_SSD1306.h> // 加载Adafruit_SSD1306库

// 定义 OLED屏幕的分辨率
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);

void setup() {
  Serial.begin(9600); // 设置串口波特率

  Serial.println("OLED FeatherWing test"); // 串口输出
  display.begin(SSD1306_SWITCHCAPVCC, 0x78); // 设置OLED的I2C地址

  display.clearDisplay(); // 清空屏幕

  display.setTextSize(1); // 设置字体大小
  display.setTextColor(SSD1306_WHITE); // 设置字体颜色
  display.setCursor(0,0); // 设置开始显示文字的坐标
  display.println("Hello World!"); // 输出的字符
  display.println("   by Lingshunlab.com");
  display.display(); // 使更改的显示生效
}

void loop() {

}

发表于 2022-8-16 21:30 | 显示全部楼层
IIC地址0x3C,不是0x78
 楼主| 发表于 2022-8-16 22:04 | 显示全部楼层
XlinliY.Zhang 发表于 2022-8-16 21:30
IIC地址0x3C,不是0x78

我买的屏幕商家跟我说是这个地址呀
发表于 2022-8-16 22:51 | 显示全部楼层
1.可能地址不对,试试i2c地址查找的程序。

2.试试
  1. #include <Wire.h>
  2. #include <Adafruit_GFX.h>
  3. #include <Adafruit_SSD1306.h>

  4. #define display_SCREEN_WIDTH 128
  5. #define display_SCREEN_HEIGHT 64
  6. #define display_OLED_RESET     4
  7. Adafruit_SSD1306 display(display_SCREEN_WIDTH, display_SCREEN_HEIGHT, &Wire, display_OLED_RESET);

  8. void setup(){
  9.   Serial.begin(9600);
  10.   while (!(display.begin(SSD1306_SWITCHCAPVCC,0x78))) {
  11.     Serial.println("没有搜索到SSD1306");
  12.     delay(500);
  13.   }
  14.   display.setRotation(0);
  15.   display.clearDisplay();
  16.   display.setCursor(0,0);
  17.   display.setTextSize(0);
  18.   display.setTextColor(WHITE, BLACK);
  19.   display.print("Hello world!");
  20. }

  21. void loop(){

  22. }
复制代码


发表于 2022-8-17 00:36 | 显示全部楼层
自带例程里有地址扫描  wire ---> wirescan
---------------------------------------------------------------
#include "Wire.h"

void setup() {
  Serial.begin(115200);
  Wire.begin();
}

void loop() {
  byte error, address;
  int nDevices = 0;

  delay(5000);

  Serial.println("Scanning for I2C devices ...");
  for(address = 0x01; address < 0x7f; address++){
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
      Serial.printf("I2C device found at address 0x%02X\n", address);
      nDevices++;
    } else if(error != 2){
      Serial.printf("Error %d at address 0x%02X\n", error, address);
    }
  }
  if (nDevices == 0){
    Serial.println("No I2C devices found");
  }
}
发表于 2022-8-17 10:46 | 显示全部楼层
楼主,成功点亮了吗?
发表于 2022-8-17 15:54 | 显示全部楼层
i2c 7位地址 1位读写
固定往总线写数据的话 3C后面添个0就变成78了
自己写i2c代码的话第一个字节就需要发78
8位地址可能是把读写算上了,78是写地址 (3C<<1)|0 ,79是读地址 (3C<<1)|1
10位一般不用管,兼容7位
发表于 2022-8-17 16:56 | 显示全部楼层
本帖最后由 47okey 于 2022-8-17 16:59 编辑
努力学习的A 发表于 2022-8-16 22:04
我买的屏幕商家跟我说是这个地址呀

卖家说的地址是0x78没错,但是用在arduino上地址就要用0x3C,您可试试。要不用上面朋友说的地址扫描代码测下就知道了
发表于 2022-8-17 19:33 来自手机 | 显示全部楼层
除了地址,初始化分辨率的部分好像也要加一个重置引脚,即Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire,4);
 楼主| 发表于 2022-8-17 21:42 | 显示全部楼层
47okey 发表于 2022-8-17 16:56
卖家说的地址是0x78没错,但是用在arduino上地址就要用0x3C,您可试试。要不用上面朋友说的地址扫描代码测 ...

解决了 谢谢您
是我地址的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 01:34 , Processed in 0.076306 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表