1. LED摇摇棒原理
LED摇摇棒可以通过左右摇动而显示出自己定义的字符,这是利用了人的视觉停留原理。基于ADXL345的LED摇摇棒的实现,主要是根据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. 触发过程
使用I2C或SPI可以读出 ADXL345的x, y, z三轴方向的数据。这里,我们读取的是x,y,z三轴的重力加速度,其中水平存放ADXL345 chip时, x,y为水平方向的重力加速度, z轴为重直地面,并与重力加速度同向。 我们选择y轴的值为判定条件。当y轴的值超过某一定值的时候,我们就可以显示RasterTable中的数据,显示完毕后,再进行循环判定显示。
下图为显示过程的流程图:其中y为y轴方向的数据, 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 ~