查看: 797|回复: 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() {

}

签到天数: 72 天

[LV.6]常住居民II

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

该用户从未签到

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

我买的屏幕商家跟我说是这个地址呀

签到天数: 56 天

[LV.5]常住居民I

发表于 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");
  }
}

签到天数: 56 天

[LV.5]常住居民I

发表于 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,您可试试。要不用上面朋友说的地址扫描代码测下就知道了

签到天数: 2 天

[LV.1]初来乍到

发表于 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,您可试试。要不用上面朋友说的地址扫描代码测 ...

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

本版积分规则

热门推荐

原价299元【语音开发板套件】限时免费领!
原价299元【语音开发板套
教你让OLED动起来!多重字符串版!
教你让OLED动起来!多重字
大家都知道:arduino单片机是单线程的 而上次教程中的多段字符串的运行速度必须一致
TTGO T8 1.7.1使用TFT_eSPI库驱动2.4寸ILI9341屏幕显示板载SD内图片
TTGO T8 1.7.1使用TFT_eSP
TTGO T8 1.7.1采用Espressif官方ESP32-WROVER模块制作,4MB闪存和8MB PSRAM,支持TF
TTGO TFT屏幕Arduino使用的小结
TTGO TFT屏幕Arduino使用
TTGO TFT屏幕是一款ESP32和1.44寸LCD屏幕组合的产品,屏幕由ST7789驱动。ESP32自带520
分享我的第一个点灯程序——家庭控制中心
分享我的第一个点灯程序—
2020年,在B站上初识ESP8266,被ESP8266的低门槛、高性价比深深吸引,2020年6月20日,
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表