极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: eagler8

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

[复制链接]
 楼主| 发表于 2019-8-21 18:42:08 | 显示全部楼层




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-21 19:08:15 | 显示全部楼层


0.96寸OLED模块
电压:3V~5V DC
工作温度:-30℃~70℃
驾驶义务:1/64职责
高分辨率:128 * 64
面板尺寸:26.70 * 19.26 * 1.85mm / 1.03 * 0.76 * 0.07英寸(约)
有效面积:21.74 * 11.2mm /0.86*0.44英寸(约)
驱动IC:SSD1306
128 * 64 LED显示模块,支持多种控制芯片。
完全兼容51系列,MSP430系列,STM32 / 2,CSR IC等
超低功耗:全屏点亮0.08W
超高亮度和对比度可调
带嵌入式驱动/控制器
接口类型为IIC

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-21 19:16:07 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-21 19:18:21 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 10:43:25 | 显示全部楼层
模块电原理图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 10:53:03 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 10:54:52 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 10:56:59 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 11:43:14 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
  4. 安装驱动库:工具—管理库—搜索“U8glib”-下载-安装
  5. 实验接线:A4---SDA, A5---SCL
  6. 项目一:第一次点亮OLED屏
  7. */

  8. #include "U8glib.h"
  9. String i="Time:";
  10. int s=0;//变量秒  用来显示
  11. U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);        // 小E开发板上面就是用的这个

  12. void draw() {
  13.   u8g.setFont(u8g_font_unifont); //  设置字体 这句必要
  14.   u8g.drawStr( 1, 10, "Hello Eagler8!");//第一个是x第二个是y坐标
  15.   u8g.setFont(u8g_font_ncenB14);//还是先设置一个字体
  16.   u8g.setPrintPos(0,44);//然后设置一个位置
  17.   u8g.print(i);//然后就是数据
  18.   u8g.print(s);
  19. }

  20. void setup(void) {
  21. }

  22. void loop(void) {
  23. if(s!=millis()/10)
  24.   s=millis()/10;
  25.   //上面这一句是取系统运行秒数  单位ms除以1000就是秒
  26.   u8g.firstPage();  
  27.   do {
  28.     draw();
  29.   }
  30.   while( u8g.nextPage() ); //延迟一段时间后重新生成图片
  31.   delay(10);
  32. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 12:20:20 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 13:26:03 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
  4. 安装驱动库:工具—管理库—搜索“U8glib”-下载-安装
  5. 实验接线:A4---SDA, A5---SCL
  6. 项目二:测试之1-100循环显示数字
  7. */

  8. #include "U8glib.h"  //加载显示库文件
  9. U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);  
  10. // I2C / TWI 实例化

  11. void setup() {
  12. }

  13. void loop() {
  14.   for(int i=1;i<101;i++){
  15.      u8g.firstPage();  //一下是显示实现部分
  16.   do {
  17.   u8g.setFont(u8g_font_fub30);
  18.   //设置字体和自号,目前测试字号有fub14,17,20,30
  19.   u8g.setPrintPos(0, 50); //显示的位置
  20.   u8g.print(i);//显示变量i的值
  21.   u8g.setFont(u8g_font_fub14);//设置字体和自号
  22.   u8g.setPrintPos(95, 50); //显示的位置
  23.   u8g.print("cm");//显示cm字样
  24.   }
  25.   while( u8g.nextPage() );
  26.   delay(100);//显示的时间间隔。
  27.   }
  28. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 16:06:45 | 显示全部楼层


有关OLED的两个非常重要的知识点:
其一 像素点点阵
点阵图也叫栅格图像,像素图,简单的说,就是最小单位由像素构成的图,缩放会失真。构成位图的最小单位是像素,位图就是由像素阵列的排列来实现其显示效果的,每个像素有自己的颜色信息,在对位图图像进行编辑操作的时候,可操作的对象是每个像素,我们可以改变图像的色相、饱和度、明度,从而改变图像的显示效果。举个例子来说,位图图像就好比在巨大的沙盘上画好的画,当你从远处看的时候,画面细腻多彩,但是当你靠的非常近的时候,你就能看到组成画面的每粒沙子以及每个沙粒单纯的不可变化颜色。

OLED其实就是一个M x n 的像素点阵,想显示什么就得把具体位置的像素点亮起来。对于每一个像素点,有可能是1点亮,也有可能是0点亮。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 16:17:43 | 显示全部楼层
其二 坐标系
坐标系,是理科常用辅助方法。常见有直线坐标系,平面直角坐标系。为了说明质点的位置、运动的快慢、方向等,必须选取其坐标系。在参照系中,为确定空间一点的位置,按规定方法选取的有次序的一组数据,这就叫做“坐标”。在某一问题中规定坐标的方法,就是该问题所用的坐标系。坐标系的种类很多,常用的坐标系有:笛卡尔直角坐标系、平面极坐标系、柱面坐标系(或称柱坐标系)和球面坐标系(或称球坐标系)等。中学物理学中常用的坐标系,为直角坐标系,或称为正交坐标系。从广义上讲:事物的一切抽象概念都是参照于其所属的坐标系存在的,同一个事物在不同的作标系中就会有不同抽象概念来表示,坐标系表达的事物有联系的抽象概念的数量【既坐标轴的数量】就是该事物所处空间的维度。两件能相互改变的事物必须在同坐标系中。

在OLED坐标系中,左上角是原点,向右是X轴,向下是Y轴。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 16:31:55 | 显示全部楼层
  1. /*
  2. 【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  3. 实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
  4. 安装驱动库:工具—管理库—搜索“U8glib”-下载-安装
  5. 实验接线:A4---SDA, A5---SCL
  6. 项目三:将U8Glib标志放在显示屏上(Put the U8GLIB logo on the display.)
  7. 显示“Copyright (c) 2019, [email protected]
  8. */

  9. #include "U8glib.h"

  10. U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);  

  11. void drawColorBox(void)
  12. {
  13.   u8g_uint_t w, h;
  14.   u8g_uint_t r, g, b;

  15.   w = u8g.getWidth() / 32;
  16.   h = u8g.getHeight() / 8;
  17.   for ( b = 0; b < 4; b++ )
  18.     for ( g = 0; g < 8; g++ )
  19.       for ( r = 0; r < 8; r++ )
  20.       {
  21.         u8g.setColorIndex((r << 5) |  (g << 2) | b );
  22.         u8g.drawBox(g * w + b * w * 8, r * h, w, h);
  23.       }
  24. }

  25. void drawLogo(uint8_t d)
  26. {
  27. #ifdef MINI_LOGO
  28.   u8g.setFont(u8g_font_gdr17r);
  29.   u8g.drawStr(0 + d, 22 + d, "U");
  30.   u8g.setFont(u8g_font_gdr20n);
  31.   u8g.drawStr90(17 + d, 8 + d, "8");
  32.   u8g.setFont(u8g_font_gdr17r);
  33.   u8g.drawStr(39 + d, 22 + d, "g");

  34.   u8g.drawHLine(2 + d, 25 + d, 34);
  35.   u8g.drawVLine(32 + d, 22 + d, 12);
  36. #else
  37.   u8g.setFont(u8g_font_gdr25r);
  38.   u8g.drawStr(0 + d, 30 + d, "U");
  39.   u8g.setFont(u8g_font_gdr30n);
  40.   u8g.drawStr90(23 + d, 10 + d, "8");
  41.   u8g.setFont(u8g_font_gdr25r);
  42.   u8g.drawStr(53 + d, 30 + d, "g");

  43.   u8g.drawHLine(2 + d, 35 + d, 47);
  44.   u8g.drawVLine(45 + d, 32 + d, 12);
  45. #endif
  46. }

  47. void drawURL(void)
  48. {
  49. #ifndef MINI_LOGO
  50.   u8g.setFont(u8g_font_4x6);
  51.   if ( u8g.getHeight() < 59 )
  52.   {
  53.     u8g.drawStr(53, 9, "Copyright (c) 2019,");
  54.     u8g.drawStr(77, 18, "[email protected]");
  55.   }
  56.   else
  57.   {
  58.     u8g.drawStr(1, 54, " Copyright (c) 2019, [email protected]");
  59.   }
  60. #endif
  61. }


  62. void draw(void) {
  63.   if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
  64.     drawColorBox();
  65.   }
  66.   u8g.setColorIndex(1);
  67.   if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g.getMode()) > 1 ) {
  68.     drawLogo(2);
  69.     u8g.setColorIndex(2);
  70.     drawLogo(1);
  71.     u8g.setColorIndex(3);
  72.   }
  73.   drawLogo(0);
  74.   drawURL();

  75. }

  76. void setup(void) {
  77. }

  78. void loop(void) {

  79.   u8g.firstPage();
  80.   do {
  81.     draw();
  82.     u8g.setColorIndex(1);
  83.   } while ( u8g.nextPage() );

  84.   delay(200);
  85. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-22 16:37:05 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-2 16:49 , Processed in 0.037995 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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