基于ADXL345的 LED摇摇棒原理

原创 2011年01月20日 16:38:00

1.     LED摇摇棒原理

LED摇摇棒可以通过左右摇动而显示出自己定义的字符,这是利用了人的视觉停留原理。基于ADXL345LED摇摇棒的实现,主要是根据G_sensor所产生的数据来触发显示预先编码的LED数据。

2.     RasterTable Data编码原理

/***************************************************************

 This array contains ASCII character offset for LED display*/

/***************************************************************

 The characters are displayed using a pixel format.

 Each character is represented by 5 horizontal pixels and 8 vertical.

 Each column is a single byte.

 For example A is displayed in the following format

 

             0  0  1  0  0  =      *

             0  1  0  1  0  =    *   *

             1  0  0  0  1  =  *       *

             1  0  0  0  1  =  *       *

             1  1  1  1  1  =  * * * * *

             1  0  0  0  1  =  *       *

             1  0  0  0  1  =  *       *

             1  0  0  0  1  =  *       *

             |   |   |  |   |

             |   |   |  |  0x3F

             |   |   | 0x48

             |   |  0x88

             |  0x48

             0x3F

 

             {0x3F,0x48,0x88,0x48,0x3F},     // ASCII -  65 A

****************************************************************/

3.     Teraisc编码实例

如果想让 LED 摇摇棒显示“Terasic” Raster Table具体编码如下:

0x80,0x80,0xFF,0x80,0x80,     // ASCII -  T

0x00,                        //space

0x0E,0x15,0x15,0x15,0x0D,    //ASCII ---  e

0x00,                      //space

0x1F,0x08,0x10,0x10,0x08,    // ASCII ----  r

0x00,                      //space

0x26,0x29,0x29,0x1F,0x01,    //ASCII ----  a

0x00,                      //space

0x09,0x15,0x15,0x15,0x12,    //ASCII ----  s

0x00,                     //space

0x00,0x00,0x9F,0x00,0x00,    //ASCII ----  i

0x00,                      //space

0x0E,0x11,0x11,0x11,0x11,    //ASCII ----  c

 

4.     触发过程

  使用I2CSPI可以读出 ADXL345x, y, z三轴方向的数据。这里,我们读取的是x,y,z三轴的重力加速度,其中水平存放ADXL345 chip时, x,y为水平方向的重力加速度, z轴为重直地面,并与重力加速度同向。 我们选择y轴的值为判定条件。当y轴的值超过某一定值的时候,我们就可以显示RasterTable中的数据,显示完毕后,再进行循环判定显示。

下图为显示过程的流程图:其中yy轴方向的数据, TRIGGER为一个定值,例如可以设为 255

 

5.     DE-Nano 实物图

 

6.     LED摇摇棒效果图

 

7.     附录表

    {0x00,0x00,0x00,0x00,0x00},     // ASCII -  32 space

    {0x00,0x00,0xF9,0x00,0x00},     // ASCII -  33 !

    {0x00,0xE0,0x00,0xE0,0x00},     // ASCII -  34 "

    {0x24,0x7E,0x24,0x7E,0x24},     // ASCII -  35 #

    {0x34,0x4A,0xFF,0x49,0x26},     // ASCII -  36 $

    {0x22,0x04,0x08,0x10,0x22},     // ASCII -  37 %

    {0x26,0x59,0x4D,0x52,0x25},     // ASCII -  38 &

    {0x00,0x00,0xE0,0x00,0x00},     // ASCII -  39 '

    {0x00,0x3C,0x42,0x81,0x00},     // ASCII -  40 (

    {0x00,0x81,0x42,0x3C,0x00},     // ASCII -  41 )

    {0x28,0x30,0xE0,0x30,0x28},     // ASCII -  42 *

    {0x08,0x08,0x3E,0x08,0x08},     // ASCII -  43 +

    {0x00,0x01,0x02,0x00,0x00},     // ASCII -  44 ,

    {0x08,0x08,0x08,0x08,0x08},     // ASCII -  45 -

    {0x00,0x00,0x01,0x00,0x00},     // ASCII -  46 .

    {0x02,0x04,0x08,0x10,0x20},     // ASCII -  47 /

    {0x7E,0x81,0x81,0x81,0x7E},     // ASCII -  48 0

    {0x00,0x21,0xFF,0x01,0x00},     // ASCII -  49 1

    {0x41,0x83,0x85,0x89,0x71},     // ASCII -  50 2

    {0x42,0x91,0x91,0x91,0x6E},     // ASCII -  51 3

    {0xF0,0x10,0x10,0x10,0xFF},     // ASCII -  52 4

    {0xF2,0x91,0x91,0x91,0x8E},     // ASCII -  53 5

    {0x3E,0x51,0x91,0x91,0x8E},     // ASCII -  54 6

    {0x87,0x88,0x90,0xA0,0xC0},     // ASCII -  55 7

    {0x76,0x89,0x89,0x89,0x76},     // ASCII -  56 8

    {0x62,0x91,0x91,0x91,0x7e},     // ASCII -  57 9

    {0x00,0x00,0x24,0x00,0x00},     // ASCII -  58 :

    {0x00,0x01,0x12,0x00,0x00},     // ASCII -  59 ;

    {0x00,0x08,0x14,0x22,0x41},     // ASCII -  60 <

    {0x14,0x14,0x14,0x14,0x14},     // ASCII -  61 =

    {0x00,0x41,0x22,0x14,0x08},     // ASCII -  62 >

    {0x40,0x80,0x8D,0x90,0x60},     // ASCII -  63 ?

    {0x7E,0x81,0xBD,0xA5,0x78},     // ASCII -  64 @

    {0x3F,0x48,0x88,0x48,0x3F},     // ASCII -  65 A

    {0xFF,0x91,0x91,0x99,0x66},     // ASCII -  66 B

    {0x3C,0x42,0x81,0x81,0x42},     // ASCII -  67 C

    {0xFF,0x81,0x81,0x42,0x3C},     // ASCII -  68 D

    {0xFF,0x91,0x91,0x91,0x81},     // ASCII -  69 E

    {0xFF,0x90,0x90,0x90,0x80},     // ASCII -  70 F

    {0X3E,0x41,0x8F,0x88,0x4F},     // ASCII -  71 G

    {0xFF,0x10,0x10,0x10,0xFF},     // ASCII -  72 H

    {0x00,0x81,0xFF,0x81,0x00},     // ASCII -  73 I

    {0x06,0x01,0x81,0xFE,0x80},     // ASCII -  74 J

    {0xFF,0x18,0x24,0x42,0x81},     // ASCII -  75 K

    {0xFF,0x01,0x01,0x01,0x01},     // ASCII -  76 L

    {0xFF,0x40,0x30,0x40,0xFF},     // ASCII -  77 M

    {0xFF,0x40,0x20,0x10,0xFF},     // ASCII -  78 N

    {0x7E,0x81,0x81,0x81,0x7E},     // ASCII -  79 O

    {0xFF,0x90,0x90,0x90,0x60},     // ASCII -  80 P

    {0x7E,0x81,0x85,0x82,0x7D},     // ASCII -  81 Q

    {0xFF,0x98,0x94,0x92,0x61},     // ASCII -  82 R

    {0x72,0x89,0x89,0x89,0x46},     // ASCII -  83 S

    {0x80,0x80,0xFF,0x80,0x80},     // ASCII -  84 T

    {0xFE,0x01,0x01,0x01,0xFE},     // ASCII -  85 U

    {0xFC,0x02,0x01,0x02,0xFC},     // ASCII -  86 V

    {0xFF,0x02,0x1C,0x02,0xFF},     // ASCII -  87 W

    {0xC3,0x24,0x18,0x24,0xC3},     // ASCII -  88 X

    {0xC0,0x20,0x1F,0x20,0xC0},     // ASCII -  89 Y

    {0x87,0x89,0x91,0xA1,0xC1},     // ASCII -  90 Z

    {0x00,0xFF,0x81,0x81,0x00},     // ASCII -  91 [

    {0x20,0x10,0x08,0x04,0x02},     // ASCII -  92 '/'

    {0x00,0x81,0x81,0xFF,0x00},     // ASCII -  93 ]

    {0x20,0x40,0x80,0x40,0x20},     // ASCII -  94 ^

    {0x01,0x01,0x01,0x01,0x01},     // ASCII -  95 _

    {0x00,0x80,0x40,0x20,0x00},     // ASCII -  96 `

    {0x26,0x29,0x29,0x1F,0x01},     // ASCII -  97 a

    {0xFF,0x11,0x11,0x11,0x0E},     // ASCII -  98 b

    {0x0E,0x11,0x11,0x11,0x11},     // ASCII -  99 c

    {0x0E,0x11,0x11,0x11,0xFF},     // ASCII - 100 d

    {0x0E,0x15,0x15,0x15,0x0D},     // ASCII - 101 e

    {0x10,0x10,0x7F,0x90,0x90},     // ASCII - 102 f

    {0x08,0x15,0x15,0x15,0x0E},     // ASCII - 103 g

    {0xFF,0x08,0x08,0x08,0x07},     // ASCII - 104 h

    {0x00,0x00,0x9F,0x00,0x00},     // ASCII - 105 i

    {0x02,0x01,0x01,0x9F,0x00},     // ASCII - 106 j

    {0xFF,0x04,0x0A,0x11,0x00},     // ASCII - 107 k

    {0x00,0x01,0xFF,0x01,0x00},     // ASCII - 108 l

    {0x1F,0x10,0x0F,0x10,0x0F},     // ASCII - 109 m

    {0x10,0x0F,0x10,0x10,0x0F},     // ASCII - 110 n

    {0x0E,0x11,0x11,0x11,0x0E},     // ASCII - 111 o

    {0x1F,0x14,0x14,0x14,0x08},     // ASCII - 112 p

    {0x08,0x14,0x14,0x14,0x1F},     // ASCII - 113 q

    {0x1F,0x08,0x10,0x10,0x08},     // ASCII - 114 r

    {0x09,0x15,0x15,0x15,0x12},     // ASCII - 115 s

    {0x10,0x10,0x7F,0x11,0x12},     // ASCII - 116 t

    {0x1F,0x01,0x01,0x1F,0x01},     // ASCII - 117 u

    {0x1C,0x02,0x01,0x02,0x1C},     // ASCII - 118 v

    {0x1E,0x01,0x0F,0x01,0x1E},     // ASCII - 119 w

    {0x11,0x0A,0x04,0x0A,0x11},     // ASCII - 120 x

    {0x11,0x0A,0x04,0x08,0x10},     // ASCII - 121 y

    {0x11,0x13,0x15,0x19,0x11},     // ASCII - 122 z

    {0x18,0x66,0x81,0x81,0x00},     // ASCII - 123 {

    {0x00,0x00,0xFF,0x00,0x00},     // ASCII - 124 |

    {0x00,0x81,0x81,0x66,0x18},     // ASCII - 125 }

    {0x0C,0x10,0x08,0x04,0x18},     // ASCII - 126 ~

 

ADXL345Protel99+Altium原理图

  • 2015年06月15日 11:47
  • 74KB
  • 下载

adxl345的STM32驱动程序和硬件设计

1.adxl345的SPI通信硬件设计和驱动代码 2.ADXL345的驱动函数 3.STM32驱动代码及接口设计...

K60开发ADXL345笔记

刚刚完成了一项工作,眼看着吃饭的时间就要到了,就写一篇最近在开发ADXl345中遇到的问题的博客吧!        应用的MCU是freescale的K60,为了节省开发时间,直接在网上买的核心板,...

STM32L系列+ADXL345的I2C调试

STM32的硬件I2C调试确实要比模拟麻烦很多啊,一大堆的配置,调通F系列的,本以为直接移植到L系列会很轻松,没想到问题依然很多,现直接附上STM32L系列的I2C初始化及读写函数: 1.GPIO的...
  • zzg2623
  • zzg2623
  • 2013年12月30日 14:53
  • 1814

ADXL345知识学习总结

三轴加速度传感器ADXL345 一、ADXL345是一款三轴、数字化的加速度传感器,它能测X、Y、Z三个方向轴上的加速度,它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度...

ADXL345加速度计使用心得(带中断唤醒)

简介ADXL345是一种三轴加速度计。具有+/-2g,+/-4g,+/-8g,+/-16g可变的测量范围;最高13bit分辨率;固定的4mg/LSB灵敏度;3mm*5mm*1mm超小封装;40-145...
  • jo_joe
  • jo_joe
  • 2017年07月29日 19:06
  • 1078

Arduino的ADXL345库文件(附下载链接)

Arduino的库文件用起来很方便,但是偏偏要用的几个
  • lcokenm
  • lcokenm
  • 2014年04月28日 14:46
  • 2240

ADXL345 驱动代码

#include "adxl345.h" #include "sys.h" #include "delay.h" #include "math.h"   //////////////////...
  • zongguo
  • zongguo
  • 2013年06月11日 20:15
  • 2042

2014.12.31 GY-291陀螺仪(ADXL345)串口输出字符形式加速度

每组数据显示的三个数分别是X轴、Y轴、Z轴加速度。 之前这个模块的加速度是以16进制输出的,为了更直观我把加速度改成了字符输出。     一开始我犯了一个很低级的错误,把16进制转换成了3...

Arduino学习笔记二三轴加速度传感器ADXL345

很早就听说Arduino,早就想玩了。最近搞了快Arduino板子,就是前面介绍的Arduino Leonardo,最近需要用到传感器,从三轴加速度ADXL345开始。 开发环境: 系统:XP ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于ADXL345的 LED摇摇棒原理
举报原因:
原因补充:

(最多只允许输入30个字)