summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-02-08 14:28:51 +0100
committerBad Diode <bd@badd10de.dev>2023-02-08 14:29:26 +0100
commit08983247025697848579b35ef693d0b44904f728 (patch)
treef48c91d7ad68fef4262622b6ead7b106202e2bbf
parenta1c96114819dc8eb59b2a5152cb2ccff408402d4 (diff)
downloadlaunchpad-polymaker-08983247025697848579b35ef693d0b44904f728.tar.gz
launchpad-polymaker-08983247025697848579b35ef693d0b44904f728.zip
Add numeric representation of adc points
-rw-r--r--src/app.c80
1 files changed, 36 insertions, 44 deletions
diff --git a/src/app.c b/src/app.c
index 667ce32..013025c 100644
--- a/src/app.c
+++ b/src/app.c
@@ -182,7 +182,7 @@ void
182print_number(u8 n, u16 r, u16 g, u16 b, u8 x, u8 y) { 182print_number(u8 n, u16 r, u16 g, u16 b, u8 x, u8 y) {
183 u16 number = font_numbers[n]; 183 u16 number = font_numbers[n];
184 for (u8 row = 0; row < 5; row++) { 184 for (u8 row = 0; row < 5; row++) {
185 u8 pos = 11 + 10 * (7 - x + y * 8) - row * 10; 185 u8 pos = 11 + 10 * (7 - y) - row * 10 + x;
186 u16 cur = number >> (13 - 3 * row); 186 u16 cur = number >> (13 - 3 * row);
187 for (u8 i = 0; i < 3; i++) { 187 for (u8 i = 0; i < 3; i++) {
188 if ((cur >> (2 - i)) & 0x1) { 188 if ((cur >> (2 - i)) & 0x1) {
@@ -192,51 +192,43 @@ print_number(u8 n, u16 r, u16 g, u16 b, u8 x, u8 y) {
192 } 192 }
193} 193}
194 194
195u16 frame = 0;
196u16 value = 0;
197
198void
199update(void) {
200 for (int i = 0; i < PAD_COUNT; ++i) {
201 // Get the first detected button value.
202 u16 x = (99 * g_ADC[i]) >> 12;
203 if (x > 3) {
204 value = x;
205 return;
206 }
207 }
208 value = 0;
209}
210
211void
212clear_pads(void) {
213 for (int i = 0; i < PAD_COUNT; ++i) {
214 hal_plot_led(TYPEPAD, ADC_MAP[i], 0, 0, 0);
215 }
216}
217
218void
219render(void) {
220 if (frame++ == 1000 / 10) {
221 clear_pads();
222 print_number((value / 10) % 10, MAXLED, MAXLED, MAXLED, 0, 0);
223 print_number( value % 10, MAXLED, MAXLED, MAXLED, 4, 0);
224 frame = 0;
225 }
226}
227
195void 228void
196app_timer_event() { 229app_timer_event() {
197 // example - send MIDI clock at 125bpm 230 update();
198// #define TICK_MS 20 231 render();
199
200// static u8 ms = TICK_MS;
201
202// if (++ms >= TICK_MS)
203// {
204// ms = 0;
205
206// // send a clock pulse up the USB
207// hal_send_midi(USBSTANDALONE, MIDITIMINGCLOCK, 0, 0);
208// }
209
210 // alternative example - show raw ADC data as LEDs
211 // for (int i = 0; i < PAD_COUNT; ++i) {
212 // // raw adc values are 12 bit, but LEDs are 6 bit.
213 // // Let's saturate into r;g;b for a rainbow effect to show pressure
214 // u16 r = 0;
215 // u16 g = 0;
216 // u16 b = 0;
217
218 // u16 x = (3 * MAXLED * g_ADC[i]) >> 12;
219
220 // if (x < MAXLED) {
221 // r = x;
222 // } else if (x >= MAXLED && x < (2*MAXLED)) {
223 // r = 2 * MAXLED - x;
224 // g = x - MAXLED;
225 // }
226 // else {
227 // g = 3 * MAXLED - x;
228 // b = x - 2*MAXLED;
229 // }
230
231 // print_number(i, r, g, b, 0, 0);
232 // break;
233 // // if (buttons[ADC_MAP[i]] == MAXLED) {
234 // // hal_plot_led(TYPEPAD, ADC_MAP[i], r, g, b);
235 // // } else {
236 // // hal_plot_led(TYPEPAD, ADC_MAP[i], 0, 0, MAXLED);
237 // // }
238 // }
239 print_number(9, MAXLED, MAXLED, MAXLED, 0, 0);
240} 232}
241 233
242void 234void