linux下OLED屏开发-IIC协议

简介: linux下OLED屏开发-IIC协议

实现oled屏幕的显示我使用的是Orange Pi Zero 2

由 26pin 的原理图可知, Orange Pi Zero 2 可用的 i2c 为 i2c3

模块接线:

  • VCC——3.3V/5V
  • GND——GND
  • SDA——SDA
  • SCL——SCL


启动 linux 系统后, 先确认下/dev 下存在 i2c-3 的设备节点


从命令运行结果能观察到系统支持I2C-3和I2C-5的驱动,而H616的外设我们看到只有一个IIC接 口,用的是IIC-3


Linux一切皆文件,每个硬件设备“对应”一个文件,由驱动程序提供映射


97974400d794e9851fff298f9d5e7b45_70f598e8e8374508982505e3d93a5b3f.png


开始测试 i2c, 首先安装 i2c-tools

输入命令 sudo apt-get install i2c-tools

插上模块,显示3c

输入命令复制官方自带的oled屏幕代码

进行修改,代码示例:

#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#include "oled.h"
#include "font.h"
int oled_show(struct display_info *disp) {
    int i;
    char buf[100];
    oled_putstrto(disp, 0, 9+1, "Welcome to My HomeAssitant");
    disp->font = font2;
    oled_putstrto(disp, 0, 20, " ---Hello zgl--- ");
    disp->font = font2;
    oled_send_buffer(disp);
    return 0;
}
void show_error(int err, int add) {
    printf("\nERROR: %i, %i\n\n", err, add);
}
void show_usage(char *progname) {
    printf("\nUsage:\n%s <I2C bus device node >\n", progname);
}
int main(int argc, char **argv) {
    int e;
    char filename[32];
    struct display_info disp;
    if (argc < 2) {
    show_usage(argv[0]);
    return -1;
    }
    memset(&disp, 0, sizeof(disp));
    sprintf(filename, "%s", argv[1]);
    disp.address = OLED_I2C_ADDR;
    disp.font = font2;
    e = oled_open(&disp, filename);
    e = oled_init(&disp);
    oled_show(&disp);
    return 0;
}

编译运行:

gcc -o oled oled.c -lwiringPi -lwiringPiDev -lpthread -lm -lcrypt -lrt

sudo ./oled /dev/i2c-3

如图:

相关文章
|
10天前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
29 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
16天前
|
Web App开发 安全 Linux
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
《FFmpeg开发实战》书中介绍轻量级流媒体服务器MediaMTX,但其功能有限,不适合生产环境。推荐使用国产开源的ZLMediaKit,它支持多种流媒体协议和音视频编码标准。以下是华为欧拉系统下编译安装ZLMediaKit和FFmpeg的步骤,包括更新依赖、下载源码、配置、编译、安装以及启动MediaServer服务。此外,还提供了通过FFmpeg进行RTSP和RTMP推流,并使用VLC播放器拉流的示例。
29 3
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
|
17天前
|
编解码 Linux
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
《FFmpeg开发实战》书中指导如何在Linux环境下为FFmpeg集成libwebp以支持WebP图片编解码。首先,从GitHub下载libwebp源码,解压后通过`libtoolize`,`autogen.sh`,`configure`,`make -j4`和`make install`步骤安装。接着,在FFmpeg源码目录中重新配置并添加`--enable-libwebp`选项,然后进行`make clean`,`make -j4`和`make install`以编译安装FFmpeg。最后,验证FFmpeg版本信息确认libwebp已启用。
34 1
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
|
23天前
|
Linux 编解码 Python
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
AV1是一种高效免费的视频编码标准,由AOM联盟制定,相比H.265压缩率提升约27%。各大流媒体平台倾向使用AV1。本文介绍了如何在Linux环境下为FFmpeg集成AV1编解码库libaom、libdav1d和libsvtav1。涉及下载源码、配置、编译和安装步骤,包括设置环境变量以启用这三个库。
42 3
FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器
|
11天前
|
Linux Windows 虚拟化
【Linux环境搭建实战手册】:打造高效开发空间的秘籍
【Linux环境搭建实战手册】:打造高效开发空间的秘籍
|
18天前
|
Linux 芯片
Linux 驱动开发基础知识——查询方式的按键驱动程序_编写框架(十三)
Linux 驱动开发基础知识——查询方式的按键驱动程序_编写框架(十三)
11 2
|
1月前
|
运维 监控 关系型数据库
【Zabbix 6(1),Linux运维组件化开发教程
【Zabbix 6(1),Linux运维组件化开发教程
|
1月前
|
编解码 Linux 5G
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3,中国制定的第三代音视频标准,是首个针对8K和5G的视频编码标准,相比AVS2和HEVC性能提升约30%。uavs3d是AVS3的解码器,支持8K/60P实时解码,且在各平台有优秀表现。要为FFmpeg集成AVS3解码器libuavs3d,需从GitHub下载最新源码,解压后配置、编译和安装。之后,重新配置FFmpeg,启用libuavs3d并编译安装,通过`ffmpeg -version`确认成功集成。
38 0
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
|
1月前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
1月前
|
运维 网络协议 Linux
2024年最全CentOS8 Consul微服务架构安装(1)_agent(1),Linux运维开发面试
2024年最全CentOS8 Consul微服务架构安装(1)_agent(1),Linux运维开发面试