极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25124|回复: 13

OCROBOT入门教程018--使用IIC点阵显示数字

[复制链接]
发表于 2014-4-25 16:15:39 | 显示全部楼层 |阅读模式
本帖最后由 董董soul 于 2016-10-27 11:09 编辑

IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线。

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。

IIC总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。使用I2C总线连接各种模块十分方便灵活,我们未来介绍各种模块时会遇到大量的IIC模块。


这次我们就会用到OCROBOT IIC 8X8点阵,硬件连接如下图,VCC GND SDA SCL按照对应管脚接好即可。



  1. #include <Wire.h>
  2. #include "Adafruit_LEDBackpack.h"
  3. #include "Adafruit_GFX.h"

  4. Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix();

  5. void setup() {
  6.   Serial.begin(9600);
  7.   Serial.println("8x8 LED Matrix Test");

  8.   matrix.begin(0x70);  // pass in the address
  9. }

  10. static const uint8_t PROGMEM
  11. smile_bmp[] =
  12. {
  13.   B00111100,
  14.   B01000010,
  15.   B10100101,
  16.   B10000001,
  17.   B10100101,
  18.   B10011001,
  19.   B01000010,
  20.   B00111100 }
  21. ,
  22. neutral_bmp[] =
  23. {
  24.   B00111100,
  25.   B01000010,
  26.   B10100101,
  27.   B10000001,
  28.   B10111101,
  29.   B10000001,
  30.   B01000010,
  31.   B00111100 }
  32. ,
  33. frown_bmp[] =
  34. {
  35.   B00111100,
  36.   B01000010,
  37.   B10100101,
  38.   B10000001,
  39.   B10011001,
  40.   B10100101,
  41.   B01000010,
  42.   B00111100 };

  43. void loop() {
  44.   matrix.setRotation(3);
  45.   matrix.clear();
  46.   matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_GREEN);
  47.   matrix.writeDisplay();
  48.   delay(500);

  49.   matrix.clear();
  50.   matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_YELLOW);
  51.   matrix.writeDisplay();
  52.   delay(500);

  53.   matrix.clear();
  54.   matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_RED);
  55.   matrix.writeDisplay();
  56.   delay(500);

  57.   matrix.clear();      // clear display
  58.   matrix.drawPixel(0, 0, LED_GREEN);  
  59.   matrix.writeDisplay();  // write the changes we just made to the display
  60.   delay(500);

  61.   matrix.clear();
  62.   matrix.drawLine(0,0, 7,7, LED_YELLOW);
  63.   matrix.writeDisplay();  // write the changes we just made to the display
  64.   delay(500);

  65.   matrix.clear();
  66.   matrix.drawRect(0,0, 8,8, LED_RED);
  67.   matrix.fillRect(2,2, 4,4, LED_GREEN);
  68.   matrix.writeDisplay();  // write the changes we just made to the display
  69.   delay(500);

  70.   matrix.clear();
  71.   matrix.drawCircle(3,3, 3, LED_YELLOW);
  72.   matrix.writeDisplay();  // write the changes we just made to the display
  73.   delay(500);

  74.   matrix.setTextWrap(false);  // we dont want text to wrap so it scrolls nicely
  75.   matrix.setTextSize(1);
  76.   matrix.setTextColor(LED_GREEN);
  77.   matrix.setRotation(3);     //FANG XIANG
  78.   for (int8_t x=7; x>=-72; x--) {
  79.     matrix.clear();
  80.     matrix.setCursor(x,0);
  81.     matrix.print("Hello OCROBOT");
  82.     matrix.writeDisplay();
  83.     delay(100);
  84.   }
  85.   matrix.setTextWrap(false);  // we dont want text to wrap so it scrolls nicely
  86.   matrix.setTextSize(1);
  87.   matrix.setTextColor(LED_YELLOW);
  88.   matrix.setRotation(3);
  89.   for (int8_t x=7; x>=-72; x--) {
  90.     matrix.clear();
  91.     matrix.setCursor(x,0);
  92.     matrix.print("1234567890");
  93.     matrix.writeDisplay();
  94.     delay(100);
  95.   }
  96.   matrix.setTextWrap(false);  // we dont want text to wrap so it scrolls nicely
  97.   matrix.setTextSize(1);
  98.   matrix.setTextColor(LED_RED);
  99.   matrix.setRotation(3);
  100.   for (int8_t x=7; x>=-72; x--) {
  101.     matrix.clear();
  102.     matrix.setCursor(x,0);
  103.     matrix.print("ha~! ha~! ha~!");
  104.     matrix.writeDisplay();
  105.     delay(100);
  106.   }
  107. }
复制代码




注意:
如果使用的IDE编译是提示Robot_Control什么什么编译报错,进入libraries文件夹找到Robot_Control与Robot_Motor两个文件夹,删除。就可以正常编译了。

这是因为与Robot_Control的函数名冲突了。。。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-7-26 11:13:19 | 显示全部楼层
代码能否稍微注释下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-27 18:42:09 | 显示全部楼层
Friday 发表于 2014-7-26 11:13
代码能否稍微注释下

这个。。。国外资料注释都写的很少。。。出HoneyBee教程时重新注释下吧
回复 支持 反对

使用道具 举报

发表于 2014-8-6 08:35:09 | 显示全部楼层
Adafruit_LED_Backpack_Library.zip      Adafruit_GFX_Library.zip    这两个库是标准库还是扩展库呢? 能不能稍微说明下各自的功能分别是啥?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-7 12:11:08 | 显示全部楼层
Friday 发表于 2014-8-6 08:35
Adafruit_LED_Backpack_Library.zip      Adafruit_GFX_Library.zip    这两个库是标准库还是扩展库呢? 能 ...

一个是驱动库,一个是绘图库。
回复 支持 反对

使用道具 举报

发表于 2014-8-7 20:57:18 | 显示全部楼层
弘毅 发表于 2014-8-7 12:11
一个是驱动库,一个是绘图库。

哦 原来如此
回复 支持 反对

使用道具 举报

发表于 2014-10-7 16:31:10 | 显示全部楼层
请问有没有这两个类库的说明???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-7 17:48:19 | 显示全部楼层
Zzzz 发表于 2014-10-7 16:31
请问有没有这两个类库的说明???

没。。只能看源码了
回复 支持 反对

使用道具 举报

发表于 2015-3-16 09:48:47 | 显示全部楼层
话说楼主的i2c 8*8图标是自己设计的么
回复 支持 反对

使用道具 举报

发表于 2015-11-22 00:36:06 | 显示全部楼层
想自己画一些图案的画 有什么软件可以辅助一下么
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-22 12:03:40 | 显示全部楼层
С罗 发表于 2015-11-22 00:36
想自己画一些图案的画 有什么软件可以辅助一下么

AI~
回复 支持 反对

使用道具 举报

发表于 2015-12-3 21:11:03 | 显示全部楼层
我的IDE上显示错误为“Adafruit_BicolorMatrix”does not name a type 请问有没有什么解决方案?急!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-4 21:38:12 | 显示全部楼层
2209459971 发表于 2015-12-3 21:11
我的IDE上显示错误为“Adafruit_BicolorMatrix”does not name a type 请问有没有什么解决方案?急!

库没加载,检查库。
回复 支持 反对

使用道具 举报

发表于 2016-2-9 22:23:19 | 显示全部楼层
这个IIC点阵是不是不能和串口输出一起用啊,我看了那个红外接收的实验试着用点阵显示遥控器上的数字,但是要有  matrix.begin(0x70);  这一句的话,串口就接收不到数据,而且TX也不会闪
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 00:58 , Processed in 0.044808 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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