光子OLED盾联播指南

网页
提供者: b_e_n
被收藏喜爱7

介绍

想让你的光子亚博官网项目显示传感器读数,发挥傍,或画小涂鸦?该光子oled屏蔽可能是完美的结合,而我们将告诉你如何使用它。

替换文本

如果在上面的图片中的OLED屏幕看起来很熟悉,这可能是因为我们使用相同的组件,为微视图微oled突破产品,还有爱迪生的oled块。我们喜欢它,为它的占地面积小的组合,但令人惊讶的清晰的图形 - 屏幕本身是0.66" 跨越,以显示面积测量宽64个像素×48个像素高。

请注意:对于光子亚博官网所有SparkFun盾也与兼容 核心从粒子。在光子的WKP,DAC和VBT引脚都将被标记为A7,A6和3V3 *,分别在核心,但不会改变任何屏蔽件的功能。

包括在本教程

本教程将覆盖OLED屏蔽的功能,如何把它挂在你的项目中,以及如何与它使用SparkFun微型OLED图书馆计划。亚博官网亚博官网

所需材料

所有你需要开始使用光子OLED盾是光子,微型USB电缆和OLED屏蔽。您还需要对注册一个帐户粒子.io并注册您的光子。如何做到这一点的说明,可以发现docs.particle.io文件

粒子光子(标题)

粒子光子(标题)

WRL-13774型
19.00美元
二十九
亚博官网sparkfun光子微oled屏

亚博官网sparkfun光子微oled屏

DEV-13628型
22.95美元
11个

推荐阅读

  • 串行外设接口(SPI)–SPI是与显示器通信的首选方法。
  • 一世2C–或者,我2c可以用来控制显示。它使用较少的电线,但速度比较慢。

OLED盾概览

引脚说明

Since the shield does all of the work for you, there’s no need to actually wire these connections - but in case you’re looking at datasheets, or code for the Microview or OLED breakout, this table will give you a clue as to what the shield is doing.与往常一样,你可以检查原理的更多信息。

替换文本

OLED屏蔽销 光子管脚 spi函数 一世2C函数 笔记
地面 地面 地面 地面 0伏
3v3(视频显示器) 第三版 功率 功率 应为规定的3.3V电源。
D1(SDI/MOSI) A5条 摩西 SDA公司 串行数据输入
d0(sck) A3号 SCK公司 症状自评量表 我和斯皮2C时钟
D2(标准偏差) 味噌 - 在SPI模式下可以不使用。我没有功能2C. -
d / C D6页 数据/命令 一世2C地址选择 如果输入字节是命令或屏幕数据,则为数字管脚到信号。
RST公司 D7号 重置 重置 激活低屏幕重置。
反恐精英 A2型 - SPI芯片选择(低电平有效) -

设置跳线

随着板翻转过来,你会发现有六类跳线。大多数这些跳线是用来在SPI和I之间切换2C模式。作为船上,这些跳线设置来配置显示在SPI模式

替换文本

下面是对每个跳线的概述,由左到右移动,顶部至底部在上面的图片:

  • VD / VB--此跨接器使数字电源(VDD)与蓄电池电源(VBAT)短路。因为这两种电源都可以在3.3V下供电,所以一种简单的单电源解决方案是将它们短接在一起,并为它们提供单一电源。如果您需要以较低的电压(如1.8V)为数字电源供电,则可能需要切断此跳线并提供两个电源。
  • D1 / D2--这个跳线可以用来短D1到D2。如果你想用SPI,把这个跳线打开。如果你用我2C,短接跳线。默认情况下,此跳线处于打开状态。
  • d / C--此跳线可用于将D/C短路至3.3V(1)或0V(0)。在I中2C模式,D/C引脚设置显示器的7位地址。在SPI模式下,该跳线应保持打开状态,因为需要切换D/C引脚以确定输入字节是数据还是命令。
  • BS2BS1--oled上的这些管脚决定了你用哪个接口来控制oled。对于这两种信号,有四种可能的组合:
    BS2 BS1 接口
    0个 0个 大豆分离蛋白
    0个 1个 一世2C
    1个 0个 8位并行(6800)
    1个 1个 8位并行(8080)
    默认情况下,这两个跳线都设置为0,这将使显示器处于SPI模式。如果你想换成我2C模式,清除BS1跳线并将其设置为1。

这简要概述应该覆盖99%的用例。咨询原理和注意事项,如果在其中您有关于跳线或脚的任何问题。

使用OLED盾

当连接您的光子的OLED罩的顶部,请确保您的光子(旁边的A0和D0)的斜面端上的OLED罩顶部斜角线相匹配(与开源硬件徽标结束)。在光子针标签应符合那些对OLED屏蔽为好。可以叠加很多我们的光子盾在一起,这就是为什么OLED屏幕伸出了一边。所以,你可以像这样结束了:

替换文本

使用粒子OLED库

太好了,现在我们明白了硬件设置,让我们把一些代码在这件事上,看看它能做什么。使用我们编写的粒子库,你就可以书写文字,绘制线条和形状,一般显示任何会适合在屏幕上。

获取粒子OLED库

对于这个页面,我们将使用在线粒子环境。如果您使用的粒子开发环境,而不是,你可以从库和代码示例吉特库

下载粒子oled库

载入演示实施例

如果您尚未创建粒子用户帐号,并声称你的董事会,你需要做了。开始在这里是,如果你遇到了麻烦一个伟大的想法。

一旦你登录到build.particle.io和选择设备(这一切都被覆盖在上面的链接),你要点击创建新应用按钮在工具条 - 这是又大又蓝,你不能错过它。打电话给你的应用程序像“OLED_test”。

下一步 - 这是重要的组成部分 - 我们包括亚博官网SparkFunmicrooled图书馆。去做这个:

  • 单击看起来像书签的图标(在黑色瘦侧边栏的左侧,从底部向上第四个)
  • 在“社区库”下的文本框中,搜索“oled”,您会看到“sparkFunmicrooled”出现(尽管它可能会被切掉一点,不要担心)。亚博官网

它应该是这个样子:

替换文本

  • 单击库名称,会弹出一堆内容,包括所有库文件以及如何处理库的一些选项。
  • 在这种情况下,我们只想在应用程序中使用库,因此请单击“包含在应用程序中”按钮。
  • 这将引导您列出所有应用程序-单击刚刚创建的应用程序的名称,您将看到如下语句#包括 “Spark亚博官网FunMicroOLED / SparkFunMicroOLED.h”在你的应用程序顶部。
  • 最后一件事是将数学库添加到我们的草图中-在第一行下面#包括语句,键入:#包括“文件math.h”

现在,我们已经包含在我们的应用程序库中,让我们给它一些代码 - 只要复制下面的演示代码将其粘贴到应用程序的include语句下面

语言:cpp/*micro-oled-shield-example.ino Sparkfun亚博官网 micro-oled库Hello World example Jim Lindblom@Sparkfun Electronics原始创建日期:2015年6月22日此草图在OLED屏上打印了一个友好、可识别的徽标,然后继续演示micro-oled库绘制像素、线条、形状和文本的功能。硬件连接:这个草图是专门为光子微oled屏蔽写的,它为你做所有的布线。如果你有微oled突破,使用以下硬件设置:MicroOLED--------photon gnd--------gnd vdd--------3.3V(VCC)d1/mosi--------a5(不更改)d0/sck--------a3(不更改)d2 d/c--------d6(可以是任何数字管脚)rst--------d7(可以是任何数字管脚)cs--------a2(可以是任何数字管脚)开发环境详细说明:ide:粒子搭建硬件平台:粒子光子斯巴克芬光子微oled屏蔽此代码是beerware;亚博官网如果你在当地看到我(或任何其他斯巴克芬员工),你发现我们亚博官网的代码很有用,请给我们买一轮!按原样分发;不提供担保。*/////////////////////////////////////microoled对象声明///////////////////////////////////////////声明microoled对象。如果未提供参数,则使用默认管脚//,这将适用于光子微oled屏蔽(rst=d7,dc=d6,cs=a2)微oled;void setup(){oled.begin();//初始化oled oled.clear(all);//清除显示的内部存储器oled.display();//显示什么是在缓冲区(闪屏)延迟(1000);//延迟1000毫秒oled.clear(PAGE);//清除缓存。randomSeed(analogRead(A0)+ analogRead(A1));}空隙环(){pixelExample();//运行像素示例功能lineExample();//然后,行示例功能shapeExample();//然后,形状例textExamples();//最后文本示例}空隙pixelExample(){printTitle( “像素”,1);对(INT I = 0;一世 <512;我++){oled.pixel(随机(oled.getLCDWidth()),随机(oled.getLCDHeight()));oled.display();}}空隙lineExample(){INT middleX = oled.getLCDWidth()/ 2;一世NT middleY = oled.getLCDHeight()/ 2;一世NT XEND,YEND;一世NT的lineWidth =分钟(middleX,middleY);printTitle( “行!”,1);对(INT I = 0;一世 <3;我++){对于(INT度= 0;度<360;度+ = 15){XEND =的lineWidth * COS(度* M_PI / 180.0);YEND =的lineWidth * SIN(度* M_PI / 180.0);oled.line(middleX,middleY,middleX + XEND,middleY + YEND);oled.display();延迟(10);}对(INT度= 0;度<360;度+ = 15){XEND =的lineWidth * COS(度* M_PI / 180.0);YEND =的lineWidth * SIN(度* M_PI / 180.0);oled.line(middleX,middleY,middleX + XEND,middleY + YEND,黑色NORM);oled.display();延迟(10);}}}空隙shapeExample(){printTitle( “形状!”,0);//傻乒乓演示。这需要大量的工作,以假傍...一世NT paddleW = 3;//桨宽度INT paddleH = 15;//桨高度//桨0(左)位置坐标INT paddle0_Y =(oled.getLCDHeight()/ 2) - (paddleH / 2);一世NT paddle0_X = 2;//桨1(右)的位置坐标INT paddle1_Y =(oled.getLCDHeight()/ 2) - (paddleH / 2);一世NT paddle1_X = oled.getLCDWidth() -  3  -  paddleW;一世NT ball_rad = 2;//球半径//球位置坐标INT ball_X = paddle0_X + paddleW + ball_rad;一世NT ball_Y =随机(1 + ball_rad,oled.getLCDHeight() -  ball_rad); // paddle0_Y + ball_rad;一世NT ballVelocityX = 1;//球左/右速度INT ballVelocityY = 1;//球向上/向下速度INT paddle0Velocity = -1;//桨0速度INT paddle1Velocity = 1;//桨1速度//而(ball_X> = paddle0_X + paddleW  -  1),而((ball_X  -  ball_rad> 1)&&(ball_X + ball_rad  paddle0_Y)&&(ball_Y  paddle1_X){//检查是否球是桨的高度内,如果((ball_Y> paddle1_Y)&&(ball_Y  =(oled.getLCDHeight() -  ball_rad  -  1))){//更改向上/向下速度方向ballVelocityY = -ballVelocityY;} //移动桨上下paddle0_Y + = paddle0Velocity;paddle1_Y + = paddle1Velocity;//更改桨0的方向,如果它击中顶部/底部,如果((paddle0_Y <= 1)||(paddle0_Y> oled.getLCDHeight() -  2  -  paddleH)){paddle0Velocity = -paddle0Velocity;} //更改桨1的方向,如果它击中顶部/底部,如果((paddle1_Y <= 1)||(paddle1_Y> oled.getLCDHeight() -  2  -  paddleH)){paddle1Velocity = -paddle1Velocity;} //绘制傍字段oled.clear(PAGE);//清除页面//绘制画面的概要:oled.rect(0,0,oled.getLCDWidth() -  1,oled.getLCDHeight());//绘制的中心线oled.rectFill(oled.getLCDWidth()/ 2  -  1,0,2,oled.getLCDHeight());//绘制闸阀:oled.rectFill(paddle0_X,paddle0_Y,paddleW,paddleH);oled.rectFill(paddle1_X,paddle1_Y,paddleW,paddleH);//绘制球:oled.circle(ball_X,ball_Y,ball_rad);//在屏幕上实际绘制的一切:oled.display();延迟(25);//延迟能见度}延迟(1000);}无效textExamples(){printTitle( “发短信!”,1);//演示字体0。5个×8字型oled.clear(PAGE);//清除屏幕oled.setFontType(0);//字体设置为类型0 oled.setCursor(0,0);//设置光标左上//有在字体类型0 255个可能的字符。//让我们通过他们都运行并打印出来!对(INT I = 0;一世 <= 255;我++){//你可以写字节值,他们会被映射到//它们的ASCII字符等效。oled.write(ⅰ);//出写一个字节作为字符oled.display();//绘制在屏幕上的延迟(10);//等待10ms的//我们只能在一个时间显示60字体0字符。//每60个字符,停顿了一会儿。然后清除//页面并重新开始。如果((ⅰ%60 == 0)&&(I = 0)!){延迟(500);//延迟500毫秒oled.clear(PAGE);//清除页面oled.setCursor(0,0);//设置光标左上}}延迟(500);//下一个例子之前等待500ms的//演示字体1。八×16。让我们使用打印功能//显示在这种字体定义的每个角色。oled.setFontType(1);//字体设置为类型1 oled.clear(PAGE);//清除页面oled.setCursor(0,0);//设置光标左上//打印可以用来打印一个字符串到屏幕上:oled.print( “!\” #$%&'()* +, - 。/ 01234" ); oled.display(); // Refresh the display delay(1000); // Delay a second and repeat oled.clear(PAGE); oled.setCursor(0, 0); oled.print("56789:;<=>?@ABCDEFGHI"); oled.display(); delay(1000); oled.clear(PAGE); oled.setCursor(0, 0); oled.print("JKLMNOPQRSTUVWXYZ[\\]^"); oled.display(); delay(1000); oled.clear(PAGE); oled.setCursor(0, 0); oled.print("_`abcdefghijklmnopqrs"); oled.display(); delay(1000); oled.clear(PAGE); oled.setCursor(0, 0); oled.print("tuvwxyz{|}~"); oled.display(); delay(1000); // Demonstrate font 2. 10x16. Only numbers and '.' are defined. // This font looks like 7-segment displays. // Lets use this big-ish font to display readings from the // analog pins. for (int i=0; i<25; i++) { oled.clear(PAGE); // Clear the display oled.setCursor(0, 0); // Set cursor to top-left oled.setFontType(0); // Smallest font oled.print("A0:"); // Print "A0" oled.setFontType(2); // 7-segment font oled.print(analogRead(A0)); // Print a0 reading oled.setCursor(0, 16); // Set cursor to top-middle-left oled.setFontType(0); // Repeat oled.print("A1:"); oled.setFontType(2); oled.print(analogRead(A1)); oled.setCursor(0, 32); oled.setFontType(0); oled.print("A7:"); oled.setFontType(2); oled.print(analogRead(A7)); oled.display(); delay(100); } // Demonstrate font 3. 12x48. Stopwatch demo. oled.setFontType(3); // Use the biggest font int ms = 0; int s = 0; while (s <= 50) { oled.clear(PAGE); // Clear the display oled.setCursor(0, 0); // Set cursor to top-left if (s < 10) oled.print("00"); // Print "00" if s is 1 digit else if (s < 100) oled.print("0"); // Print "0" if s is 2 digits oled.print(s); // Print s's value oled.print(":"); // Print ":" oled.print(ms); // Print ms value oled.display(); // Draw on the screen ms++; // Increment ms if (ms >= 10) // If ms is >= 10 { ms = 0; // Set ms back to 0 s++; // and increment s } delay(1); } } // Center and print a small title // This function is quick and dirty. Only works for titles one // line long. void printTitle(String title, int font) { int middleX = oled.getLCDWidth() / 2; int middleY = oled.getLCDHeight() / 2; oled.clear(PAGE); oled.setFontType(font); // Try to set the cursor in the middle of the screen oled.setCursor(middleX - (oled.getFontWidth() * (title.length()/2)), middleY - (oled.getFontWidth() / 2)); // Print the title: oled.print(title); oled.display(); delay(1500); oled.clear(PAGE); }

现在,点击“闪光”按钮(一个看起来像一个闪电),并等待魔术开始!

资源和进一步去

这里有几个环节,应与您有关的光子OLED盾任何进一步的问题有所帮助:

的进一步深入

现在,你舒服的光子OLED盾和粒子库,你有什么打算做呢?需要一些灵感,看看这些相关教程:

串行图形液晶显示器连接

亚博在线娱乐官网了解如何使用串行图形LCD。

RGB面板连接指南

请使用32×16×64,32×32,16和32×64 RGB LED矩阵面板明亮,鲜艳的显示。此种连接指南介绍了如何连接这些面板与一个Arduino控制它们。

反应计时器

展示心理测时法用这个简单的反应计时器!

oled屏与我们其他的屏非常匹配光子盾牌(二)查看我们的防护罩连接指南:

光子电池屏蔽连接指南

光子电池盾有你的光子需要地跑了出去,充电和监控锂聚合物电池的一切。通过此种连接指南阅读即可开始使用它。

光子IMU屏蔽连接指南

亚博在线娱乐官网了解如何使用SparkFun光子IMU盾里亚博官网面有您的光子设备板上LSM9DS1系统级单芯片,其容纳3轴加速计,3轴陀螺仪和3轴磁力计。