Skip to content

Commit e822d1d

Browse files
committed
fixup! keyboard: Light up RGB backlight
1 parent e2e7b32 commit e822d1d

File tree

1 file changed

+377
-0
lines changed

1 file changed

+377
-0
lines changed

keyboard/src/rgb_matrix.rs

Lines changed: 377 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,377 @@
1+
// #[cfg_attr(docsrs, doc(cfg(feature = "adafruit_rgb_13x9")))]
2+
#[allow(unused_imports)]
3+
use core::convert::TryFrom;
4+
#[allow(unused_imports)]
5+
use embedded_hal::blocking::delay::DelayMs;
6+
use embedded_hal::blocking::i2c::Read;
7+
use embedded_hal::blocking::i2c::Write;
8+
#[allow(unused_imports)]
9+
use is31fl3741::{Error, IS31FL3743};
10+
11+
pub const DVT2_CALC_PIXEL: fn(x: u8, y: u8) -> (u8, u8) = |x: u8, y: u8| -> (u8, u8) {
12+
// Generated by led-matrix.py
13+
let lookup: [(u8, u8); 34 * 9] = [
14+
(0x00, 0), // x: 1, y: 1, sw: 1, cs: 1, id: 1
15+
(0x1e, 0), // x: 2, y: 1, sw: 2, cs: 1, id: 2
16+
(0x3c, 0), // x: 3, y: 1, sw: 3, cs: 1, id: 3
17+
(0x5a, 0), // x: 4, y: 1, sw: 4, cs: 1, id: 4
18+
(0x78, 0), // x: 5, y: 1, sw: 5, cs: 1, id: 5
19+
(0x96, 0), // x: 6, y: 1, sw: 6, cs: 1, id: 6
20+
(0x00, 1), // x: 7, y: 1, sw: 7, cs: 1, id: 7
21+
(0x1e, 1), // x: 8, y: 1, sw: 8, cs: 1, id: 8
22+
(0x5f, 1), // x: 9, y: 1, sw: 1, cs:36, id: 9
23+
(0x01, 0), // x: 1, y: 2, sw: 1, cs: 2, id: 10
24+
(0x1f, 0), // x: 2, y: 2, sw: 2, cs: 2, id: 11
25+
(0x3d, 0), // x: 3, y: 2, sw: 3, cs: 2, id: 12
26+
(0x5b, 0), // x: 4, y: 2, sw: 4, cs: 2, id: 13
27+
(0x79, 0), // x: 5, y: 2, sw: 5, cs: 2, id: 14
28+
(0x97, 0), // x: 6, y: 2, sw: 6, cs: 2, id: 15
29+
(0x01, 1), // x: 7, y: 2, sw: 7, cs: 2, id: 16
30+
(0x1f, 1), // x: 8, y: 2, sw: 8, cs: 2, id: 17
31+
(0x60, 1), // x: 9, y: 2, sw: 1, cs:37, id: 18
32+
(0x02, 0), // x: 1, y: 3, sw: 1, cs: 3, id: 19
33+
(0x20, 0), // x: 2, y: 3, sw: 2, cs: 3, id: 20
34+
(0x3e, 0), // x: 3, y: 3, sw: 3, cs: 3, id: 21
35+
(0x5c, 0), // x: 4, y: 3, sw: 4, cs: 3, id: 22
36+
(0x7a, 0), // x: 5, y: 3, sw: 5, cs: 3, id: 23
37+
(0x98, 0), // x: 6, y: 3, sw: 6, cs: 3, id: 24
38+
(0x02, 1), // x: 7, y: 3, sw: 7, cs: 3, id: 25
39+
(0x20, 1), // x: 8, y: 3, sw: 8, cs: 3, id: 26
40+
(0x61, 1), // x: 9, y: 3, sw: 1, cs:38, id: 27
41+
(0x03, 0), // x: 1, y: 4, sw: 1, cs: 4, id: 28
42+
(0x21, 0), // x: 2, y: 4, sw: 2, cs: 4, id: 29
43+
(0x3f, 0), // x: 3, y: 4, sw: 3, cs: 4, id: 30
44+
(0x5d, 0), // x: 4, y: 4, sw: 4, cs: 4, id: 31
45+
(0x7b, 0), // x: 5, y: 4, sw: 5, cs: 4, id: 32
46+
(0x99, 0), // x: 6, y: 4, sw: 6, cs: 4, id: 33
47+
(0x03, 1), // x: 7, y: 4, sw: 7, cs: 4, id: 34
48+
(0x21, 1), // x: 8, y: 4, sw: 8, cs: 4, id: 35
49+
(0x62, 1), // x: 9, y: 4, sw: 1, cs:39, id: 36
50+
(0x04, 0), // x: 1, y: 5, sw: 1, cs: 5, id: 37
51+
(0x22, 0), // x: 2, y: 5, sw: 2, cs: 5, id: 41
52+
(0x40, 0), // x: 3, y: 5, sw: 3, cs: 5, id: 45
53+
(0x5e, 0), // x: 4, y: 5, sw: 4, cs: 5, id: 49
54+
(0x7c, 0), // x: 5, y: 5, sw: 5, cs: 5, id: 53
55+
(0x9a, 0), // x: 6, y: 5, sw: 6, cs: 5, id: 57
56+
(0x04, 1), // x: 7, y: 5, sw: 7, cs: 5, id: 61
57+
(0x22, 1), // x: 8, y: 5, sw: 8, cs: 5, id: 65
58+
(0x5e, 1), // x: 9, y: 5, sw: 1, cs:35, id: 69
59+
(0x05, 0), // x: 1, y: 6, sw: 1, cs: 6, id: 38
60+
(0x23, 0), // x: 2, y: 6, sw: 2, cs: 6, id: 42
61+
(0x41, 0), // x: 3, y: 6, sw: 3, cs: 6, id: 46
62+
(0x5f, 0), // x: 4, y: 6, sw: 4, cs: 6, id: 50
63+
(0x7d, 0), // x: 5, y: 6, sw: 5, cs: 6, id: 54
64+
(0x9b, 0), // x: 6, y: 6, sw: 6, cs: 6, id: 58
65+
(0x05, 1), // x: 7, y: 6, sw: 7, cs: 6, id: 62
66+
(0x23, 1), // x: 8, y: 6, sw: 8, cs: 6, id: 66
67+
(0x68, 1), // x: 9, y: 6, sw: 2, cs:36, id: 70
68+
(0x06, 0), // x: 1, y: 7, sw: 1, cs: 7, id: 39
69+
(0x24, 0), // x: 2, y: 7, sw: 2, cs: 7, id: 43
70+
(0x42, 0), // x: 3, y: 7, sw: 3, cs: 7, id: 47
71+
(0x60, 0), // x: 4, y: 7, sw: 4, cs: 7, id: 51
72+
(0x7e, 0), // x: 5, y: 7, sw: 5, cs: 7, id: 55
73+
(0x9c, 0), // x: 6, y: 7, sw: 6, cs: 7, id: 59
74+
(0x06, 1), // x: 7, y: 7, sw: 7, cs: 7, id: 63
75+
(0x24, 1), // x: 8, y: 7, sw: 8, cs: 7, id: 67
76+
(0x69, 1), // x: 9, y: 7, sw: 2, cs:37, id: 71
77+
(0x07, 0), // x: 1, y: 8, sw: 1, cs: 8, id: 40
78+
(0x25, 0), // x: 2, y: 8, sw: 2, cs: 8, id: 44
79+
(0x43, 0), // x: 3, y: 8, sw: 3, cs: 8, id: 48
80+
(0x61, 0), // x: 4, y: 8, sw: 4, cs: 8, id: 52
81+
(0x7f, 0), // x: 5, y: 8, sw: 5, cs: 8, id: 56
82+
(0x9d, 0), // x: 6, y: 8, sw: 6, cs: 8, id: 60
83+
(0x07, 1), // x: 7, y: 8, sw: 7, cs: 8, id: 64
84+
(0x25, 1), // x: 8, y: 8, sw: 8, cs: 8, id: 68
85+
(0x6a, 1), // x: 9, y: 8, sw: 2, cs:38, id: 72
86+
(0x08, 0), // x: 1, y: 9, sw: 1, cs: 9, id: 73
87+
(0x26, 0), // x: 2, y: 9, sw: 2, cs: 9, id: 81
88+
(0x44, 0), // x: 3, y: 9, sw: 3, cs: 9, id: 89
89+
(0x62, 0), // x: 4, y: 9, sw: 4, cs: 9, id: 97
90+
(0x80, 0), // x: 5, y: 9, sw: 5, cs: 9, id:105
91+
(0x9e, 0), // x: 6, y: 9, sw: 6, cs: 9, id:113
92+
(0x08, 1), // x: 7, y: 9, sw: 7, cs: 9, id:121
93+
(0x26, 1), // x: 8, y: 9, sw: 8, cs: 9, id:129
94+
(0x6b, 1), // x: 9, y: 9, sw: 2, cs:39, id:137
95+
(0x09, 0), // x: 1, y:10, sw: 1, cs:10, id: 74
96+
(0x27, 0), // x: 2, y:10, sw: 2, cs:10, id: 82
97+
(0x45, 0), // x: 3, y:10, sw: 3, cs:10, id: 90
98+
(0x63, 0), // x: 4, y:10, sw: 4, cs:10, id: 98
99+
(0x81, 0), // x: 5, y:10, sw: 5, cs:10, id:106
100+
(0x9f, 0), // x: 6, y:10, sw: 6, cs:10, id:114
101+
(0x09, 1), // x: 7, y:10, sw: 7, cs:10, id:122
102+
(0x27, 1), // x: 8, y:10, sw: 8, cs:10, id:130
103+
(0x67, 1), // x: 9, y:10, sw: 2, cs:35, id:138
104+
(0x0a, 0), // x: 1, y:11, sw: 1, cs:11, id: 75
105+
(0x28, 0), // x: 2, y:11, sw: 2, cs:11, id: 83
106+
(0x46, 0), // x: 3, y:11, sw: 3, cs:11, id: 91
107+
(0x64, 0), // x: 4, y:11, sw: 4, cs:11, id: 99
108+
(0x82, 0), // x: 5, y:11, sw: 5, cs:11, id:107
109+
(0xa0, 0), // x: 6, y:11, sw: 6, cs:11, id:115
110+
(0x0a, 1), // x: 7, y:11, sw: 7, cs:11, id:123
111+
(0x28, 1), // x: 8, y:11, sw: 8, cs:11, id:131
112+
(0x71, 1), // x: 9, y:11, sw: 3, cs:36, id:139
113+
(0x0b, 0), // x: 1, y:12, sw: 1, cs:12, id: 76
114+
(0x29, 0), // x: 2, y:12, sw: 2, cs:12, id: 84
115+
(0x47, 0), // x: 3, y:12, sw: 3, cs:12, id: 92
116+
(0x65, 0), // x: 4, y:12, sw: 4, cs:12, id:100
117+
(0x83, 0), // x: 5, y:12, sw: 5, cs:12, id:108
118+
(0xa1, 0), // x: 6, y:12, sw: 6, cs:12, id:116
119+
(0x0b, 1), // x: 7, y:12, sw: 7, cs:12, id:124
120+
(0x29, 1), // x: 8, y:12, sw: 8, cs:12, id:132
121+
(0x72, 1), // x: 9, y:12, sw: 3, cs:37, id:140
122+
(0x0c, 0), // x: 1, y:13, sw: 1, cs:13, id: 77
123+
(0x2a, 0), // x: 2, y:13, sw: 2, cs:13, id: 85
124+
(0x48, 0), // x: 3, y:13, sw: 3, cs:13, id: 93
125+
(0x66, 0), // x: 4, y:13, sw: 4, cs:13, id:101
126+
(0x84, 0), // x: 5, y:13, sw: 5, cs:13, id:109
127+
(0xa2, 0), // x: 6, y:13, sw: 6, cs:13, id:117
128+
(0x0c, 1), // x: 7, y:13, sw: 7, cs:13, id:125
129+
(0x2a, 1), // x: 8, y:13, sw: 8, cs:13, id:133
130+
(0x73, 1), // x: 9, y:13, sw: 3, cs:38, id:141
131+
(0x0d, 0), // x: 1, y:14, sw: 1, cs:14, id: 78
132+
(0x2b, 0), // x: 2, y:14, sw: 2, cs:14, id: 86
133+
(0x49, 0), // x: 3, y:14, sw: 3, cs:14, id: 94
134+
(0x67, 0), // x: 4, y:14, sw: 4, cs:14, id:102
135+
(0x85, 0), // x: 5, y:14, sw: 5, cs:14, id:110
136+
(0xa3, 0), // x: 6, y:14, sw: 6, cs:14, id:118
137+
(0x0d, 1), // x: 7, y:14, sw: 7, cs:14, id:126
138+
(0x2b, 1), // x: 8, y:14, sw: 8, cs:14, id:134
139+
(0x70, 1), // x: 9, y:14, sw: 3, cs:35, id:142
140+
(0x0e, 0), // x: 1, y:15, sw: 1, cs:15, id: 79
141+
(0x2c, 0), // x: 2, y:15, sw: 2, cs:15, id: 87
142+
(0x4a, 0), // x: 3, y:15, sw: 3, cs:15, id: 95
143+
(0x68, 0), // x: 4, y:15, sw: 4, cs:15, id:103
144+
(0x86, 0), // x: 5, y:15, sw: 5, cs:15, id:111
145+
(0xa4, 0), // x: 6, y:15, sw: 6, cs:15, id:119
146+
(0x0e, 1), // x: 7, y:15, sw: 7, cs:15, id:127
147+
(0x2c, 1), // x: 8, y:15, sw: 8, cs:15, id:135
148+
(0x7a, 1), // x: 9, y:15, sw: 4, cs:36, id:143
149+
(0x0f, 0), // x: 1, y:16, sw: 1, cs:16, id: 80
150+
(0x2d, 0), // x: 2, y:16, sw: 2, cs:16, id: 88
151+
(0x4b, 0), // x: 3, y:16, sw: 3, cs:16, id: 96
152+
(0x69, 0), // x: 4, y:16, sw: 4, cs:16, id:104
153+
(0x87, 0), // x: 5, y:16, sw: 5, cs:16, id:112
154+
(0xa5, 0), // x: 6, y:16, sw: 6, cs:16, id:120
155+
(0x0f, 1), // x: 7, y:16, sw: 7, cs:16, id:128
156+
(0x2d, 1), // x: 8, y:16, sw: 8, cs:16, id:136
157+
(0x7b, 1), // x: 9, y:16, sw: 4, cs:37, id:144
158+
(0x10, 0), // x: 1, y:17, sw: 1, cs:17, id:145
159+
(0x2e, 0), // x: 2, y:17, sw: 2, cs:17, id:161
160+
(0x4c, 0), // x: 3, y:17, sw: 3, cs:17, id:177
161+
(0x6a, 0), // x: 4, y:17, sw: 4, cs:17, id:193
162+
(0x88, 0), // x: 5, y:17, sw: 5, cs:17, id:209
163+
(0xa6, 0), // x: 6, y:17, sw: 6, cs:17, id:225
164+
(0x10, 1), // x: 7, y:17, sw: 7, cs:17, id:241
165+
(0x2e, 1), // x: 8, y:17, sw: 8, cs:17, id:257
166+
(0x7c, 1), // x: 9, y:17, sw: 4, cs:38, id:273
167+
(0x11, 0), // x: 1, y:18, sw: 1, cs:18, id:146
168+
(0x2f, 0), // x: 2, y:18, sw: 2, cs:18, id:162
169+
(0x4d, 0), // x: 3, y:18, sw: 3, cs:18, id:178
170+
(0x6b, 0), // x: 4, y:18, sw: 4, cs:18, id:194
171+
(0x89, 0), // x: 5, y:18, sw: 5, cs:18, id:210
172+
(0xa7, 0), // x: 6, y:18, sw: 6, cs:18, id:226
173+
(0x11, 1), // x: 7, y:18, sw: 7, cs:18, id:242
174+
(0x2f, 1), // x: 8, y:18, sw: 8, cs:18, id:258
175+
(0x79, 1), // x: 9, y:18, sw: 4, cs:35, id:274
176+
(0x12, 0), // x: 1, y:19, sw: 1, cs:19, id:147
177+
(0x30, 0), // x: 2, y:19, sw: 2, cs:19, id:163
178+
(0x4e, 0), // x: 3, y:19, sw: 3, cs:19, id:179
179+
(0x6c, 0), // x: 4, y:19, sw: 4, cs:19, id:195
180+
(0x8a, 0), // x: 5, y:19, sw: 5, cs:19, id:211
181+
(0xa8, 0), // x: 6, y:19, sw: 6, cs:19, id:227
182+
(0x12, 1), // x: 7, y:19, sw: 7, cs:19, id:243
183+
(0x30, 1), // x: 8, y:19, sw: 8, cs:19, id:259
184+
(0x83, 1), // x: 9, y:19, sw: 5, cs:36, id:275
185+
(0x13, 0), // x: 1, y:20, sw: 1, cs:20, id:148
186+
(0x31, 0), // x: 2, y:20, sw: 2, cs:20, id:164
187+
(0x4f, 0), // x: 3, y:20, sw: 3, cs:20, id:180
188+
(0x6d, 0), // x: 4, y:20, sw: 4, cs:20, id:196
189+
(0x8b, 0), // x: 5, y:20, sw: 5, cs:20, id:212
190+
(0xa9, 0), // x: 6, y:20, sw: 6, cs:20, id:228
191+
(0x13, 1), // x: 7, y:20, sw: 7, cs:20, id:244
192+
(0x31, 1), // x: 8, y:20, sw: 8, cs:20, id:260
193+
(0x84, 1), // x: 9, y:20, sw: 5, cs:37, id:276
194+
(0x14, 0), // x: 1, y:21, sw: 1, cs:21, id:149
195+
(0x32, 0), // x: 2, y:21, sw: 2, cs:21, id:165
196+
(0x50, 0), // x: 3, y:21, sw: 3, cs:21, id:181
197+
(0x6e, 0), // x: 4, y:21, sw: 4, cs:21, id:197
198+
(0x8c, 0), // x: 5, y:21, sw: 5, cs:21, id:213
199+
(0xaa, 0), // x: 6, y:21, sw: 6, cs:21, id:229
200+
(0x14, 1), // x: 7, y:21, sw: 7, cs:21, id:245
201+
(0x32, 1), // x: 8, y:21, sw: 8, cs:21, id:261
202+
(0x85, 1), // x: 9, y:21, sw: 5, cs:38, id:277
203+
(0x15, 0), // x: 1, y:22, sw: 1, cs:22, id:150
204+
(0x33, 0), // x: 2, y:22, sw: 2, cs:22, id:166
205+
(0x51, 0), // x: 3, y:22, sw: 3, cs:22, id:182
206+
(0x6f, 0), // x: 4, y:22, sw: 4, cs:22, id:198
207+
(0x8d, 0), // x: 5, y:22, sw: 5, cs:22, id:214
208+
(0xab, 0), // x: 6, y:22, sw: 6, cs:22, id:230
209+
(0x15, 1), // x: 7, y:22, sw: 7, cs:22, id:246
210+
(0x33, 1), // x: 8, y:22, sw: 8, cs:22, id:262
211+
(0x82, 1), // x: 9, y:22, sw: 5, cs:35, id:278
212+
(0x16, 0), // x: 1, y:23, sw: 1, cs:23, id:151
213+
(0x34, 0), // x: 2, y:23, sw: 2, cs:23, id:167
214+
(0x52, 0), // x: 3, y:23, sw: 3, cs:23, id:183
215+
(0x70, 0), // x: 4, y:23, sw: 4, cs:23, id:199
216+
(0x8e, 0), // x: 5, y:23, sw: 5, cs:23, id:215
217+
(0xac, 0), // x: 6, y:23, sw: 6, cs:23, id:231
218+
(0x16, 1), // x: 7, y:23, sw: 7, cs:23, id:247
219+
(0x34, 1), // x: 8, y:23, sw: 8, cs:23, id:263
220+
(0x8c, 1), // x: 9, y:23, sw: 6, cs:36, id:279
221+
(0x17, 0), // x: 1, y:24, sw: 1, cs:24, id:152
222+
(0x35, 0), // x: 2, y:24, sw: 2, cs:24, id:168
223+
(0x53, 0), // x: 3, y:24, sw: 3, cs:24, id:184
224+
(0x71, 0), // x: 4, y:24, sw: 4, cs:24, id:200
225+
(0x8f, 0), // x: 5, y:24, sw: 5, cs:24, id:216
226+
(0xad, 0), // x: 6, y:24, sw: 6, cs:24, id:232
227+
(0x17, 1), // x: 7, y:24, sw: 7, cs:24, id:248
228+
(0x35, 1), // x: 8, y:24, sw: 8, cs:24, id:264
229+
(0x8d, 1), // x: 9, y:24, sw: 6, cs:37, id:280
230+
(0x18, 0), // x: 1, y:25, sw: 1, cs:25, id:153
231+
(0x36, 0), // x: 2, y:25, sw: 2, cs:25, id:169
232+
(0x54, 0), // x: 3, y:25, sw: 3, cs:25, id:185
233+
(0x72, 0), // x: 4, y:25, sw: 4, cs:25, id:201
234+
(0x90, 0), // x: 5, y:25, sw: 5, cs:25, id:217
235+
(0xae, 0), // x: 6, y:25, sw: 6, cs:25, id:233
236+
(0x18, 1), // x: 7, y:25, sw: 7, cs:25, id:249
237+
(0x36, 1), // x: 8, y:25, sw: 8, cs:25, id:265
238+
(0x8e, 1), // x: 9, y:25, sw: 6, cs:38, id:281
239+
(0x19, 0), // x: 1, y:26, sw: 1, cs:26, id:154
240+
(0x37, 0), // x: 2, y:26, sw: 2, cs:26, id:170
241+
(0x55, 0), // x: 3, y:26, sw: 3, cs:26, id:186
242+
(0x73, 0), // x: 4, y:26, sw: 4, cs:26, id:202
243+
(0x91, 0), // x: 5, y:26, sw: 5, cs:26, id:218
244+
(0xaf, 0), // x: 6, y:26, sw: 6, cs:26, id:234
245+
(0x19, 1), // x: 7, y:26, sw: 7, cs:26, id:250
246+
(0x37, 1), // x: 8, y:26, sw: 8, cs:26, id:266
247+
(0x8b, 1), // x: 9, y:26, sw: 6, cs:35, id:282
248+
(0x1a, 0), // x: 1, y:27, sw: 1, cs:27, id:155
249+
(0x38, 0), // x: 2, y:27, sw: 2, cs:27, id:171
250+
(0x56, 0), // x: 3, y:27, sw: 3, cs:27, id:187
251+
(0x74, 0), // x: 4, y:27, sw: 4, cs:27, id:203
252+
(0x92, 0), // x: 5, y:27, sw: 5, cs:27, id:219
253+
(0xb0, 0), // x: 6, y:27, sw: 6, cs:27, id:235
254+
(0x1a, 1), // x: 7, y:27, sw: 7, cs:27, id:251
255+
(0x38, 1), // x: 8, y:27, sw: 8, cs:27, id:267
256+
(0x95, 1), // x: 9, y:27, sw: 7, cs:36, id:283
257+
(0x1b, 0), // x: 1, y:28, sw: 1, cs:28, id:156
258+
(0x39, 0), // x: 2, y:28, sw: 2, cs:28, id:172
259+
(0x57, 0), // x: 3, y:28, sw: 3, cs:28, id:188
260+
(0x75, 0), // x: 4, y:28, sw: 4, cs:28, id:204
261+
(0x93, 0), // x: 5, y:28, sw: 5, cs:28, id:220
262+
(0xb1, 0), // x: 6, y:28, sw: 6, cs:28, id:236
263+
(0x1b, 1), // x: 7, y:28, sw: 7, cs:28, id:252
264+
(0x39, 1), // x: 8, y:28, sw: 8, cs:28, id:268
265+
(0x96, 1), // x: 9, y:28, sw: 7, cs:37, id:284
266+
(0x1c, 0), // x: 1, y:29, sw: 1, cs:29, id:157
267+
(0x3a, 0), // x: 2, y:29, sw: 2, cs:29, id:173
268+
(0x58, 0), // x: 3, y:29, sw: 3, cs:29, id:189
269+
(0x76, 0), // x: 4, y:29, sw: 4, cs:29, id:205
270+
(0x94, 0), // x: 5, y:29, sw: 5, cs:29, id:221
271+
(0xb2, 0), // x: 6, y:29, sw: 6, cs:29, id:237
272+
(0x1c, 1), // x: 7, y:29, sw: 7, cs:29, id:253
273+
(0x3a, 1), // x: 8, y:29, sw: 8, cs:29, id:269
274+
(0x97, 1), // x: 9, y:29, sw: 7, cs:38, id:285
275+
(0x1d, 0), // x: 1, y:30, sw: 1, cs:30, id:158
276+
(0x3b, 0), // x: 2, y:30, sw: 2, cs:30, id:174
277+
(0x59, 0), // x: 3, y:30, sw: 3, cs:30, id:190
278+
(0x77, 0), // x: 4, y:30, sw: 4, cs:30, id:206
279+
(0x95, 0), // x: 5, y:30, sw: 5, cs:30, id:222
280+
(0xb3, 0), // x: 6, y:30, sw: 6, cs:30, id:238
281+
(0x1d, 1), // x: 7, y:30, sw: 7, cs:30, id:254
282+
(0x3b, 1), // x: 8, y:30, sw: 8, cs:30, id:270
283+
(0x94, 1), // x: 9, y:30, sw: 7, cs:35, id:286
284+
(0x5a, 1), // x: 1, y:31, sw: 1, cs:31, id:159
285+
(0x63, 1), // x: 2, y:31, sw: 2, cs:31, id:175
286+
(0x6c, 1), // x: 3, y:31, sw: 3, cs:31, id:191
287+
(0x75, 1), // x: 4, y:31, sw: 4, cs:31, id:207
288+
(0x7e, 1), // x: 5, y:31, sw: 5, cs:31, id:223
289+
(0x87, 1), // x: 6, y:31, sw: 6, cs:31, id:239
290+
(0x90, 1), // x: 7, y:31, sw: 7, cs:31, id:255
291+
(0x99, 1), // x: 8, y:31, sw: 8, cs:31, id:271
292+
(0x9e, 1), // x: 9, y:31, sw: 8, cs:36, id:287
293+
(0x5b, 1), // x: 1, y:32, sw: 1, cs:32, id:160
294+
(0x64, 1), // x: 2, y:32, sw: 2, cs:32, id:176
295+
(0x6d, 1), // x: 3, y:32, sw: 3, cs:32, id:192
296+
(0x76, 1), // x: 4, y:32, sw: 4, cs:32, id:208
297+
(0x7f, 1), // x: 5, y:32, sw: 5, cs:32, id:224
298+
(0x88, 1), // x: 6, y:32, sw: 6, cs:32, id:240
299+
(0x91, 1), // x: 7, y:32, sw: 7, cs:32, id:256
300+
(0x9a, 1), // x: 8, y:32, sw: 8, cs:32, id:272
301+
(0x9f, 1), // x: 9, y:32, sw: 8, cs:37, id:288
302+
(0x5c, 1), // x: 1, y:33, sw: 1, cs:33, id:289
303+
(0x65, 1), // x: 2, y:33, sw: 2, cs:33, id:290
304+
(0x6e, 1), // x: 3, y:33, sw: 3, cs:33, id:291
305+
(0x77, 1), // x: 4, y:33, sw: 4, cs:33, id:292
306+
(0x80, 1), // x: 5, y:33, sw: 5, cs:33, id:293
307+
(0x89, 1), // x: 6, y:33, sw: 6, cs:33, id:294
308+
(0x92, 1), // x: 7, y:33, sw: 7, cs:33, id:295
309+
(0x9b, 1), // x: 8, y:33, sw: 8, cs:33, id:296
310+
(0xa0, 1), // x: 9, y:33, sw: 8, cs:38, id:297
311+
(0x5d, 1), // x: 1, y:34, sw: 1, cs:34, id:298
312+
(0x66, 1), // x: 2, y:34, sw: 2, cs:34, id:299
313+
(0x6f, 1), // x: 3, y:34, sw: 3, cs:34, id:300
314+
(0x78, 1), // x: 4, y:34, sw: 4, cs:34, id:301
315+
(0x81, 1), // x: 5, y:34, sw: 5, cs:34, id:302
316+
(0x8a, 1), // x: 6, y:34, sw: 6, cs:34, id:303
317+
(0x93, 1), // x: 7, y:34, sw: 7, cs:34, id:304
318+
(0x9c, 1), // x: 8, y:34, sw: 8, cs:34, id:305
319+
(0x9d, 1), // x: 9, y:34, sw: 8, cs:35, id:306
320+
];
321+
let index: usize = (x as usize) + (y as usize) * 9;
322+
if index < lookup.len() {
323+
lookup[index]
324+
} else {
325+
(0x00, 0)
326+
}
327+
};
328+
329+
pub struct LedMatrix<I2C> {
330+
pub device: IS31FL3743<I2C>,
331+
}
332+
333+
impl<I2C, I2cError> LedMatrix<I2C>
334+
where
335+
I2C: Write<Error = I2cError>,
336+
I2C: Read<Error = I2cError>,
337+
I2cError: core::fmt::Debug,
338+
{
339+
pub fn unwrap(self) -> I2C {
340+
self.device.i2c
341+
}
342+
343+
// TODO: Maybe make this private and set it once in the constructor
344+
pub fn set_scaling(&mut self, scale: u8) -> Result<(), I2cError> {
345+
self.device.set_scaling(scale)
346+
}
347+
348+
pub fn set_address(&mut self, address: u8) {
349+
self.device.address = address;
350+
}
351+
352+
pub fn new(i2c: I2C, calc_pixel: fn(x: u8, y: u8) -> (u8, u8)) -> LedMatrix<I2C> {
353+
LedMatrix {
354+
device: IS31FL3743 {
355+
i2c,
356+
address: 0b0100000,
357+
width: 9,
358+
height: 34,
359+
calc_pixel,
360+
},
361+
}
362+
}
363+
364+
pub fn setup<DEL: DelayMs<u8>>(&mut self, delay: &mut DEL) -> Result<(), Error<I2cError>> {
365+
self.device.setup(delay)?;
366+
Ok(())
367+
}
368+
369+
pub fn fill_brightness(&mut self, brightness: u8) -> Result<(), Error<I2cError>> {
370+
for x in 0..self.device.width {
371+
for y in 0..self.device.height {
372+
self.device.pixel(x, y, brightness)?;
373+
}
374+
}
375+
Ok(())
376+
}
377+
}

0 commit comments

Comments
 (0)