教程:I2C OLEDGydF4y2Ba

3,675GydF4y2Ba

10.GydF4y2Ba

2GydF4y2Ba

简介:Tutorial:I2C OLEDGydF4y2Ba

This Instructable focuses on the I2C, 0.96 inch,128 x 64, OLED (organic light-emitting diode).

这种显示器通常看起来比在照片中的效果更好,这通常会引入在视觉检查期间不存在的伪影。GydF4y2Ba

适用于制造商项目的OLED有多种类型和尺寸,例如128×32、96 X 16、64 X 48、64 X 32、16 X 2等,比这里大很多,都需要独特的草图。不过,为了让它更简单更具体,我们将重点介绍相对较小的4针I2C 0.96英寸128 x 64 OLED。GydF4y2Ba

I2C接口比SPI接口慢,但除了电源外只需要两个引脚。这些PIN可以与其他项目共享。GydF4y2Ba

因此,尽管总体上连接较少,但I2C接口的速度通常不如SPI接口快。不过,我个人更喜欢I2C,因为它的连接更容易实现。GydF4y2Ba

As opposed to the LCD character displays, e.g., the 1602 and 2004 (see my Instructable (I2C LCD)GydF4y2Ba,它相对易于使用,OLED有点复杂,但在此处使用的相对较小的0.96英寸,128 x 64显示屏中的所有像素都是完全寻址的,所以此显示有真实的图形,可以不仅可以显示文本,但是圈子,正方形,三角形等在它的全屏上毫无困难。GydF4y2Ba

Here we mount all items on optional experimental platforms, to make the experiments in the appropriate Steps easier to move as single units.

If after reading this Instructable you found it helpful, please be kind enough to mouse click "Favorited" at the top of this tutorial.

补给品:GydF4y2Ba

- Arduino Uno或兼容的克隆GydF4y2Ba

-0.96英寸I2C 128 x 64 OLEDGydF4y2Ba

- 一些男性到男性杜邦电线GydF4y2Ba

- DHT22温度和湿度传感器GydF4y2Ba

-可选实验平台GydF4y2Ba

第1步:准备实验平台GydF4y2Ba

实验平台进入含有120mm x 83mm的葡萄糖袋的乙烯基袋,以及含有5个螺钉,5个塑料支架(垫片),5个螺母的小塑料袋。不太频繁地发现实验平台,只有四(4)个螺钉,垫圈,垫圈,垫圈,这两种实验平台都包含一个带有四个保险杠的片,即自粘脚。GydF4y2Ba

实验平台仅具有四(4)个螺钉,垫圈和螺母,通常具有较小的塑料自粘脚。这四个(4)颗螺钉上的螺钉头可能偶尔落下一些克隆上的安装孔。因此,建议使用五(5)个螺钉包装。GydF4y2Ba

所有其他4种塑料扑饼缝,都需要四个塑料扑克缝,每个其他物品都有四个。具有五(5)个螺钉的实验平台。垫圈和螺母有一个额外的螺丝,立场和螺母,不需要为平台添加一个UNO ..GydF4y2Ba

However, the bags of either style experimental platform do not contain instructions.

最初切割外部乙烯基袋以拆下有机玻璃板和较小的袋子。GydF4y2Ba

这Plexiglas sheet is covered on both sides with paper to protect it in handling and transit.

第一步是将纸张剥离在平台的每一侧并拆下两张纸。一旦从每侧移除纸张,容易看到用于将Arduino安装到平台的四个孔。如果在剥离纸后,它应该更容易,丙烯酸片应放置在右侧的四个孔和最靠近丙烯酸板的一个边缘,朝向您(如附图所示)。GydF4y2Ba

我使用了具有五个螺钉,垫圈和坚果的实验平台。GydF4y2Ba

第2步:将Arduino UNO或克隆安装到实验平台上GydF4y2Ba

Arduino Uno R3板及其克隆有四个安装孔。GydF4y2Ba

在实验平台封装中透明间隔物放置在UNO R3或其克隆的下侧和丙烯酸板的上侧之间。GydF4y2Ba

When working on my first experimental board I made the mistake of assuming that the spacers were washers that should be placed underneath the Plexiglas board to hold the nuts in place - they should not. The spacers are positioned underneath the Arduino UNO board, or clone, around the screws after the screws pass through the UNO's, or clone's, mounting holes. After passing through the board the screws pass through the spacers and then through the holes in the acrylic Plexiglass board.

螺丝由小包装内的螺母端接。应拧紧螺钉和螺母,以确保Arduino在使用时不会移动。GydF4y2Ba

我发现最接近重置按钮的洞最容易启动(请参阅照片),并在Arduino顺时针顺时针工作。使用一个螺钉时,UNO连接到板上,使用一个螺钉。您需要一个小菲利普斯头螺丝刀转动螺丝。我发现一个插座,坚持坚果非常有用,虽然没有必要。GydF4y2Ba

我使用Wiha制作的驱动程序,并在Amazon上提供(Wiha(261)phox50和Wiha(265)4.0x60)。GydF4y2Ba

然而,任何小型菲利普斯头螺丝刀都应该在没有问题的情况下工作,并且如前所述,螺母驱动器不是真正需要的(尽管它使安装件更快,更容易,并且通常更安全)。GydF4y2Ba

第三步:实验1 Arduino和OLED显示文本GydF4y2Ba

前两张照片显示了这个和下一步的硬件配置GydF4y2Ba

For our first sketch we will display three short lines of simple text.

Here we turn the display to portrait mode.

这first two lines, shown below, should always be added to our text sketches.

以下行确保我们为我们的草图添加了相应的库,即U8G2Lib.h,我们有适当的构造函数。GydF4y2Ba

#include U8g2lib.h//U8g2lib.h应括在小于和大于括号中GydF4y2Ba
//不幸的是,这个网站删除了小于括号和大于括号和它们之间的文本GydF4y2Ba

你8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R1, SCL, SDA, U8X8_PIN_NONE);

这GydF4y2BaU8G2.GydF4y2Balibrary is a replacement, and supersedes, the first effort at a graphics library,你GydF4y2Ba8克GydF4y2Ba(GydF4y2Ba你GydF4y2Baniversal8-bitGGydF4y2Ba由奥利克劳斯开发,现在由阿尼姆Lä乌格。GydF4y2Ba

如果使用与本实验中的相同OLED和U8G2库,则应在您的草图中使用#include预处理器指令和上面显示的构造线,GydF4y2Ba

上面的SSD1306告诉use我们应该将它与SSD1306 OLED驱动程序一起使用,这是这里使用的OLED所附带的。128X64以像素为单位标识显示器的大小。NONAME\ F\ u SW\ u I2C标识我们正在使用I2C显示器。GydF4y2Ba

我们不使用r U8X8_PIN_NONE标识eset pin.

在这里,我们使用包含的库中的函数,该库允许我们显示字符串。其他功能可以在GydF4y2Ba

https://github.com/olikraus/u8g2/diki/u8g2referen ...GydF4y2Ba

Finally, in our Sketch, we writeU8G2.GydF4y2Ba。GydF4y2Basendbuffer();GydF4y2Ba显示OLED屏幕上的项目。GydF4y2Ba

/ * Arduino和OLED显示GydF4y2Ba文本GydF4y2Ba

*程序员:R.Jordan KreindlerGydF4y2Ba

*创建:2020年11月6日GydF4y2Ba

*/GydF4y2Ba

#includeU8g2lib.h型//U8G2Lib.h应封闭在少于且远括号内GydF4y2Ba

//不幸的是,这个网站删除了小于且大于括号和它们之间的文本GydF4y2Ba

// sketches

你8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R1, SCL, SDA, U8X8_PIN_NONE);

/ *GydF4y2Ba

你8G2_R0 No rotation, landscape

U8G2_R1顺时针旋转90度//使我们进入纵向模式GydF4y2Ba

U8G2_R2 180度顺时针旋转GydF4y2Ba

U8G2_R3 270度顺时针旋转GydF4y2Ba

*/GydF4y2Ba

void setup(){GydF4y2Ba

u8g2.begin();GydF4y2Ba

U8G2.SetFont(U8G2_FONT_NCENR18_TF);//字体大小18GydF4y2Ba

u8g2.drawStr(17,40,“测试”);//显示分辨率为64 x 128GydF4y2Ba

u8g2.drawStr(20,80,“L2”);GydF4y2Ba

U8G2.。drawStr(20, 120," L3 ");

U8G2.。sendbuffer();GydF4y2Ba

}GydF4y2Ba

void循环()GydF4y2Ba

第四步:实验2 Arduino和OLED显示实心圆(盘)和三角形GydF4y2Ba

这里我们再次使用肖像模式。但是,由于我们正在绘制一个圆和三角形,因此不需要选择字体。GydF4y2Ba

注意:这里使用的两个函数是GydF4y2Ba

8g2.drawdisc()GydF4y2Ba和GydF4y2Ba

U8G2.DrawTriangle()GydF4y2Ba。GydF4y2Ba

As stated previously these functions, and all references, can be found at

https://github.com/olikraus/u8g2/diki/u8g2referen ...GydF4y2Ba

在所附的照片中,圆形和三角形是分开显示的,也有组合显示的,如我们的草图所示。GydF4y2Ba

相机快门和显示器之间似乎发生了不幸的相互作用,正如在视频中看到的那样,圆形和三角形在显示器的不同时刻似乎部分被遮挡。然而,当用眼睛直接观察时,就像在最后一张静止照片中看到的那样,这张图像看起来很稳定,没有任何问题。GydF4y2Ba

/ * Arduino和OLED,填充圆圈/盘和填充三角形GydF4y2Ba

*程序员:R.Jordan KreindlerGydF4y2Ba

*创建:2020年11月8日GydF4y2Ba

*/GydF4y2Ba

#includeU8g2lib.h型GydF4y2Ba// u8g2lib.h应括起来小于括号GydF4y2Ba

//不幸的是,这个网站删除了小于且大于括号和它们之间的文本GydF4y2Ba
// sketches

你8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R1, SCL, SDA, U8X8_PIN_NONE);

/ *GydF4y2Ba

你8G2_R0 No rotation, landscape

U8G2_R1 90度顺时针旋转GydF4y2Ba

U8G2_R2 180度顺时针旋转GydF4y2Ba

U8G2_R3 270度顺时针旋转GydF4y2Ba

*/GydF4y2Ba

void setup(){GydF4y2Ba

u8g2.begin();GydF4y2Ba

u8g2.牵引盘(40、20、20、u8g2\全部牵引);GydF4y2Ba

U8G2.。drawTriangle(40, 20, 50, 100, 30, 100);

U8G2.。sendbuffer();GydF4y2Ba

}GydF4y2Ba

void循环()GydF4y2Ba

{}GydF4y2Ba

第5步:实验-3湿度和温度并在OLED上显示GydF4y2Ba

Insert the four pins of the DHT22 into the half-size breadboard, on the experimental platform, thereby mounting the sensor on the breadboard.

DHT22有四个引脚。我把这些针脚编号为1到4,如照片所示。GydF4y2Ba

这power to the sensor is provided via pins 1 and 4. Specifically, pin 1 provides the +5v power, and pin 4 is used for ground.

针脚3不使用,针脚2用于提供传感器的输出。GydF4y2Ba

连接DHT22上使用的三个插脚,然后按如下方式连接Arduino UNO:1)传感器的插脚1连接到UNO的5v电源插座,2)传感器的插脚4连接到UNO的一个GND连接器,3)传感器的插脚2(数据输出插脚)连接到数字插座3,即UNO上的D3,不需要模拟连接器。GydF4y2Ba

注意:DHT22传感器只能每2秒提供更新的信息。因此,如果您每两秒钟杆杆多次杆,则可能会获得不当前的结果。您可以添加该行GydF4y2Ba延迟(2000);GydF4y2Ba如果不是当前的结果,在下面的草图中是您的问题。因为它适合我。GydF4y2Ba

这DHT22 sensor provides Centigrade temperature values which can be easily converted to Fahrenheit.

这formula for this conversion is Fahrenheit Temperature = Centigrade Temperature * 9 / 5 + 32.

在这里,我们在横向模式下使用OLED显示。GydF4y2Ba

在这一步中使用的OLED是双色类型,黄蓝色,像素的顶线为黄色,如图所示。GydF4y2Ba

显示器在眼睛看来比照片上好看。直接看OLED,没有任何瑕疵/问题。GydF4y2Ba

由于Instructable.com网站删除了小于和大于括号,以及它们之间的文本,在草图中,我附加了一个带有相应草图的文本文件。遗憾的是,引号之间的空格也被这个网站删除了GydF4y2Ba

这third (3rd) still photograph shows the DHT22 connected to the breadboard, while the fourth (4th) and fifth (5th) still photograph show the final configuration with both the DHT22 and OLED on the breadboard.

In the seventh (7th) and eighth (8th) still photographs, more on the eighth (8th) below, the font is set to a height of 18 pixels usingU8G2._font_luRS18_te。This font can be substituted foru8g2字体GydF4y2Ba,在下面的草图中,由任何想要更大字体的用户使用。并且不介意输出被“挤”在一起GydF4y2Ba

In the eighth (8th) still photograph, the relative humidity display is indented to the right, while, at the same time it is set to the smaller 10 pixel font, and the Centigrade and Fahrenheit temperature displays are set to the larger 18 pixel font.

在最后仍在拍摄温度下,终身和华氏度,最初将被设置为GydF4y2Ba浮动GydF4y2Ba那rather thanINTS.GydF4y2Ba那GydF4y2Ba因此,我们显示十进制值。GydF4y2Ba

线路,GydF4y2Ba

U8G2.。drawStr(30, 41, " ");和GydF4y2Ba

u8g2.drawStr(30,62,“”);GydF4y2Ba

are included, in the Sketch, to avoid any artifacts appearing as the C and F temperatures change. However, as noted above, additional spaces between quotes are removed by this site. So, you may want to see the attached text file.

在我们的代码中实现的两(2)秒延迟GydF4y2Ba延迟(2000);GydF4y2Bais appropriate for the DHT22.

要查看与最后一个“压扁”显示关联的草图,请下载最后一个文本文件。GydF4y2Ba

/ *GydF4y2Ba

Sketch to display humidity and temperature

Written by R. Jordan Kreindler, J

素描:2020年11月27日GydF4y2Ba

使用0.96英寸OLED显示湿度,以及华氏和摄氏度GydF4y2Ba

室温。GydF4y2Ba

这DHT22 sensor provides Centigrade temperature values which can be easily converted to Fahrenheit.

*/GydF4y2Ba

#include

// u8g2lib.h应括起来小于括号after#include

//不幸的是,这个网站删除了小于括号和大于括号和它们之间的文本GydF4y2Ba

你8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);

/ *GydF4y2Ba

你8G2_R0 No rotation, landscape

U8G2_R1 90度顺时针旋转// Moves us to portrait

U8G2_R2 180度顺时针旋转GydF4y2Ba

U8G2_R3 270度顺时针旋转GydF4y2Ba

*/GydF4y2Ba

#include

// DHT.hshould be enclosed in less than and greater than brackets after #include

//不幸的是,这个网站删除了小于且大于括号和它们之间的文本GydF4y2Ba

// sketches

#define dhtdata 3 //来自DHT22的数据引脚是数字引脚3GydF4y2Ba

DHT DHT(DHTData,DHT22);//定义一个DHT对象,DHTGydF4y2Ba

纯湿度= 0;//将湿度持有作为整数GydF4y2Ba

浮点数cTemp=0.0;//将摄氏温度结果保存为整数GydF4y2Ba

//float centigradeTemp = 0; // The Centigrade temperature

float ftemp = 0;//将持有计算的faheney温度GydF4y2Ba

在里面t delay1 = 4000; // The time between text displays

void setup(){GydF4y2Ba

u8g2.begin();GydF4y2Ba

dht.begin(); //Start the DHT22 sensor

}GydF4y2Ba

void循环()GydF4y2Ba

{GydF4y2Ba

U8G2.。setFont(u8g2_font_profont22_tf); // Set Font

U8G2.。drawStr(32, 18, "RH:"); // Display resolution is 128 x 64

湿度=圆形(dht.readhumity());GydF4y2Ba

U8G2.SetCursor(70,18);GydF4y2Ba

U8G2.。print(humidity);

u8g2.setFont(u8g2_font_luRS18_te);//设置字体GydF4y2Ba

u8g2.drawStr(02,41,“C:”);GydF4y2Ba

U8G2.。setCursor(30,41);

cTemp = dht.readTemperature();

u8g2.打印(cTemp);GydF4y2Ba

U8G2.。drawStr(30, 41, " "); // Note: Spaces Between The Quotes are Removed By This Site

U8G2.Drawstr(02,62,“F:”);GydF4y2Ba

fTemp=cTemp*9.0/5.0+32.0;GydF4y2Ba

u8g2.设置光标(30,62);GydF4y2Ba

U8G2.Print(FTEMP);GydF4y2Ba

延迟(2000);GydF4y2Ba

U8G2.Drawstr(30,62,“”)GydF4y2Ba;GydF4y2Ba//注意:删除引号之间的空格GydF4y2Ba经过This Site

U8G2.。sendbuffer();GydF4y2Ba

}GydF4y2Ba

Step 6: Afterwards

如果你来到这一点 - 祝贺。GydF4y2Ba

You should now have a basic understanding of some of the capabilities of the relatively small I2C, 0.96 inch, 128 x 64 OLED display covered in this tutorial., in both portrait and landscape modes.

我希望你发现这种可指示的有趣和有用。GydF4y2Ba

If you have any comments, suggestions, or questions related to this tutorial, please be kind enough to add your comments below, if there are any or start this section.

如果您对本教程未涵盖的0.96英寸OLED有任何相关的想法或问题,或者对我如何改善这种指示的任何建议,我很高兴收到您的来信。GydF4y2Ba

你可以打电话给我transiintbox@gmail.com. (请将第二个“i”替换为“e”,以便与我联系)。GydF4y2Ba

1 Person Made This Project!

建议书GydF4y2Ba

AI标签制造商GydF4y2Ba
5.GydF4y2Ba521GydF4y2Ba
Moon Lamp With Remote
Moon Lamp With Remote 经过GydF4y2Baamit_jain.GydF4y2Ba 在里面GydF4y2BaLEDGydF4y2Ba
20.GydF4y2Ba1.4公里GydF4y2Ba
如何在家制作Flex传感器|DIY Flex传感器GydF4y2Ba
9.GydF4y2Ba1.2公里GydF4y2Ba
炒作|听到你的个人情绪GydF4y2Ba
20.GydF4y2Ba1.9K.GydF4y2Ba
  • Microcontroller Contest

    Microcontroller Contest
  • Automation Contest

    Automation Contest
  • 让它发光比赛GydF4y2Ba

    让它发光比赛GydF4y2Ba

2讨论GydF4y2Ba

0.GydF4y2Ba
r jordan kreindlerGydF4y2Ba

6周前回复GydF4y2Ba

谢谢你。GydF4y2Ba
这very best, and stay safe,
约旦GydF4y2Ba