-
Notifications
You must be signed in to change notification settings - Fork 1
/
2D_cubes.ino
1083 lines (945 loc) · 80.1 KB
/
2D_cubes.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#include <stdint.h>
#include "SevSeg.h"
#include <SoftwareSerial.h>
#include <AltSoftSerial.h>
SoftwareSerial Serial4(68, 69);
SevSeg sevseg;
void send_message();
void receieve_message();
int receive_neighbour_123(HardwareSerial& neighbour_serial, float* message, int read_signal);
int receive_neighbour_4(SoftwareSerial& neighbour_serial, float* message, int read_signal);
void update_message();
unsigned long now = 0;
unsigned long prev = 0;
unsigned long check = 0;
const unsigned long math_trigger = 1000;
int amount_of_cell_info = 15;
int neural_network_parameter = 40;
int update_num = 0;
float scale_factor = 100;
float offset = 127.5;
float cell_state[15] = {1.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// n-b better to change to n,s,e,w
float ReadFromRightMessage[15] = {0};
float ReadFromLeftMessage[15] = {0};
float ReadFromTopMessage[15] = {0};
float ReadFromBottomMessage[15] = {0};
int message_sent = 0;
static const int red_light_pin= 11;
static const int green_light_pin = 10;
static const int blue_light_pin = 3;
int message_process_completed = 0;
int bottom_read = -1;
int right_read = -1;
int left_read = -1;
int top_read =-1;
int ready_to_update = -1;
union Float2Byte{
float floatvar;
byte bytevar[4];
} float2byte;
PROGMEM const float dmodel_kernel_2[40][15] = {{ 0.07306986 , 0.21827233, 0.17082913, 0.01331836, -0.2187641 , -0.07621206,
-0.00052413 ,-0.16438824, 0.1660233, 0.00267533, -0.20689474, 0.02476237,
-0.02155901 , 0.24260962, -0.05514909},{ 0.04866827, -0.06432697, 0.15997191, -0.069028 , 0.03692965, 0.02454493,
0.47042608 ,-0.07365225, -0.03477756, -0.06751963, -0.06927198, -0.00622708,
0.02000782 , 0.05409358, -0.02838009},{ 0.09379961, 0.10086202, 0.03566831, 0.01811099, 0.06372628, -0.02188707,
-0.03183741 ,-0.01582014, 0.14204454, 0.03619935, -0.02148345, -0.01099176,
-0.03612875 ,-0.01383807, 0.19406419},{ 0.01064422, -0.00848559, 0.01812973, 0.12577029, -0.08160155, 0.15823193,
-0.02863975 ,-0.01592504, -0.07053017, 0.02718551, -0.02960336, -0.02174469,
-0.00957785 , 0.0207062 , -0.00493961},{-0.15856169, -0.05886309, 0.0734265 , 0.01292603 , 0.05638849, -0.10115214,
-0.06989881 , 0.01205677, 0.19281615, -0.0450055 , 0.36882532, -0.10485961,
-0.12579852 ,-0.05342546, 0.02737143},{-0.04069981, -0.10881241, -0.18712004, -0.08385882 ,-0.15893291, 0.30604526,
0.05855173 ,-0.12132504, -0.09639953, 0.10678689, -0.07963682, -0.11080375,
-0.02604771 ,-0.06595958, -0.08395441},{ 0.06109469, 0.16989543, -0.00084745, -0.00698886 , 0.15561187, -0.00045657,
-0.024189 ,-0.01970942, 0.01164043, -0.03073079, -0.01672631, 0.02619255,
0.20019305 ,-0.0011927 , 0.07844754},{-0.028789, 0.0091943, 0.03963001, -0.09780766 , 0.11484019, 0.01056166,
0.01219343 , 0.17877595, -0.33776385, -0.04295614, -0.01166729, 0.01902784,
0.31868517 ,-0.11047246, 0.42580912},{ 0.02384584, 0.26373908, 0.20278855, 0.10157828 ,-0.09611001, -0.05281579,
-0.00612473 , 0.07008742, -0.12424424, -0.04765998, 0.00848236, -0.07758003,
-0.02616607 , 0.35935736, 0.05059512},{-0.03570333, 0.11247548, 0.05667376, -0.17051649 ,0.05422813, 0.01265663,
0.02875567 ,-0.06034965, -0.11712737, 0.03904107, 0.01880656, -0.03662086,
-0.01879722 , 0.03739225, 0.04975961},{ 0.08086085, 0.20778137, 0.06394283, 0.12712108 , 0.0127364, -0.02664151,
-0.02550224 , 0.06837743, -0.10140043, -0.04331821, 0.02997037, 0.3152003,
-0.02565727 ,-0.01524471, -0.00596907},{ 0.03994266, 0.06724229, -0.03019392, 0.02068853 , 0.09541955, 0.00238806,
-0.01817191 , 0.12680498, -0.13363962, 0.03192988, 0.08445822, 0.04000111,
-0.0357669 , 0.02447016, 0.09619517},{-0.02157274, -0.01627502, -0.05275974, -0.0138871 , -0.0136803 , 0.08191757,
0.01975408 ,-0.01214442, -0.07465113, 0.04044571, -0.14900383, -0.01594285,
0.0051595 ,-0.03652379, 0.0597081 },{-0.0172436 , 0.02647328, -0.1514696 , 0.00379304 , 0.0879051, 0.03666902,
0.01467015 , 0.03227509, -0.00322959, -0.02037919 , 0.00556464, 0.04525485,
0.11428267 , 0.07973108, -0.05750392},{ 0.03580934, -0.01694055, 0.04905307, 0.06218809 ,-0.08320726 , 0.07519624,
0.00321875 ,-0.06124698, 0.03138281, 0.07082225 ,-0.04384578, -0.01149348,
-0.04163329 , 0.04597203, 0.01171562},{-0.12192585 ,-0.0304701, -0.08851532, -0.23196004 ,0.15584476, -0.11510844,
-0.03104418 , 0.03505953, 0.19915931, 0.03920765 , 0.037569 , -0.16338146,
-0.12106525 ,-0.17056808, 0.11246318},{ 0.03281258 ,-0.04950949, 0.04623761, 0.20653938 , 0.16859362, -0.02412629,
0.01799581 , 0.15725096, -0.3771251, -0.12488773 , 0.19202942 , 0.13599016,
0.11252735 ,-0.02733122 ,-0.05741492},{-0.00765428 , 0.13537976, 0.09899219, 0.0983443 , -0.04550558, -0.01270085,
0.01995322 , 0.00067157, -0.01238428, -0.03857503 ,-0.00574478 , 0.02925757,
-0.00812923 , 0.09620202, -0.0490598 },{ 0.03465696 , 0.0199383 , 0.11764925, 0.17447866 ,-0.18404564 , 0.00954709,
-0.03651448 , 0.01336633, -0.24626622, -0.01636844 , 0.05635889 , 0.07328124,
-0.13010041 , 0.14587735, -0.0390117 },{-0.26548994, -0.10345629, -0.15023486, -0.29598466 ,0.15555587, -0.02138686,
0.01423192 , 0.5733592 , 0.23605733, -0.0168746 , -0.22727467 , 0.04675924,
-0.07278355 ,-0.15867405, -0.19005106},{ 0.00189418, 0.01436927, 0.01947143, 0.15713404, -0.05775398 , 0.00132401,
-0.02657078 , 0.0417855, 0.07029936, -0.01852517 , 0.0258234 , 0.11763477,
-0.00356156 , 0.0252909, -0.08000688},{-0.04422887, 0.09798954, -0.03964638, -0.02063364 , 0.06498757, 0.01679174,
0.00101677 ,-0.02717843, -0.12333775, -0.01411968, 0.06815947 , 0.02055293,
-0.00020058 ,-0.08646092, -0.03186227},{ 0.01955639, -0.01181029, -0.08054513, -0.03660463, 0.05392445, -0.00177531,
-0.01151452 , 0.00227965, -0.02473695, -0.01459872, -0.10445801 , 0.00066381,
0.33477294 , 0.03159321, -0.13707295},{-0.05854611, 0.05563203, -0.07432222, -0.03877077 , 0.05131323, -0.01026979,
0.02212165 , 0.06021192, -0.23577747, -0.01759825, 0.04000226 ,-0.06754858,
0.00430236 , 0.00470649, -0.00905744},{ 0.02744578, 0.01049417, -0.14400882, 0.07265298, -0.0483122 , 0.5851007,
-0.01454035 , 0.03055913, 0.04925501, -0.06990296, -0.09305329 , 0.00747169,
-0.08222108 ,-0.03285745, -0.05162834},{-0.08028527, -0.00650254, -0.08865513, -0.12177491, 0.1484777, -0.03225224,
0.05424895 , 0.06576267, 0.17623559, -0.13273048, 0.05803378 , 0.0084713,
-0.08396149 , 0.04943042, 0.09935889},{0.02462858, -0.06219504, 0.01083998, -0.04123548 , 0.01705255, -0.00500283,
0.00423315 ,-0.09918094, 0.14344268, 0.0042718 , 0.15417035 ,-0.08496436,
0.00049431 ,-0.0028007 , -0.10328478},{-0.06149098, 0.14978845, -0.19309339, 0.02385345 , 0.2952537, 0.00487488,
0.04301801 ,-0.11583121, 0.0494669, -0.00283253, -0.09265693 , 0.61648583,
0.06682242 ,-0.31377164, 0.03862396},{ 0.00694725, 0.1277931 , 0.16225147, -0.03222198, -0.02504804, -0.02669266,
-0.00248554 ,-0.06387497, 0.08781163, 0.01522855, 0.00610268 ,-0.03042516,
0.04002726 , 0.10044505, 0.04859708},{-0.03156194, -0.1157001 , -0.08626787, -0.11208117 , 0.02686976, -0.02092152,
0.02127195 ,-0.05566752, 0.12324136, -0.00164794, -0.03618627 , 0.03306646,
-0.00744974 ,-0.07133985, -0.02498077},{-0.02736508, 0.02535594, 0.2350533 , 0.14180268, -0.27926436, -0.0331983,
-0.04743196 , 0.00529093, 0.12576331, -0.01322038, -0.05163177 , 0.01533772,
-0.14073594 , 0.037071 , 0.00642882},{ 0.08556568, 0.04851401, 0.05353763, 0.07847048, -0.10097551, -0.01848759,
-0.00113077 ,-0.07241186, 0.20866382, -0.06169135, -0.10111146 , 0.02019643,
-0.13822813 ,-0.01037119, 0.37543207},{ 0.05473702, 0.19788605, 0.16224682, 0.09582794, -0.03109609, 0.01692711,
-0.11723787 , 0.04753019, -0.10977712, 0.46004966, 0.03240119 , 0.0911913,
0.1098649 , 0.00732481, -0.05678695},{-0.22376063, -0.15850763, -0.10074101, -0.2912151, -0.17034493 ,-0.1599119,
0.14202355 ,-0.09511662, -0.11193856, 0.38811857, -0.11081228 ,-0.10829836,
-0.11980244 ,-0.08078839, -0.07115651},{ 0.00798322, -0.04994775, -0.1214494 , -0.21098432, 0.19605161, -0.05743315,
0.04425124 ,-0.00189329, -0.13480374, -0.02665685, 0.16697045 ,-0.03992294,
0.21475956 ,-0.0588842 , -0.06597529},{-0.03484216, -0.02849019, -0.13294432, -0.0360908, 0.01924483, 0.06739326,
-0.03041751 , 0.1069481 , 0.19840455, 0.04643737, 0.01707386 ,-0.03813351,
0.01416968 , 0.0677641 , -0.19553229},{-0.01071236, 0.09638874, -0.08829297, 0.0153657 , 0.08474442 ,-0.02549646,
0.03332062 ,-0.03824322, 0.04445163, -0.0322081, -0.03378802 , 0.08707765,
0.04655609 ,-0.0843944 , -0.10470995},{-0.02161409, -0.03201476, -0.10308237, 0.00880122 , 0.01404477 ,0.03581631,
0.03376344 , 0.15233745, -0.06243582, 0.0086757 , 0.05014464 , 0.09050902,
0.05085665 ,-0.07580943, -0.07581396},{ 0.04543801, 0.02276264, 0.02272544, 0.0764323, -0.04839323 , 0.02976735,
-0.01147835 , 0.07726516, -0.04036373, -0.02652093, 0.04246063 ,-0.07795841,
0.04750724 , 0.12476142, 0.10683694},{-0.04147321, 0.07877503, -0.03574083, 0.03862737, 0.10744441, -0.03943758,
-0.03399108 , 0.14007546, -0.15142705, -0.00389115, 0.04915684 , 0.03570704,
0.07829898 , 0.06922383, 0.03922411}};
PROGMEM const float dmodel_kernel_1[40][40] = {{0.40466344,-0.1524832,0.30265495,0.12730531,0.03920864,0.12515596,0.09276772,0.039528113,0.41134217,0.14012508,-0.13232224,0.11303754,0.01618393,-0.07626962,0.32201615,0.13135746,-0.30167696,0.122185044,-0.26558337,-0.67049253,0.32734928,-0.23049644,0.06983475,-0.38751602,-0.56668824,0.08803036,-0.030478187,-0.15782546,0.45159835,-0.25189188,0.33667323,-0.065458834,0.3824287,0.2108373,0.004258222,0.24007133,-0.3359964,-0.30582565,-0.13964175,-0.18160477},
{-0.35522217,0.30502257,-0.4497363,-0.17436954,0.14600468,0.025290877,0.35952455,0.2680586,-0.47546318,0.16038938,0.032546975,-0.042558476,0.2770738,0.2371357,-0.07277929,-0.058026228,-0.1653207,-0.08097052,-0.019143881,0.19961129,-0.12699,-0.030253489,0.429997,0.045018744,0.28068078,-0.042044938,0.17891015,0.38826138,-0.054445677,-0.24658816,0.06841017,-0.14755537,-0.5653615,-0.28727865,0.44546625,-0.33040696,-0.12522483,0.1440662,0.1929966,0.22998816},
{0.12536837,0.076972306,-0.11400381,-0.2912062,-0.21201523,-0.2871257,0.28075063,0.13491856,0.3254421,-0.09261201,-0.093120575,-0.31278664,-0.3118058,0.30616355,-0.062182274,-0.17442311,-0.13991113,0.1511508,0.06425781,-0.20108195,-0.15046276,-0.29400513,-0.1521019,-0.03035538,-0.25205922,0.21070659,0.035829347,-0.2306654,0.29846868,0.04486517,-0.32395136,-0.01532228,-0.032310434,-0.013459541,-0.14685644,0.01422668,0.022937039,0.0057625338,0.14366284,-0.14287008},
{-0.042019837,0.09705145,-0.18936859,0.109265774,0.190447,0.007758981,-0.32168776,0.18043415,0.19293311,-0.3041647,0.40253273,-0.41423506,-0.006840563,0.14093794,0.008468442,-0.2456778,-0.42878482,0.24689706,0.33206278,-0.027697956,0.39320445,0.10550196,-0.13215521,-0.10492936,0.022467604,-0.12619227,0.04094957,-0.6229197,-0.13782611,0.010148483,-0.05494945,-0.02629327,-0.11698113,-0.122431055,-0.28202415,-0.24403717,0.020389766,0.20206606,0.04306353,-0.07296749},
{0.43786028,0.009008577,-0.29019988,0.08533855,-0.3532891,0.018124279,-0.023958676,-0.23712675,-0.27413812,0.093292706,0.09723061,0.2804154,0.04124981,-0.09639564,-0.12318962,-0.036403988,0.106511585,-0.001285305,0.012760834,0.15537573,0.23301749,-0.23467903,-0.20622173,0.19585292,-0.38059875,0.06235683,-0.413253,-0.24132107,-0.0053495155,-0.3586424,0.33770275,-0.0739351,-0.22641493,-0.13862969,-0.26589313,-0.1422623,-0.11234864,0.18337831,0.43796137,0.06649816},
{0.010586661,0.35866302,-0.13822125,0.056274105,0.10359401,-0.43824458,0.080576606,0.46888277,0.047104612,-0.088655606,-0.028411187,-0.2504389,0.14242032,0.103510074,0.1468534,0.24179,-0.147355,-0.25670734,-0.1227292,-0.73098063,0.083563596,-0.18692759,0.13101836,-0.32452932,0.116206385,0.20436591,0.25435263,-0.45823506,0.24938096,0.2981384,0.111244224,0.46418282,-0.19368383,-0.13376735,0.043222424,-0.22386424,0.16077653,-0.32105917,0.2235345,0.101902716},
{0.20948255,-0.3461601,-0.122286916,-0.09922704,0.10869041,-0.2937364,0.2442493,-0.06333781,0.24165875,-0.23147675,0.30037764,0.069055624,0.033492252,-0.23095834,0.04117206,-0.15787838,-0.32596695,0.2812631,0.29055682,-0.036826357,0.22714683,0.10633311,-0.086006284,-0.103256814,0.2213651,-0.118217655,-0.16165103,0.13397653,-0.13096637,-0.38042402,0.0740725,0.34245193,-0.09842802,-0.4284877,0.13551491,-0.31004813,0.19585747,-0.003036776,0.2289476,0.11632538},
{-0.28948903,-0.23336361,-0.09924808,0.027103603,-0.23173742,0.01594371,-0.28316203,-0.048118867,0.117971376,0.21527609,-0.11960056,0.0455391,0.007682249,0.070414856,0.08388667,0.09718665,-0.10053025,-0.06428446,0.24254875,-0.11455713,0.064346656,-0.03557335,-0.22983678,0.31155542,-0.088017926,-0.1846988,-0.32690328,-0.17529738,0.23215503,-0.19266053,0.09900643,0.13942768,0.07700822,0.15337344,-0.14593358,-0.27837944,-0.22709318,-0.067988716,-0.0891094,-0.07165962},
{-0.25090438,0.45516774,0.043522004,0.019117057,-0.0692791,0.047145523,-0.14329438,-0.40630475,-0.21238315,0.0022686403,-0.102067366,0.27750865,0.27435753,0.2755087,0.2329303,-0.117367804,0.022493133,0.24887346,0.18430023,-0.14490408,0.2425645,0.042682007,0.021109963,0.28381956,-0.13861048,0.043220755,-0.43449378,0.11284141,0.16362451,-0.11173597,0.18953528,-0.20618917,0.3029652,-0.06883353,0.14726573,0.14916226,0.3570299,0.054552514,-0.35766923,-0.13652435},
{-0.29975262,0.08637776,0.18182263,-0.23168975,0.13336504,0.03410988,0.26184383,0.055757158,0.07658267,-0.050271537,0.12072393,0.1121122,-0.24774458,0.18494166,-0.38768935,0.011799483,-0.100042276,-0.32850316,-0.26749986,0.07139334,-0.21453479,0.25788292,0.025437633,0.45648834,0.0667395,-0.061274245,-0.06845816,-0.18338497,-0.21211198,0.117808275,-0.16081868,0.035130665,-0.351674,-0.20265706,0.1445248,0.23958866,0.2071864,0.11941152,-0.03790412,0.15786363},
{-0.37366846,-0.4083306,-0.20616841,-0.25509635,-0.5074152,0.06830471,-0.036840893,-0.38956743,-0.20848691,-0.21065418,-0.19986536,0.025311284,0.18393734,0.13190734,-0.1943965,0.36174235,0.2485761,-0.45460308,-0.41870913,0.11250854,-0.23562662,0.04087637,-0.18857871,0.120779715,-0.031288225,-0.025454683,0.14766563,-0.23406053,0.011455142,0.285327,-0.26841986,-0.34141472,-0.33142325,-0.26248473,0.09597834,0.24226835,0.020465007,0.16503394,0.0071760793,0.1430163},
{-0.016438024,0.07709299,-0.18996003,0.12828869,-0.35300297,0.15161876,-0.28586504,0.07586705,0.16768804,-0.08608194,-0.347432,-0.22769873,0.39213777,-0.003592508,0.2839949,-0.28854337,0.12872255,0.103726536,0.19204625,-0.37310496,0.006893564,0.18001804,0.029545283,0.088900775,0.29370132,-0.3971756,0.017042752,-0.153714,-0.19446199,0.09482418,0.2295475,-0.18544814,-0.022149784,0.068625756,-0.16589819,0.06228201,0.003933414,-0.030663833,0.014508498,-0.11395654},
{-0.03151979,0.018235039,-0.2846256,-0.27550045,-0.03508213,0.21063414,0.054591496,0.16828544,-0.31400186,0.31535357,-0.30600348,-0.15637262,-0.37889,-0.32502413,-0.19207971,0.20156081,0.032568973,-0.31026077,0.14921339,0.11265645,0.09514055,0.035725575,0.34858632,0.26954454,-0.18899453,0.040630758,0.16743761,-0.63511795,0.2579033,0.21933286,0.03618244,-0.106381625,-0.37746462,0.28461447,0.094711475,-0.18932009,0.30218625,-0.13422094,-0.25473702,0.028470038},
{0.13675813,-0.37493476,0.055881564,-0.36151654,-0.08230096,-0.33926377,-0.2033917,-0.09718445,-0.25159663,0.19090413,0.10313963,-0.21105582,0.26444355,-0.27854925,-0.12028867,0.12706809,-0.3228226,-0.17442216,0.109314814,-0.120094396,-0.26269522,0.017091665,-0.3173755,-0.04531665,-0.57132727,0.20711371,-0.049238343,-0.06328383,-0.24753559,0.23454688,0.09919547,-0.118236944,-0.15028766,-0.117684074,0.067201264,0.1482593,-0.25992715,-0.02548487,-0.36016434,-0.21885908},
{-0.25044444,0.34134597,-0.12800288,-0.14288303,-0.2733203,-0.12099598,-0.07469191,-0.24817455,-0.10476288,0.0788409,-0.29563162,-0.028262438,-0.19116154,0.06366886,-0.2215961,0.15016517,0.23373418,0.11808916,0.138248,-0.16482191,-0.053686988,-0.19183125,0.17619434,-0.030746056,-0.23091313,0.33943188,0.4150261,0.5867046,-0.45488203,0.2437443,0.094566226,-0.36375356,0.017393515,0.20081198,-0.4717884,0.050858434,0.045951895,0.10622086,-0.0212227,-0.15328142},
{0.15903053,0.04303872,-0.22016297,0.27577367,-0.18221848,0.3302518,0.20941359,-0.24439394,-0.06533647,0.18224993,0.24826509,-0.18420427,0.23062643,0.1765401,0.2076253,0.29698423,-0.2838774,-0.048408687,-0.0095720235,-0.0673163,-0.026704263,0.13864493,0.107751094,-0.07996912,0.26890865,0.2216619,0.23885979,-0.207261,0.224887,0.022962267,-0.20289727,-0.07687863,0.20349658,-0.20229316,0.057622083,-0.16771375,-0.22181503,-0.17023411,0.041542534,0.027176134},
{-0.23162651,0.22986497,-0.3621127,0.15822542,-0.3183863,-0.09149626,0.25696826,0.15463378,-0.36645937,-0.03761532,-0.048624575,-0.061194375,-0.19459344,0.18949415,0.28316638,-0.17074403,-0.0092475,-0.19297706,-0.030286811,-0.0903064,0.032032803,-0.01517546,0.42499873,0.12225347,0.34968075,0.055272378,0.052270744,-0.40994635,-0.011166281,-0.2700747,-0.22334102,-0.20230655,-0.40948832,-0.06313441,-0.3142329,0.13230127,0.14947885,0.19845866,0.07907743,0.23941493},
{-0.2787864,-0.22833955,0.009777341,0.24394089,0.41033778,0.11798997,-0.031767968,-0.25561646,-0.122435585,-0.023198463,-0.26447204,-0.0034194908,-0.030648801,0.10812103,-0.17988761,-0.25332847,0.20040715,0.06841171,-0.07443949,-0.66463435,0.12738052,0.11819432,-0.34056062,-0.13796908,0.3130923,0.13682093,-0.1456791,-0.06074256,0.050518945,-0.030790757,0.112057,0.22375584,-0.11628439,-0.3377541,-0.12453624,-0.17698479,-0.11142974,-0.27995378,-0.23190421,-0.23364867},
{-0.013501295,-0.3642243,-0.4301138,0.09446241,-0.22229972,0.052470986,-0.3879934,-0.4925058,-0.32671255,-0.63230914,-0.34034047,-0.5710095,-0.59073234,0.0813948,-0.12912141,0.03089915,0.018807856,-0.2278521,-0.31087318,-0.37208578,-0.024706203,0.372546,0.028159147,0.049110577,-0.10925163,0.21005921,-0.6212995,-0.27360636,-0.121409975,0.027728379,-0.06706979,-0.21352775,-0.5110208,-0.27965465,0.069198824,-0.11091786,0.067151554,-0.35841525,-0.03939848,-0.07517462},
{-0.062324837,-0.13992755,0.04003977,0.19974896,-0.18183656,0.37750036,-0.22038405,-0.05369271,-0.30675918,-0.07722871,-0.25182813,0.037163883,0.026483972,0.10642591,0.08346438,-0.0047297706,-0.17240098,-0.33662257,-0.2984366,-0.6369115,-0.08790135,-0.12796839,-0.23138066,-0.1570175,0.36664686,0.22213535,-0.13987012,-0.61438465,-0.12092456,0.15835622,0.07189361,-0.07729906,0.16663846,0.29899877,0.0004950848,0.26737007,0.12393753,-0.086242534,-0.31849232,0.032757085},
{-0.19902441,0.23641707,0.10112873,0.22967264,0.10798328,0.24878459,-0.28901446,-0.08611862,-0.09533158,-0.30947366,-0.29250908,0.054627206,0.2192764,-0.16097176,0.27168214,-0.080887854,0.17158225,-0.2105467,0.119485244,-0.24714588,0.0788394,-0.18810722,-0.15182512,-0.08885624,0.03268406,0.08810162,0.16630812,-0.025828756,-0.31585142,0.28412342,0.15405059,0.16886319,0.11835613,0.4170398,0.035715308,0.020775681,-0.2644617,0.045357876,0.19683036,-0.06294959},
{0.08555565,-0.0904721,-0.011475445,0.20175523,-0.2989493,0.26369238,0.18501398,-0.285482,-0.03599637,0.084874354,0.2490699,0.08080001,0.021532321,-0.09237821,-0.27003413,0.31560457,-0.40702048,0.2946877,0.07780728,0.19852337,0.403106,0.18906352,-0.014812727,0.14609121,0.12622607,0.28414756,-0.033989318,0.06720082,0.053524796,0.21225414,-0.37738556,-0.23313165,-0.0774141,0.16859895,-0.06756157,0.23308532,0.12344352,0.24859028,0.06231771,0.22673333},
{0.029662935,0.03913086,-0.027004898,0.37501276,-0.73744434,0.44379255,-0.18457565,0.22303195,0.12708753,0.13051964,-0.33508125,0.24116431,0.14734682,0.20591164,0.20002948,-0.24204981,-0.3485357,0.22703399,0.13915867,-0.14042465,-0.20614454,0.20471038,-0.012823,0.37662098,0.039446432,-0.275321,-0.06587929,0.01308055,0.054712743,-0.1368491,0.06298864,0.029234646,0.313765,0.3107815,-0.42904457,0.0850427,-0.42651376,-0.08455957,-0.341179,-0.030799512},
{0.005825129,0.041293964,0.3312805,0.018357558,-0.4451187,-0.3918486,-0.13333912,-0.16757774,-0.33130625,-0.4704697,0.29763603,0.05501365,-0.5861879,-0.1707132,-0.19921072,0.014971676,0.009020272,-0.5185753,2.3415272e-05,-0.19467267,0.027449353,0.2601125,-0.5005956,0.29329538,-0.43972856,0.09442912,-0.15510267,-0.06945094,-0.09365689,0.037327487,-0.02421987,-0.3827516,0.13294205,0.2372641,0.09575066,0.1721685,0.27679205,-0.06797715,-0.039259236,0.27836385},
{-0.22412516,-0.0695298,0.119973004,0.03934238,-0.26043782,-0.37980306,0.3034279,0.48839688,0.09211974,0.073252045,0.24269708,-0.002318871,-0.12061252,-0.071005054,0.09387566,-0.15030651,0.20660858,0.21570331,-0.049070574,-0.22050288,0.27130324,0.016990377,0.19356707,-0.08451978,-0.4628919,0.21663631,-0.07078817,-0.34529665,0.113910116,0.010202036,0.1380006,0.20300153,0.18566051,0.13137798,-0.24142297,0.10747466,-0.25775635,-0.17410596,-0.17261314,0.2735214},
{0.15504119,-0.0061346013,0.09731032,-0.22486772,0.12650573,0.19597207,0.14662057,0.12458955,0.12326958,0.27125004,-0.0645108,0.14790763,-0.108860314,-0.03836042,-0.11775165,-0.14964956,0.21559878,0.20826954,-0.06078551,-0.31100875,0.21655011,0.11819141,0.13601345,0.21069716,-0.48120847,-0.35739172,0.1873412,0.2531074,0.18626109,-0.30676594,-0.016545955,-0.10673888,-0.15389344,0.06598892,-0.07984877,-0.02053394,-0.28119913,-0.19592395,0.083263375,-0.23075719},
{-0.20922521,0.35489783,-0.39657342,-0.054198865,-0.25841066,-0.2652097,-0.3816893,0.29636165,-0.22360241,-0.30463597,-0.4063281,0.17849864,-0.043584347,-0.12905389,0.0036692321,0.30431306,-0.26903588,-0.019512886,-0.42721334,0.040678203,-0.043032896,-0.20804325,-0.09891721,-0.25346264,-0.34509143,0.15441288,0.48433346,-0.523298,0.14239922,0.34767655,0.12251224,-0.036467005,-0.32395175,-0.22488262,-0.45638996,0.47424674,0.21604182,0.03372681,0.052550998,-0.4079279},
{0.33121485,-0.29125172,-0.2886849,-0.029242566,0.06508587,0.27498248,-0.26552534,0.19046214,0.18438262,0.08220409,0.088881455,0.12146663,0.0011730238,0.30689055,0.1799716,0.17468384,0.10254949,0.020826621,0.33313125,0.13746873,-0.20229907,0.19047666,-0.5264213,0.12417443,-0.13217452,0.193684,0.11090552,0.26033786,0.13184254,-0.1402023,-0.15958144,0.0057960586,-0.5104018,-0.459457,0.09820997,-0.040903345,0.09127664,-0.060151108,0.1616197,0.0106157875},
{0.28149167,-0.47654697,-0.13990825,0.26287216,0.23929869,-0.11784334,-0.47394603,-0.37560844,0.08097158,-0.096741475,0.22692512,0.11929375,-0.10600522,0.27992824,0.12392258,-0.3475481,0.3101598,0.31375688,0.34428167,0.21425495,0.22812887,0.13728304,-0.1619448,-0.011704461,0.03517179,-0.038653284,-0.23268187,0.52255476,-0.14263397,-0.07024931,0.24194007,-0.3705833,-0.112687126,0.023648204,-0.06404656,0.12567882,-0.28998458,0.16290048,-0.19339117,0.21566218},
{0.12904936,0.25003028,-0.23616064,-0.23058994,-0.42542803,-0.22725376,0.19940476,-0.28988647,0.12530598,0.3146921,-0.31236035,-0.031866718,-0.31463736,-0.1353304,-0.3348471,0.19414099,0.02692484,-0.038694415,-0.30291012,-0.5490894,-0.12401741,0.06861423,0.26365364,0.13052562,-0.4304466,0.27609506,0.007841848,-0.32996067,0.22351147,0.2786481,-0.028422026,-0.27749726,-0.3621559,-0.22787476,0.25677872,-0.30726287,0.30636,-0.10128855,-0.09690347,-0.3197912},
{-0.034407027,-0.2654237,0.3469021,-0.0025161097,0.19607788,-0.18360518,0.1260226,-0.15673418,0.076655164,0.2521736,0.009100683,-0.12569696,0.13684224,0.26523685,0.20347527,-0.5006971,-0.1173885,0.1304899,0.029816464,-0.038816255,-0.1440784,0.10046223,-0.0063362825,0.019030461,0.055007033,-0.27486923,0.16674353,-0.08587995,0.14445849,0.21729735,0.22818477,0.083119534,-0.22844365,-0.20950148,0.20480666,-0.009858729,0.1167332,0.23487514,-0.03840849,0.052644208},
{0.011927562,0.26621708,-0.032066204,0.0124457255,-0.36605492,0.07367261,0.0794368,-0.10694316,0.17573665,0.1975377,-0.20713408,-0.19694223,0.3314604,-0.023927985,0.15792835,0.16534986,-0.3302933,0.049718414,-0.12919731,-0.12343902,-0.23744953,0.034270663,0.15903664,0.08323039,-0.08821884,-0.1027521,-0.042707328,-0.795855,-0.14768982,0.07356429,-0.29392678,-0.12012853,0.3370261,0.42279887,0.109969124,0.2377854,0.3621334,-0.15612848,-0.13617772,0.04686338},
{0.25982982,-0.32367903,0.28435025,-0.111566454,0.18183322,-0.13125354,-0.008486712,-0.429961,-0.058961805,-0.09231087,-0.29890826,0.25807706,-0.31680855,-0.28516582,0.23285982,-0.0012615058,0.3056399,0.21678302,-0.18587948,0.3089159,-0.21307288,-0.045530498,0.16494751,-0.13515143,-0.35039142,-0.36663654,0.23550427,-0.45253056,0.30435932,0.32499856,0.1468844,0.21854396,-0.1066741,-0.18646127,-0.30265486,0.22552389,-0.10882236,-0.19812733,0.006720241,0.015800247},
{-0.28543597,-0.15969546,0.07460296,0.06516894,0.32176676,-0.3184212,-0.09016057,-0.06767466,-0.114862025,0.30570087,0.11127428,0.24885644,0.07405404,-0.14248341,0.009129652,0.32580185,-0.08669209,0.13653323,-0.068036996,0.33580562,-0.19256224,0.14960028,-0.035267822,0.3484612,0.080538,-0.072349034,0.2982418,-0.108083725,0.11771307,-0.1618332,-0.1627159,-0.15885545,0.18091649,-0.24823813,0.18492492,0.099856704,-0.16951498,0.21467929,0.31991598,0.28673664},
{-0.24427374,0.008836382,0.15938519,-0.11344781,0.23530714,0.07097541,0.16750146,0.41628316,-0.30809084,0.0016744448,-0.064671725,0.23256926,-0.07631783,-0.3237701,-0.17162476,-0.006863548,0.3783608,-0.2238451,-0.11834128,0.14724092,-0.13335055,0.2428035,0.3328175,0.18755755,0.32209468,0.02892288,-0.05312757,0.04210074,-0.33298454,0.1591022,-0.2755458,-0.04381949,-0.110868685,-0.37046,0.12941168,-0.16698846,0.23684539,0.25396368,0.11818091,-0.036394086},
{0.119694434,-0.61203784,0.06117052,-0.122794345,-0.11878533,-0.20866466,-0.2943893,-0.2868143,-0.3332662,-0.21761653,-0.055940323,-0.24561943,0.03555619,-0.35404575,-0.33010438,0.18752399,-0.38787767,-0.09954644,-0.32024682,0.14364886,-0.01849381,-0.24565428,0.02103353,-0.28753063,-0.4799824,-0.45710093,-0.5636191,-0.022436788,0.13227281,-0.030089322,0.37451598,-0.2085775,-0.04364545,0.018545624,-0.15545873,-0.18425913,-0.096760824,-0.21180542,-0.2529618,-0.07979125},
{0.2982033,-0.3213842,0.13101034,0.02579741,0.16648339,-0.08414302,-0.035161287,-0.011349729,-0.0074029304,0.1643404,-0.11335155,-0.3559918,0.12175907,-0.10665427,-0.15272784,-0.10132411,-0.32787177,0.15381812,0.021044912,0.17858256,-0.1334749,-0.2800992,-0.25563157,0.06154773,0.1217761,-0.11122766,-0.29269597,-0.39125234,0.0072597465,0.0080595855,0.21231954,0.29160416,0.12726416,-0.31046185,0.0141716665,0.17351858,0.20237538,-0.38443756,-0.15430686,0.0010228696},
{0.3198465,-0.49216133,0.06299705,-0.22681727,-0.08985323,-0.15943624,0.1276358,-0.5293123,-0.16537653,-0.17396004,-0.040629458,0.13508902,-0.13172701,0.44631934,-0.085367374,0.10087848,0.094475895,-0.14117736,-0.3417311,-0.08372872,0.26534876,0.052266758,-0.49893463,-0.35486144,0.18635269,0.15286288,0.19205147,0.41079947,-0.06662206,0.3362622,0.16508093,-0.31534132,-0.11919313,-0.15489472,-0.19296803,0.3323613,-0.023089819,0.26010144,0.21653844,-0.28811592},
{0.25771362,-0.36491987,0.13872276,-0.15637529,-0.25992912,-0.2943527,-0.19336165,-0.21934704,0.3349574,-0.043827254,0.19319172,0.07349608,-0.053660586,-0.17679828,0.27260116,0.061522607,-0.11062644,0.06292437,0.36523828,0.053741846,0.24708422,-0.14030638,0.11278413,-0.17438845,0.12255031,0.065219365,-0.15947916,0.08314782,0.2699413,0.14900963,0.055218603,0.1558091,0.30749267,-0.29680157,-0.13939756,0.36758378,0.23022681,0.14577647,-0.034725044,-0.032127712},
{0.062180664,-0.14785331,0.21927,-0.11337489,0.2705563,-0.30638772,0.2712256,0.023623824,-0.33474028,0.3161694,-0.07991426,-0.12711729,0.025489321,-0.002886749,-0.3885626,-0.17745408,-0.1946237,-0.22656693,-0.3409366,0.3095845,-0.0030458963,0.3586998,0.18545927,0.07270198,-0.5576382,-0.2968756,0.18174666,-0.17202929,-0.06500339,0.2474355,-0.3526304,-0.08982257,-0.25814882,0.1437481,0.2554383,-0.064101376,0.3613879,-0.046657693,0.0798859,0.2757796}};
PROGMEM const float perceive_kernel_self[15][40] = {{0.00472426, 0.11226495, 0.01179993, -0.05598756, -0.02410705, -0.02739789,
-0.06830911, -0.05634673, 0.09649715, 0.08619135, 0.06939911, -0.06247471,
0.12716275, 0.0367239 , 0.13030446, 0.08279061, 0.08644087, -0.0311308,
-0.17369854, 0.02842498, 0.12516299, 0.04413626, -0.06420962, 0.06570185,
0.02350835, -0.00905076, 0.10412635, -0.06908249, 0.05582772, 0.08252051,
0.04776502, 0.1242763 , -0.0219869 , 0.10586216, 0.03196585, -0.0718091,
-0.0598103 , -0.00167655, 0.01454554, 0.11083029},{-0.10487968, -0.04217776, -0.02742272, 0.00904363, -0.25290847, -0.0780633,
-0.12384862, 0.16735062, -0.19710127, -0.00942897, 0.00586721, 0.12821326,
0.0207458 , 0.1251068 , 0.07530893, -0.17536867, -0.01596842, -0.02825877,
0.04754998, 0.08725545, 0.1136774 , -0.08217765, -0.07530184, -0.10912588,
-0.0479396 , -0.13612005, 0.09297894, 0.00836653, -0.11333457, -0.04404762,
-0.00647702, -0.04528228, -0.07783911, -0.08769874, 0.02942027, 0.05179777,
-0.04961622, 0.08574804, -0.08876238, -0.01445412},{-0.19822009, -0.00343851, -0.03893053, 0.15161382, -0.1496734 , -0.00563844,
-0.10591499, -0.10570505, 0.11606817, 0.03561531, 0.18141781, -0.07856987,
0.02575611, 0.05768482, 0.12499497, 0.04336018, -0.04004989, -0.09161751,
0.05029271, 0.04078938, 0.00321774, 0.1152683 , -0.01802554, -0.06057659,
-0.11831969, -0.04444473, 0.06516824, 0.04333385, -0.09658509, -0.0279512,
-0.06003016, 0.1497262 , -0.16557546, 0.05836576, 0.1377943, -0.1587336,
-0.07883679, 0.1462441 , -0.07052766, 0.0355987 },{-0.09096844, 0.09382091, 0.04766189, -0.00352518, -0.23706758, -0.05549218,
-0.16678345, 0.0461404 , -0.1632725, 0.1670632, -0.02171768, -0.2833428,
0.1829739 , 0.24957834, 0.05867164, 0.06775071, 0.03376953, -0.19195756,
-0.05668236, 0.13826996, 0.04916538, 0.10024513, -0.1076435, -0.22786734,
-0.09168876, 0.02795221, 0.00949204, 0.23888236, -0.1378375, -0.03004151,
0.00196527, 0.11526914, 0.06181296, 0.08269621, 0.16424488, 0.00185844,
0.06377595, 0.2489316, -0.0425602 , 0.0937915 },{ 0.32462314, 0.0609579, -0.04396904, 0.08324298, 0.3348715, -0.01660525,
0.0725414 , 0.08899498, 0.01282325, -0.19520324, -0.06212769, 0.2479498,
0.02440916, 0.012508 , -0.15460807, -0.02291259, -0.04410926, 0.0990369,
0.03034635, -0.05966022, 0.21285789, -0.06906463, 0.15406525, -0.13896126,
-0.0481463 , -0.03029195, 0.01734863, -0.04442092, 0.09392197, 0.10746638,
0.14454597, -0.06920628, -0.04353456, -0.05558949, -0.145181 , 0.15484618,
-0.03801889, -0.13365488, 0.07620953, -0.10681406},{ 0.06183445, 0.0457995, -0.00873687, -0.13601294, 0.18445022, 0.04302209,
0.02641114, -0.04005921, -0.20386286, 0.02558509, 0.0264168, -0.25132492,
0.23385726, 0.10559432, -0.03114533, -0.14703658, -0.1724109 , -0.28668502,
0.10353148, -0.03805754, -0.0310579 , -0.26931307, -0.10262727, 0.29681072,
0.06689591, 0.05221628, -0.11675395, 0.21507223, 0.11700821, 0.04382219,
-0.1665296 , 0.04565736, 0.07108884, -0.01433347, 0.1018825, 0.23427166,
0.13562258, 0.04845576, 0.01200795, 0.127637 },{0.1045845, -0.05547679, -0.26695094 ,-0.05881383, 0.13188794, -0.16688175,
0.10703292, -0.1375849 , -0.32376713, -0.10099877, -0.09982389, -0.05643502,
-0.01020906, -0.08600179, -0.12806392, -0.09198917, 0.00937382, 0.18065158,
-0.20217994, -0.13377032, -0.08501011, -0.04655267, 0.01036491, 0.07036661,
0.04519083, 0.00462151, -0.05202822, -0.31716707, 0.10748363, -0.04458118,
0.00896524, -0.1468686 , 0.10543398, -0.01234106, -0.1542772, 0.23926774,
0.13044295, 0.05867612, 0.13779147, 0.01085849},{ 1.25137880e-01, -9.67965741e-03, 2.82929633e-02 -9.69363302e-02
-1.24637753e-01, 7.41882846e-02, 5.91549836e-02, 1.28104523e-01,
-2.06518993e-01, -3.69005024e-01, -6.81956112e-02, 2.34498620e-01,
1.00814648e-01, 1.95154265e-01, -1.78577360e-02, 1.96668774e-01,
-1.66260302e-01, 3.37196849e-02, 4.22147840e-01, 6.34459853e-02,
5.74997142e-02, -2.19021529e-01, 1.02292374e-01, -7.69898653e-01,
-2.33121186e-01, 1.87989399e-01, -1.36144236e-01, 2.59478301e-01,
4.10970475e-04, 8.86001885e-02, 1.83773741e-01, 1.48543030e-01,
-9.09537897e-02, -2.58703269e-02, -6.32428527e-02, 1.31078854e-01,
-1.07522737e-02, 8.41274634e-02, -1.29453361e-01, 2.06179529e-01},{-0.40675217, 0.00529399, 0.01914687 ,-0.00255373 , 0.37654087, -0.15879932,
-0.00138133, 0.2591638 , -0.04287037, 0.19040224, 0.04431801 , 0.30709496,
-0.04213042, -0.07724117, -0.17953089, -0.3015506 , -0.01339083 , 0.24262331,
-0.20000991, -0.2504984 , -0.19375105, -0.0622488 , 0.07961272 , 0.21533874,
0.01790074, 0.02341917, -0.17432836, 0.09953991, -0.0160748 , -0.20374833,
-0.04073061, 0.15475495, -0.2581371 , -0.03956203, 0.09503375 ,-0.6130779,
-0.20006947, -1.0200199 , -0.23468219, 0.05653416},{-0.17929502, 0.06104999, 0.04806235, 0.02856853 , 0.22838175, 0.10572618,
0.18672286, -0.11603826, -0.09521556, 0.04861732, -0.02751424, -0.19000131,
0.00653374, -0.40782312, 0.15185566, -0.11077325, -0.07963862, 0.23272918,
0.3574032 , -0.09476359, -0.1769622 , 0.01515018, -0.08467327, 0.1356269,
-0.10569527, 0.00354424, 0.01767136, 0.14968088, -0.07728305, 0.0821019,
-0.10376913, -0.2412247 , 0.07752621, -0.13120747, 0.11246727, -0.54270864,
-0.01158483, 0.04957869, -0.01143438, -0.08952321},{ 0.03651505, 0.07139917, 0.04597286 ,-0.12957941, 0.12108248, 0.09953071,
-0.02181544, -0.13784136, -0.01217867, -0.1886827, -0.06201813, 0.20541516,
0.05469425, 0.25610304, -0.10478804, -0.01731685, 0.04119355, -0.12179717,
-0.34936902, -0.0205563 , 0.08491303, -0.03481086, 0.19497615, -0.59665924,
-0.16295014, -0.00705645, -0.06000798, 0.10221808, -0.04093041, -0.01968902,
0.04688465, 0.14854218, -0.12513572, -0.13129303, 0.05851199, 0.2040228,
0.15728496, 0.16473925, -0.06091615, 0.05630939},{0.02314506, -0.01296861, 0.17272455, -0.13368762 , 0.05999165, -0.12057685,
-0.15187633, 0.2900139 , -0.44685546, 0.18432045, 0.08194064, 0.12478152,
0.06539115, 0.15000609, -0.22913268, 0.00458328, -0.08385149, -0.42158177,
0.24807301, 0.00341212, 0.14096443, -0.21356441, 0.13308194, -0.6562869,
-0.22936903, -0.03869464, 0.15283796, -0.0785362 , -0.28426713, -0.06854136,
-0.12008239, 0.09977115, 0.13151838, 0.16216294, 0.01234907, 0.19324784,
-0.05216445, -0.11978357, -0.17592604, 0.047475 },{ 0.20300159, -0.12452695, -0.49876848 , 0.01046401 , 0.2709277, -0.09167603,
0.16216227, 0.2898015 , -0.05873931, -0.05181378, -0.05763916, 0.0354826,
0.01059521, 0.5237938 , 0.27037904, 0.04217441, -0.11308822, -0.07970046,
0.19778302, 0.10724019, 0.16631857, -0.01692601, 0.1009494, 0.06260837,
-0.24891461, -0.2789945, -0.09872648, 0.0217792 , 0.0125458 , 0.10144069,
-0.04796647, -0.28515798, 0.08512089, 0.05132297, -0.06652278, 0.21355225,
0.19524832, -0.02457395, 0.13143009, -0.06318454},{-0.3150247, 0.00618879, -0.33214483, 0.09776791 ,-0.6816252, -0.01984664,
-0.04727738, 0.06767209, -0.11783158, 0.17588896, 0.19288994, 0.0836513,
0.0749364 , 0.0464961, 0.12631214, -0.13437606, -0.11612181, 0.14659624,
0.17110085, 0.17965734, -0.05933522, -0.00250653, -0.1694239, 0.08102252,
-0.03593536, -0.05496605, 0.1010941 , -0.25856555, -0.17420019, -0.20221049,
-0.09033168, -0.04538311, -0.05496654, -0.06106085, 0.19009374, 0.37870863,
0.01528983, -0.05264216, -0.12309665, 0.16910475},{-0.24171524, 0.03106955, -0.09844778 , 0.11835413 ,-0.1650725 , -0.14362928,
-0.076987 , -0.13403413, 0.17661124, 0.09213076, -0.00295895, 0.2653204,
0.23793106, 0.11615127, -0.01503738, -0.13911526, 0.04065366, -0.16477156,
0.35579225, 0.11881652, -0.0363358 , 0.13822499, 0.02455916, 0.11037412,
-0.09809712, 0.01695985, 0.08942883, 0.02998393, 0.24356072, -0.01745171,
0.06994335, 0.14536303, -0.09030338, -0.01399509, -0.08437251, -0.19381899, -0.01244074, 0.29216957, 0.07160104, 0.11733668}};
PROGMEM const float perceive_kernel_top[15][40] = {{ 0.06121383, 0.096651 , -0.0132988, 0.08538626, -0.02210221, -0.12444505,
0.1456544 , 0.10074375, 0.05599243, 0.09249672, -0.14817043, 0.04264409,
-0.08925367, -0.08656584, -0.11744452, 0.07457111, -0.09689849, 0.0122884,
-0.0252094 , -0.01188317, -0.01869796, 0.05032636, -0.15738039, -0.08955552,
-0.0197476 , -0.02606784, -0.15865447, 0.0235289, -0.0559094, 0.02066453,
0.12771372, 0.01088439, -0.00604707, -0.04054188, -0.19465493, 0.07188266,
0.09151066, -0.05212076, 0.05266301, 0.02930644},{ 0.20344664, -0.16791017, 0.21087505, 0.07419901, -0.3090158, -0.12353636,
0.22485161, 0.14880122, -0.40181488, 0.15076193, -0.03232244, 0.02190796,
-0.09876227, 0.18025851, -0.16154596, -0.13170397, -0.07262512, -0.21268268,
0.03140359, -0.13662462, -0.30830604, 0.09910489, 0.15164235, -0.31173664,
0.17660287, 0.06268062, -0.08624946, 0.07863393, 0.01187073, -0.1798367,
0.24029906, -0.07816663, 0.0023301, -0.2470285, 0.05049344, 0.15921377,
0.01560785, 0.05777179, 0.11650667, 0.057831 },{ 0.14024696, -0.18311429, 0.22539873, 0.06609372, -0.11416972, -0.09100574,
-0.05003642, -0.04179292, -0.06848316, 0.09554595, 0.11970335, 0.09357943,
-0.05908339, 0.11185972, 0.06732634, -0.06098791, -0.09059455, -0.12974362,
0.05374058, -0.22677368, -0.06292461, 0.10507672, 0.36710244, -0.10657334,
0.23506959, 0.12894496, 0.02939175, -0.12307508, 0.0324556, 0.03020594,
0.09712016, 0.03819004, 0.16134277, -0.01814983, 0.00143968, -0.00770734,
0.08031286, -0.0012143, -0.01869024, 0.13698481},{1.89568222e-01, 5.08456342e-02, 1.36914864e-01, 1.59240261e-01,
-1.47550702e-01, -1.31791169e-02, 6.37803376e-02, 1.03167174e-02,
2.02047732e-02, 1.19168594e-01, 1.17500462e-01, -2.25895401e-02,
1.54191535e-02, 2.50498593e-01, -4.15789261e-02, 2.11284935e-01,
-2.08548173e-01, 4.93433652e-03, 1.49341887e-02, 1.37999933e-02,
-1.63720459e-01, 1.32119834e-01, 1.54580802e-01, -1.04536287e-01,
8.78798813e-02, 9.19892639e-02, -2.12597864e-04, 1.28031015e-01,
-4.24154438e-02, -9.30017829e-02, 1.79303050e-01, 3.58235426e-02,
-3.97127168e-03, 6.28258958e-02, 2.19183967e-01, -4.14611101e-02,
-1.40147470e-02, 1.57062367e-01, 7.94022605e-02 , 2.37296615e-02},{-0.22880784, 0.25036177, -0.08270078 , 0.106988, 0.03335821, 0.2064852,
0.19881871, -0.07081675, -0.01179515, 0.05154467, -0.10004899, -0.21503937,
-0.01578879, 0.08650583, 0.02933942, -0.17519468, 0.23727976, -0.10544454,
-0.07348602, -0.22443515, -0.05525342, -0.0603665 , -0.02218767, -0.19886063,
-0.05026969, -0.13765775, 0.05288269, 0.20602499, 0.06924142, 0.04305606,
0.20599762, -0.10891309, 0.03870065, 0.21644092, -0.02157936, 0.12210742,
-0.09804575, 0.04089319, -0.05974847, 0.01283043},{-0.07043017, 0.26244023, -0.04518699, 0.04412939, 0.05521358, -0.06542546,
0.0492539, 0.10893929, -0.02061571, 0.12860453, -0.09906057, 0.00373445,
-0.06535557, -0.03493566, -0.20884302, 0.23776647, -0.04728671, 0.2446432,
0.09164657, 0.19608611, 0.05961167, 0.0173953, -0.24063665, 0.05472295,
-0.10201962, -0.02917387, -0.04585294, 0.15746401, -0.21025078, -0.02089775,
-0.06683174, 0.03800384, -0.2042195 , -0.07082655, -0.04419537, 0.03955165,
0.04451422, 0.14347428, -0.04346586, -0.12884516},{-0.07125263, 0.10090528, -0.3333205 , -0.18466087, 0.13610092, 0.19813998,
-0.24544701, 0.06371017, 0.06083267, -0.19256224, -0.26866084, 0.23535763,
0.04044947, -0.40067315, 0.15300587, 0.01842522, 0.10115474, 0.13101892,
-0.18722342, 0.09676388, 0.11032547, -0.09908941, -0.07050757, 0.15535893,
-0.04463276, -0.05292824, -0.3309146 , -0.2054832, -0.19623733, 0.01927391,
-0.22737814, -0.00634592, -0.13323317, -0.36117852, -0.26741397, 0.07998262,
-0.07036647, 0.01459211, -0.04345139, -0.13050856},{-1.07814424e-01, 2.25888088e-01, -8.32202192e-03, 3.06874886e-02,
2.03867242e-01, 2.65030144e-03, 1.82486475e-01, 5.86288981e-02,
-5.17837182e-02, 7.07057565e-02, 8.13174322e-02, -2.17214987e-01,
2.90014185e-02, 1.70010105e-01, 1.11257203e-01, -5.50595066e-03,
3.43270898e-02, -2.35845730e-01, 1.20997436e-01, -3.09158623e-01,
-1.71285823e-01, -9.16281044e-02, -2.56057940e-02, -4.83586490e-01,
-4.55186283e-03, -1.06680251e-04, 2.36278474e-01, 1.60481974e-01,
5.49332006e-03, 1.64714918e-01, 5.65189496e-02, -3.11337680e-01,
-5.20961024e-02, 2.27226511e-01, 1.15152270e-01, 4.08410430e-02,
-1.10738382e-01, 1.99169442e-01, -1.44082665e-01, 1.55567825e-01},{0.01421167, -0.05944391, 0.04941515, -0.13160364, 0.1507591, -0.22544229,
0.07542288, -0.2254941 ,-0.17671856, -0.05979646, -0.16296902, 0.08640285,
-0.16224067, 0.0757046 ,-0.01647714, -0.37885928, -0.01555312 , 0.03167096,
0.00679061, -0.22556081 , 0.01429062, -0.09085959, -0.01112399 ,0.13599339,
-0.185693, -0.20184593, 0.4052239, 0.14330223, 0.28691867, -0.19225007,
0.03594005, -0.01275204, 0.33906424, -0.00647204, -0.18885684, 0.07011633,
0.18608466, -0.44122595, 0.02809362, 0.0824572 },{ 0.17795797, -0.13517565, -0.10146568, -0.20960864, 0.11911963, 0.00203858,
-0.1634994 , 0.2662731 , 0.06002144, -0.1415157, -0.10613814, 0.15545808,
0.00358256, -0.32022983, -0.13525122, 0.07762264, -0.09560835, 0.03562045,
0.09312176, 0.15551898, 0.16240583, 0.07297499, 0.01379404, 0.28462878,
-0.01970416, 0.08576998, -0.19601713, -0.2521729, 0.10542589, -0.04447259,
-0.3429276 , 0.20246664, 0.11363815, -0.31796068, -0.3445424, -0.12585604,
0.06572082, 0.044105, -0.05437037, -0.13488702},{-2.37353951e-01, 1.18738174e-01, 8.69726911e-02, 8.66419598e-02,
1.22110117e-02, 2.19331965e-01, 1.19998090e-01, -1.07431374e-01,
1.45027444e-01, 1.49084747e-01, -2.50570402e-02, -1.26400054e-01,
2.74095684e-02, 1.84705764e-01, 1.32736713e-01, -9.95588154e-02,
3.01825125e-02, -1.82525311e-02, -2.04267502e-01, -1.77593529e-01,
-5.65895289e-02, -1.34258538e-01, 1.41428405e-04, -4.76143956e-01,
-4.40589376e-02, -5.34118488e-02, -1.97773892e-02, 2.38993943e-01,
8.65938812e-02, 8.66590664e-02, 4.53305393e-02, -3.28246981e-01,
-2.46511236e-01, 1.99567780e-01, 2.17823368e-02, -6.51699081e-02,
-1.69471025e-01, 1.74259916e-01, -5.29308431e-02, 1.08558416e-01},{0.04544047, 0.18745975, 0.15187883, 0.15328908, -0.1954233, -0.00925673,
0.09872236, -0.06762797, -0.26042283, 0.11024422, -0.03550024, -0.00721058,
-0.01009001, 0.2725304, -0.2576419 , 0.1906317, -0.08816396, -0.02835169,
-0.06945303, -0.1713143, -0.29865375, 0.15974638, -0.26216647, -0.464697,
-0.01797493, -0.00758415, 0.04264428, 0.14028956, -0.11789665, 0.18007329,
0.20453691, -0.11078788, -0.08518956, -0.05859375, 0.13593304, 0.07036259,
-0.14928944, 0.18761456, 0.02855369, 0.06888569},{-0.07214273, 0.30468383, -0.31188646, 0.13771057, 0.09689043, 0.15977642,
0.2949502, -0.06090799, -0.24817726, 0.15462922, -0.44186613, -0.03061769,
-0.02369448, -0.15815099, -0.09608351, -0.07112297, 0.20890273, -0.00602346,
0.06228247, -0.04643388, -0.06283049, -0.10681462, -0.08110433, -0.1806114,
0.10295656, -0.38736644, -0.6046955 , 0.08692984, -0.0839571, 0.0944739,
0.18453684, -0.16742569, -0.35900086, -0.10255502, -0.14587519, 0.13219728,
-0.15894093, -0.14673604, 0.05256502, 0.00334473},{ 0.22326754, -0.15873003, 0.1836396, -0.04905625, -0.34460953, -0.36022502,
0.07359383, 0.07047193, -0.26379526, 0.12412608, -0.06968199, 0.15452601,
-0.12183999, -0.01907275, -0.20552363, -0.05207895, -0.16544636, -0.22102709,
0.02077249, -0.22177926, -0.2869271 , 0.13670082, 0.25764385, -0.19575907,
0.18589756, 0.16307543, -0.02362325, -0.01424298, -0.12139662, -0.09884887,
0.16156355, 0.14112954, -0.03490299, -0.38660482, -0.02774114, 0.0548033,
0.0598113 , 0.07620791, 0.11086245, 0.1090616 },{ 2.6584728e-02, 5.0985597e-02, -2.1388358e-02 ,-3.5304888e-04,
-6.9853231e-02, -6.4480128e-03, 1.5847994e-01, -4.9649985e-05,
-8.2203448e-02, 1.3883586e-01, -2.2489265e-01, -3.1365950e-03,
-1.9657690e-02, 3.7733164e-02, -6.2506750e-02, -1.8153900e-01,
-4.3417484e-02, -6.0529005e-02, 8.6803868e-02, 1.6125550e-02,
-1.5588503e-01, 1.9878980e-02, 2.6197299e-01, -2.0967558e-01,
2.7540490e-01, -4.8650067e-02, 6.6881269e-02, 8.3056368e-02,
8.9742191e-02, -1.2569301e-01, -6.7443363e-02, -2.4446946e-02,
1.6027151e-02, 7.1911775e-02, -6.6902712e-02, 8.0075152e-02,
1.3557045e-01, -8.3827347e-02, -1.3755618e-01, 8.3639711e-02}};
PROGMEM const float perceive_kernel_bottom[15][40] = {{ -0.11899661, -0.14004979, 0.10243365, 0.1674852, 0.00160418, 0.02877276,
0.05471601, -0.04886432, -0.07675144, -0.13068359, -0.14109269, 0.02587849,
-0.02437816, -0.03700348, -0.1395682, 0.01150174, 0.07231826, -0.15228717,
-0.03353919, 0.00953492, 0.14691767, 0.03309 , 0.17149156, 0.04428164,
0.05066732, 0.1221908 , -0.06963129, -0.03257539, -0.12302379, -0.10267369,
0.065914, -0.07846653, 0.11834852, -0.12462414, -0.04742591, -0.02146628,
0.07130899, -0.03081444, -0.01450819, -0.10592127 },{0.06459607, -0.20364667, 0.04801347, 0.0819966, -0.1313116, -0.1598948,
0.00714804, 0.09994755, -0.09948853, 0.07484069, 0.1106636, 0.07974536,
-0.0896351, 0.07270038, -0.02195342, -0.10794995, -0.17765528, -0.02794054,
0.04788226, -0.2436511 , -0.02363226, -0.11727114, 0.0136033, -0.24777803,
-0.02919619, 0.01192229, 0.00117079, -0.16388945, -0.02326739, -0.2910366,
-0.07434229, -0.10253905, -0.02278535, -0.06116689, -0.04193034, 0.09387816,
0.01408338, 0.00581315, 0.01605251, 0.12344822},{ 0.07919539, -0.07898702 , 0.2479433, 0.1391834, -0.09935414, -0.1850231,
0.0047804, 0.01475162, -0.07432084, 0.06193923, -0.0559537, -0.09366196,
-0.12208955, 0.25913417, -0.01271899, -0.0958963 , -0.1494642 , -0.00452177,
0.1045249, -0.13565835, -0.05048031, -0.02916408, -0.03174751, -0.17385003,
0.07086316, 0.18763945, -0.00303287, -0.08966709, -0.05311425, -0.18041793,
-0.07464116, -0.00271961, 0.19165768, -0.01405687, -0.02381125, -0.04994979,
0.19677383, -0.00480243, 0.08916583, 0.00631286},{-0.03835653, -0.1221369 , 0.23479363 , 0.25367162, 0.00742201 ,-0.30842674,
0.10621063, 0.16567208, -0.04145775, -0.14772606, 0.09797522, -0.11296812,
-0.04847462, 0.23728 , -0.1600764, 0.14531419, -0.05520109, -0.11309297,
0.07851429, 0.02038792, 0.04248623, 0.15414317, 0.04224446, -0.19333246,
-0.11757393, -0.03472841, -0.11418404, 0.09242963, 0.03522392, -0.3110195,
-0.08810934, 0.07668535, 0.03702393 ,-0.10386184, 0.0305301, -0.05033367,
0.2224267, 0.1210587 , 0.08938288, -0.20922117},{ 0.21760002, 0.11889137 ,-0.21440628, -0.20246714, 0.10717501 , 0.42445832,
-0.01726486, -0.06987271, 0.08076204, 0.11042283, 0.04273796, -0.02102854,
0.2872973, -0.11025261, 0.27509692, -0.15762544, 0.22516543, 0.06115633,
-0.20189273, -0.03526734, 0.14869185, 0.05629087, -0.08706154, -0.11586494,
0.10250437, 0.01726339, 0.19496383, -0.07188033, 0.22813168, 0.22517808,
0.22071192, 0.01728086, -0.01095534, 0.15418303, 0.18197034, 0.20542894,
-0.14033289, -0.09328125, -0.16497329, 0.38510168},{-0.07044607, -0.00974139, -0.06952187, 0.03597564, 0.0444034, 0.03785525,
0.0684587, 0.14839454, -0.1120454, -0.0404815, 0.11883325, 0.0450827,
0.07397495, -0.23807885, -0.18405169, 0.14464608, 0.16487889, -0.37737623,
-0.04669128, 0.21477686, -0.03851745, 0.1189094, 0.21249011, -0.01178218,
-0.10422648, -0.05636866, -0.07549865, 0.12417139, -0.01611363, -0.2539029,
-0.07886738, 0.02761539, -0.12629648, 0.01649433, 0.06348787, -0.02257601,
0.02522822, 0.11110003, 0.1151674, -0.14457789},{-0.06313894, 0.16653548 ,-0.12062187, -0.2079985, 0.05464221, 0.15469995,
-0.14094272, 0.01460036, 0.15421984, 0.0404063, -0.39481273, 0.06251401,
0.16880423, -0.2187556 , -0.04481585, 0.09440321, 0.16572146, 0.19931726,
-0.106876, 0.06636678, -0.13115546, -0.05059726, 0.01937526, 0.27713728,
-0.01380473, -0.09094556, 0.20185839, -0.15248038, -0.30112505, 0.189113,
-0.12181295, 0.06846081, -0.2853824, -0.1546087 , -0.02929435, 0.13881794,
-0.07084302, -0.01013985, -0.07603613, -0.01821609},{ 0.05487731, -0.08168122, -0.05761194, 0.09135631 , 0.39650166, -0.2596566,
-0.03012482, 0.1864757 , -0.06248478, 0.03213387, 0.22764653, -0.02320307,
0.03393656, 0.21080083, 0.07039826, -0.23329513, 0.02312402, -0.09624904,
0.11471885, -0.08745032, -0.07148963, 0.22572108, -0.16803718, -0.49621,
-0.21341825, 0.04156823, -0.10583583, 0.10863703, 0.15773274, -0.27917576,
0.08217309, -0.05927555, -0.12005899, 0.17337666, 0.12740123, 0.12804657,
0.02761127, 0.14420632, 0.07952712, 0.10281737},{-0.03969494, -0.26603106, 0.19774768, 0.02843467, -0.0364861, 0.2326051,
0.13328849, 0.06705398, -0.04120715, 0.05939846, -0.0907786, -0.09857582,
-0.2274688, 0.19931793, 0.18934838, -0.33613253, -0.2321539, 0.23467702,
-0.2557658, -0.20332158, 0.0898108 , -0.65632665, -0.18585677, 0.00926931,
0.02740589, 0.02763325, 0.19301364, 0.15481724, -0.00637995, -0.10824817,
-0.01111829, 0.06368581, 0.04842257, -0.14173803, -0.24056977, -0.28688306,
0.03521711, -0.1893507 , -0.21118802, 0.01824506},{-0.0688244, -0.03719986, -0.33091536, -0.32282647, 0.02440726, -0.00961099,
-0.15121672, -0.18241324, 0.04991334, 0.07661391, -0.08518145, -0.20102441,
-0.057546, -0.44660714, -0.10200658, 0.18123835, -0.12864679, 0.00320026,
0.07918122, 0.10816828, -0.08709896, -0.18573152, 0.07024418, 0.18723705,
-0.00233419, -0.07198349, -0.00550154, -0.19768807, -0.2628054, -0.01623207,
0.06742962, -0.14469375, 0.03922147, -0.04715766, -0.06967956, -0.32560664,
-0.12366958, 0.04915833, 0.08437176, 0.07027738},{ 0.13331603, 0.00311469 , 0.02383298, 0.02641081, 0.14368337, 0.08378634,
0.04776642, 0.03647172, 0.02921345, -0.06169769, 0.1961875, -0.01634187,
0.17513101, 0.2583226 , 0.13046375, -0.15982458, -0.10849264, -0.4203371,
-0.02102615, 0.00434829, 0.07092291, 0.12566254, -0.16414091, -0.52784014,
0.09874095, 0.10202686, 0.06879119, 0.0727539, 0.1446717, -0.17770973,
0.17704839, -0.01596773, 0.04638727, 0.11695781, 0.05145612, -0.00716174,
-0.13178301, 0.02517601, -0.05265478, 0.02505656},{-0.12972683, -0.16508032, 0.13021262, 0.15640557 , 0.20994174, -0.4254074,
0.11138851, 0.19513217, -0.1390005, 0.06612121, 0.0254818, 0.13682573,
-0.10813171, 0.14331955, -0.16218339, 0.14179857, -0.10629939, -0.24473086,
-0.27099377, -0.06516909, -0.02546648, 0.16028783, 0.03171442, -0.5002101,
-0.21026982, -0.11501171, -0.01316166, -0.02634585, -0.08093804, -0.5485532,
-0.29446262, -0.03205343, 0.06429159, -0.03103429, 0.0686344, 0.14991063,
-0.10451609, 0.08129076, 0.1532943, -0.05041391},{ 0.02612685, 0.01257497 ,-0.49703118, -0.26600823, 0.06240285, 0.15548138,
-0.11209949, 0.01386672, -0.08629683, -0.00629003, 0.02721566, 0.15868674,
0.23927984, -0.15084344, 0.06763835, 0.17904814, 0.16746385, -0.00755489,
0.20198162, 0.10063343, 0.06321566, -0.09948817, 0.08533656, 0.11182044,
0.1462944 , 0.01518504, 0.18024237, -0.2086812 , -0.0430853, 0.11676519,
0.13624696, 0.09530613, -0.03677225, -0.05978028, 0.22642432, 0.19693185,
-0.2400995 , -0.06676855, -0.2328975, 0.25823343},{ 0.00641344, -0.16417561, 0.10755763, 0.14856249 ,-0.18023936, -0.4991346,
-0.00311522, 0.17265703, -0.21904287, 0.09825344, -0.00195883, 0.08616323,
-0.2560777 , 0.09896489, -0.27298698, -0.0440756, -0.41054553, 0.00786501,
0.08964285, -0.16002719, -0.00266487, -0.0816239, 0.01230158, -0.15381251,
0.0381346 , -0.08224104, -0.14634971, 0.04536084, -0.21692516, -0.41577214,
-0.17810619, 0.04715713, 0.03409323, -0.36222437, 0.03337841, 0.08365318,
0.12669346, 0.06610363, 0.10053495, -0.03335744},{-0.00681129, -0.23517859, 0.09348891, 0.05684435, -0.12759918, -0.03577486,
0.09656718, 0.20037475, -0.04318817, -0.04557794, 0.04804259, -0.05589677,
0.06231381, 0.32524213, -0.00744012, -0.13998441, -0.1114466, -0.25290838,
0.00363137, -0.04099021, 0.12717468, -0.32512516, 0.0207737, -0.17098913,
0.17627642, 0.03402167, 0.11935946, 0.00135519, 0.09192175, -0.3832165,
0.12097389, -0.08621008, 0.07419971, 0.07803375, 0.08438629, -0.1390119,
0.271763 , -0.03103935, -0.10357388, 0.10281125 }};
PROGMEM const float perceive_kernel_left[15][40] = {{-0.09232815, -0.1271057 , 0.02601121, -0.12609814, 0.03053035, -0.00446408,
0.0584521, 0.08527375, 0.02360988, -0.11715934, -0.11013688, 0.05243974,
-0.07098105, -0.07671334, -0.10305943, -0.10445411, -0.02755104, 0.06800041,
-0.11347696, -0.08847763, -0.14667052, -0.16512957, -0.16319291, -0.10624515,
0.02650111, 0.07263578, -0.10500602, 0.06489004, 0.10899353, -0.31348476,
0.10736105, -0.05716266, 0.18617107, 0.0445926, 0.12075626, 0.02211321,
0.06932338, -0.00397468, 0.10258955, -0.09206723},{ 0.01504828, -0.12060396, -0.02327835, -0.16907828, 0.10383727, -0.20527701,
0.00677566, 0.06336713, -0.04259264, 0.00324497, -0.11169073, 0.03263847,
-0.14202134, 0.03910334, -0.01931839, -0.06925534, -0.08101257, -0.14315456,
0.12447072, -0.11477832, -0.01366254, -0.2114938 , -0.08081138, -0.04855324,
0.08355465, -0.00377625, -0.17406979, 0.08797855, 0.07427467, -0.17739595,
-0.14583682, 0.01308383, -0.09608924, -0.19192027, 0.01408746, -0.00616533,
-0.02299072, 0.10391565, 0.02930104, -0.0196279},{ 0.05541787, -0.00483215, 0.12380378, -0.02755844, -0.03459799, -0.07434744,
0.09087737, 0.20058857, 0.1723028, -0.03752904, -0.21560697, 0.03910508,
-0.01225366, -0.11470574, 0.06545258, -0.13184641, -0.03090372, -0.34598404,
0.16010696, 0.13087945, 0.1846456 , -0.21096352, -0.01775959, -0.1408055,
0.19942284, 0.22955576, -0.18855248, 0.03283105, 0.18555126, 0.03819391,
-0.06762734, 0.03737705, -0.41253677, -0.06200077, 0.01099905, 0.12436562,
0.01285126, 0.14804424, 0.12734812, -0.02803038},{ 0.05208793, 0.24233656, 0.12703249, 0.01565079, -0.08480284, 0.03076857,
0.18836533, 0.25570682, 0.20002407, 0.01985984, -0.33587703, 0.1551829,
-0.21094358, -0.03328202, -0.02365628, -0.06832776, -0.17639622, -0.17863443,
0.15315169, 0.00877573, 0.13917531, -0.23799637, 0.03930097, -0.07155567,
-0.07595242, 0.4023217 , -0.3141295 , 0.1857741 , 0.3187245 , 0.23233335,
-0.1677002, 0.05908787, -0.4185815 , -0.05352974, -0.0747619 , 0.04443683,
-0.11859059, 0.35484532, 0.16704467, -0.02343902},{-0.02895774, -0.12050357, -0.15402664, -0.01768211, 0.11970675, 0.07953086,
-0.14820847, -0.23610361, -0.12376936, -0.06673481, 0.29093114, -0.16339114,
0.10591198, 0.15752509, -0.03799952, -0.07046226, 0.12768833, 0.17206477,
-0.08245447, -0.03126777, -0.05388439, 0.2558232, -0.03500375, -0.04664701,
-0.03614902, -0.2507091 , 0.20893861, -0.07404243, -0.21989498, -0.11844192,
0.15554462, -0.16655591, 0.4857019 , 0.03675295, 0.08995741, -0.05596323,
-0.00252075, -0.24315725, -0.04494895, 0.06870315},{2.46353149e-02, -2.02214736e-02, -6.84975684e-02, 5.25455922e-02,
-7.73428082e-02, 9.29125696e-02, 3.66532952e-02, 2.88012952e-01,
-1.11449562e-01, -2.17719916e-02, -5.93765937e-02, 2.90553719e-01,
-2.34355181e-01, -9.56231579e-02, -2.68765748e-01, 6.05603568e-02,
1.98517054e-01, 8.18016306e-02, -2.20979869e-01, 6.71807304e-02,
-5.09603731e-02, -4.76698905e-01, -2.39513785e-01, 1.10816516e-01,
-1.80270419e-01, -1.32841870e-01, -2.39761829e-01, 2.67522354e-02,
-1.92588400e-02, -2.61409014e-01, 1.67555630e-01, 1.08893856e-01,
-2.26423666e-01, 1.85937213e-04, 2.62168776e-02, 1.02321506e-01,
5.99432644e-03, 1.34635448e-01, -2.23840978e-02, -4.17828262e-02},{ 0.19188656, -0.09405407, 0.15398349, -0.07525326, -0.3887956, 0.13966942,
-0.06128686, -0.341562 , -0.18686767, 0.08506155, -0.01679435, -0.0302624,
0.5580696, -0.09034414, -0.04674308, -0.11329643, 0.5686783 , -0.1146044,
0.12753902, -0.15763609, -0.155607 , -0.06507269, -0.02510907, -0.21744907,
0.15824883, -0.02365575, 0.06234455, -0.2620068 , -0.22424822, 0.02286011,
0.3529359, -0.1192421 , 0.21827821, -0.07811381, 0.13495187, -0.00101205,
0.13134888, -0.23854282, -0.1440514 , -0.13669688},{-0.05012556, -0.12260953, 0.09273888, -0.02131903, 0.19380978, -0.04089141,
-0.02126576, 0.03854211, -0.20541821, -0.16822222, 0.10663823, -0.00686405,
-0.13529001, 0.03155031, -0.1413681 , -0.04514534, -0.12360393, 0.05214411,
0.1778445 , 0.12098222, -0.04527831, -0.15711662, 0.13530204, -0.36595923,
-0.04320239, -0.01809026, 0.03882397, 0.15047842, 0.0427528 , -0.18486425,
0.04730129, -0.1216599 , 0.0688577 , 0.15800576, -0.01080212, 0.13888006,
-0.09193458, 0.05021715, -0.02071646, -0.00071236},{-0.1290628, -0.24119489, -0.09224991, -0.01544287, 0.18392068, 0.01141993,
-0.18043965, -0.0768343 , -0.069957 , 0.01989813, 0.14396423, -0.15818033,
-0.10058849, 0.09989339, 0.10274196, 0.00746023, -0.04451582, 0.11956184,
-0.03936407, -0.1181529 , -0.2774089 , 0.16591881, -0.11314173, 0.19061564,
-0.07296404, -0.35866293, 0.27299678, -0.00216178, -0.44837016, -0.1129045,
-0.04412189, 0.07338745, 0.19916801, -0.09169561, 0.02637539, -0.15782697,
-0.02955489, -0.43528885, -0.15379347, 0.2316144 },{ 0.14559081, -0.19214356, -0.2605305, 0.05688481, 0.10473891, -0.19373818,
-0.21875066, -0.02908398, 0.05497507, -0.11031628, -0.00535602, 0.01602102,
-0.13987365, -0.08430288, -0.05108355, 0.13798761, -0.0715077 , 0.02557242,
0.14500788, 0.04072802, -0.16638544, -0.12500732, -0.4298377 , 0.02626837,
0.02789409, -0.09388363, -0.23409578, -0.30041665, 0.11747529, -0.03547746,
-0.07067882, 0.33094394, 0.0438555 , 0.0255664 , -0.0609487 , -0.0671363,
0.01651239, 0.01709754, -0.05574645, -0.12882257},{ 0.00118769, -0.01142519, 0.0636655, -0.07539101, 0.00459477, -0.00854829,
0.04733549, -0.05862943, 0.03154355, -0.2914291 , 0.06410548, 0.04379697,
-0.01892236, 0.07126785, -0.14672007, 0.07241938, -0.00383305, 0.17873254,
-0.04853623, 0.0464238, 0.05971277, 0.06211872, 0.08280407, -0.33288804,
0.07709653, -0.04947509, 0.03438227, 0.16596982, 0.04231581, -0.25947535,
0.12872072, -0.05925867, 0.07415707, 0.02414886, 0.10234932, -0.11942326,
0.00255517, 0.11466963, -0.00978922, 0.10318256},{ 0.15036312, 0.1506193, -0.03420667, -0.18446192, 0.20788287 ,-0.12312438,
0.19303186, 0.19822268, 0.05207082, 0.07429243, -0.24501298, 0.1262358,
-0.34553212, 0.06758077, 0.0016909 , -0.06173737, -0.19020109, -0.39542988,
0.26547286, -0.03413681, -0.06214196, -0.42506036, 0.08502582, -0.32017508,
0.06734933, 0.11072056, -0.18375458, 0.16149944, 0.30184358, -0.0484663,
-0.17640984, -0.15086646, -0.27153558, -0.16895472, -0.04985411, 0.01342257,
-0.05194421, 0.26097897, 0.06913627, -0.03558195},{ 0.0891756, -0.1852731 , 0.49087998, -0.09374148, -0.13254611, 0.19685385,
0.03096733, 0.01738663, -0.19502173, -0.18182336, -0.0697008 , 0.05918725,
0.33351088, -0.01716665, 0.00477395, -0.00122865, 0.32933122, -0.01410446,
0.09233724, -0.07226945, -0.19783705, -0.274026 , -0.09032966, 0.2894773,
0.13765028, -0.23267832, -0.18967527, -0.3672694 , -0.31798118, -0.17197014,
0.35897908, -0.25889122, 0.2276529 , -0.09098708, 0.08078881, 0.04467423,
0.04940129, -0.02185448, -0.1981943 , -0.21498832},{ 0.1815499, 0.06568013, 0.16488916, 0.00524628, -0.08498794, -0.11488584,
0.00674805, 0.16918604, 0.05981374, 0.09020574 ,-0.28792685, 0.2465193,
-0.13411711, -0.16025497, 0.14814824, -0.16495103 ,-0.01400596, -0.02618743,
0.06089072, 0.0170811, 0.00076231, -0.50095946 ,-0.08738038, -0.07577728,
0.04735078, 0.14136575, -0.25605744, 0.25800455 , 0.2786508 , -0.16666186,
-0.01989716, -0.00719829, -0.31883702, -0.08394957 , 0.03661565, 0.0015969,
0.09680743, 0.19532707, -0.01374915, 0.02415035},{-0.04936542, -0.15579242, 0.01605786 ,-0.08911525, -0.05213085, -0.06070149,
-0.02666656, -0.00789785, 0.06733745, -0.00232041, -0.08655962, 0.07909241,
0.11814926, 0.0377829, -0.06437718, -0.17760989, 0.07126205, -0.05160382,
-0.01805294, 0.05787488, -0.06541685, -0.14701258, -0.16452605, -0.1080967,
0.18092558, -0.21543579, 0.04887566, 0.08872545, -0.07506228, -0.169477,
0.10785557, -0.00508653, -0.1060776 , -0.01802001, 0.11761112, -0.08194532,
0.14527129, -0.08831184, -0.03849689, -0.02012374}};
PROGMEM const float perceive_kernel_right[15][40] = {{ 0.07294947, -0.15640315, 0.12708052, 0.20147315, 0.05561217, 0.17506972,
0.1063878 , 0.13003878, -0.05871702, -0.12701169, 0.08635787, 0.07773468,
-0.00910933, 0.08118835, 0.07160105, 0.07035095, 0.0277718 , 0.08656744,
-0.03942413, -0.09911516, -0.24795593, 0.11897482, -0.01472264, -0.09059028,
0.14606191, 0.02257442, 0.07050003, 0.04365536, -0.04922105, -0.14805225,
-0.06979303, -0.00261962, -0.08869542, 0.10319077, 0.0387532 , -0.05910334,
0.09006815, 0.00566537, 0.15816869, -0.1035769 },{ 0.03188957, -0.01367198, 0.05018536 ,-0.06611344 ,-0.1200139, 0.08820332,
0.07981379, 0.12170698, -0.0872358 , 0.01616696, -0.03334301 , 0.09647954,
-0.06778634, 0.06253222, -0.08871777, 0.07686429, -0.05078744 ,-0.08391615,
0.08825569, -0.02577258, -0.17565604, -0.1217551 , 0.03024572 , 0.09153865,
0.08939539, -0.14793289, -0.00666101, 0.12102836, -0.00456411 ,-0.22374211,
-0.16125679, -0.07168684, -0.0324733 , -0.05566523, -0.04963261, 0.03096734,
-0.06856367, 0.03865686, -0.05573539, 0.02051001},{ 0.1647472, 0.01791939, 0.16051936, 0.00479218, -0.22637331, 0.29633892,
-0.03573378, 0.24081221, 0.06272209, 0.01626907, -0.0754931 , 0.00781179,
0.08766454, 0.07869364, -0.08106288, 0.06958608, -0.20416085, 0.1607324,
0.07729574, 0.08005463, 0.23951007, 0.03127991, 0.12435155, 0.2871425,
0.12552793, 0.17056526, 0.05741711, 0.13531093 ,-0.06413396, -0.1370511,
-0.04580525, 0.12461082, 0.12917358, 0.0223173 , -0.07805633, -0.13422419,
0.23962182, -0.03100329, 0.06227491, -0.04793712},{ 0.08701786, -0.04531435, 0.07396585, 0.09509664, -0.1931173, 0.11071407,
-0.04281036, -0.01663561, -0.06297227, 0.10083291, -0.08611312, -0.01667286,
0.11403435, 0.09572607, 0.02141215, 0.0804963 , 0.04942896, 0.06337448,
-0.02078283, -0.04734666, 0.10959758, 0.07109976, -0.03152661, -0.01665937,
0.02075408, 0.07496646, 0.0159526 , -0.00391804, -0.12507696, -0.2535405,
0.03313112, 0.04822221, 0.08657745, -0.02014744, -0.07716848, -0.03762211,
-0.06645837, -0.06291112, -0.07398473, -0.09174118},{-0.08398288, 0.03310548, -0.3476742, 0.1935302, 0.12323941, -0.2540061,
-0.0641916 , -0.2574734 , 0.00148048, -0.07598732, -0.0186166, -0.0383526,
0.00629603, -0.09478897, 0.0565311 , 0.04204875, 0.00055321, -0.15026107,
-0.06232706, -0.15510935, -0.13393283, -0.07483771, -0.10724116, -0.31313053,
0.04656767, 0.01098238, -0.05660385, 0.04613499, 0.10504691, 0.14216661,
0.01176162, -0.39010704, -0.11877529, 0.05259358, 0.20102517, 0.1238347,
-0.29045138, 0.08548521, -0.02361159, 0.1332828 },{-0.02086668, 0.04079339, -0.14425635, 0.06102316, 0.00909471, 0.01892147,
0.06091843, -0.05033913, -0.06636547, 0.07780017, 0.09152219, 0.1695522,
0.07378402, -0.1767434 , -0.04564866, 0.14137332, 0.33141738, 0.2406069,
-0.214726 , -0.06843213, -0.15836531, 0.02413553, -0.0309652 , 0.17668644,
-0.27558714, -0.27175003, -0.06636575, 0.02691443, -0.02742183, 0.04340692,
0.02402309, 0.13738354, -0.05165473, -0.01236286, 0.05414993, 0.15198006,
0.08694316, 0.10003184, -0.01784931, 0.00301484},{-0.3346543, -0.05498597, -0.21868509, 0.12532078, -0.00441506, -0.35610068,
-0.11162674, 0.06307363, 0.01040565, 0.06865338, -0.07959703, -0.09258737,
-0.15541133, 0.08733852, -0.0572302 , -0.15729372, 0.11655408, -0.34292004,
0.10985468, -0.12865789, -0.02673944, 0.02029766, -0.05850121, -0.06660234,
-0.04533752, -0.2952954 , -0.12773986, -0.16211353, 0.10063004, 0.18585762,
-0.1583554, -0.02862832, -0.12652083, 0.12303314, 0.03969569, 0.03268962,
-0.07252277, 0.14288577, 0.11322077, -0.03247084},{-2.19068974e-01, 7.86270201e-02, -5.58560267e-02, 1.33930609e-01,
8.72911364e-02, -1.97514743e-01, 5.21338284e-02, -3.92782362e-03,
-1.23550259e-01, -1.91441491e-01, 1.57187283e-01, 6.91574141e-02,
-8.19425285e-03, -7.54122362e-02, 7.47814924e-02, -1.05354309e-01,
5.85008003e-02, -2.06921138e-02, 1.16634876e-01, 1.45641342e-01,
4.90981787e-02, -1.42001063e-01, -1.03379712e-01, -4.27185863e-01,
-8.74186605e-02, 7.48793706e-02, 4.80467938e-02, 2.68764019e-01,
9.94524807e-02, -1.44564137e-01, -8.80707667e-05, -2.07506478e-01,
4.63154837e-02, 1.62717015e-01, 1.48750553e-02, 1.77118495e-01,
-2.57419676e-01, 1.28247991e-01, -5.07077351e-02, 1.02662481e-01},{ 0.22980936, 0.01254461, 0.11897074, -0.2784774, 0.21760024, 0.14985217,
0.12086166, -0.02899381, 0.06640242, -0.08094917, -0.01585598, 0.06773814,
-0.0815304 , 0.02957524, -0.23909871, -0.00864061, -0.18552478, 0.1289381,
0.18006372, 0.01547465, -0.01662446, -0.00232216, -0.08898187, 0.13297857,
0.07366859, -0.03689714, 0.13560088, -0.09100754, -0.22210716, 0.15120132,
0.09370966, -0.00666225, 0.14301461, -0.23894314, -0.18844122, -0.330627,
0.32997498, -0.37193272, 0.3012349 , 0.13519365},{-0.09252571, 0.1448696 , 0.18869866, -0.09447139, 0.04890463, 0.02176507,
0.04519484, 0.07816125, 0.06906556, -0.1092894 , -0.09025653, 0.01961349,
0.04864154, 0.1351022, -0.08193173, 0.01202158, -0.01098934, -0.04101986,
0.11717123, 0.13551627, 0.01916383, -0.15967314, -0.11965801, 0.3664549,
0.10349819, -0.10199562, 0.00887811, -0.3419682 , -0.36014107, -0.14249207,
-0.09356008, 0.23572186, 0.01595067, -0.15193485, -0.23072836, -0.47323608,
0.17352508, -0.00141454, -0.09002352, -0.08612879},{-0.00410069, 0.02154852, -0.1921637, 0.17577283, -0.071499, -0.03120785,
-0.02555114, 0.02047528, 0.15366621, -0.12230488 , 0.03796179, -0.00714361,
0.15654707, -0.14903605, 0.11681709, -0.0274895 , -0.01785739, 0.14953934,
-0.16610494, -0.01965623, -0.15618284, -0.09277959, -0.0250789, -0.46068922,
0.09653205, 0.02316637, -0.09931919, 0.30331662, 0.03813523, 0.10559087,
0.06957372, -0.22547019, 0.09645804, 0.11052784, 0.0106749, 0.1682816,
-0.20907491, 0.1629358, -0.08199477, -0.00707122},{-0.22529142, -0.17675735, -0.13521108, 0.13481188 , 0.14219518 ,-0.2524466,
0.06476028, -0.1758546, -0.07314191, 0.15794832, 0.11981338, -0.04269917,
-0.05197347, 0.06619063, 0.13134065, 0.10465577, 0.06763769, -0.36478195,
0.00244569, -0.00862853, -0.21041691, -0.05271046, -0.16911873, -0.12828432,
-0.0189269 , -0.00140155, -0.05307605, -0.11831795, -0.07991687, -0.5187018,
-0.25463292, -0.20798914, 0.01603528, -0.04514948, -0.00385929, 0.02811186,
-0.21466762, 0.16942573, -0.03718716, 0.11142423},{ 0.0117106, -0.17084774, -0.52610177 , 0.22898202, -0.03921814, -0.26917273,
0.17948094, -0.09379225, -0.10705167, 0.08878434, -0.03916641, -0.12066913,
0.0227454 , -0.02529898, 0.15168205, 0.01466456, 0.15934539, -0.5583699,
-0.01077132, -0.24099065, -0.32097492, -0.00428822, -0.08128194, -0.2247053,
-0.07651522, -0.2132517 , -0.15487768, 0.0315562, 0.06629816, 0.01523227,
0.01779654, -0.547947 , -0.21427003, -0.0651072, 0.3174792 , 0.2686155,
-0.28682765, 0.22666821, -0.20175116, 0.08589835},{ 1.4790490e-01, -3.6632884e-02, 2.1062164e-01, -1.2137215e-01,
-4.3425959e-01, 2.4513091e-01, 9.6523881e-02, 2.5539941e-01,
-9.6330695e-02, -9.3429029e-02, -9.7555563e-02, 8.4387816e-02,
-2.6464682e-02, 1.6619915e-02, -8.2143426e-02, 8.7791622e-02,
-1.0060186e-01, 8.2141355e-02, 2.2906248e-01, -2.9562943e-06,
-1.0505758e-01, -7.3348440e-02, 8.5749559e-02, 1.5326791e-01,
-4.0971018e-02, -7.9459928e-02, 1.1879800e-01, 1.4789777e-01,
-1.8831922e-01, 8.5829459e-02, -1.1586906e-02, 1.2043891e-01,
2.7148625e-02, -1.2474076e-02, -9.7030453e-02, 1.1764790e-01,
1.2843992e-01, 3.1408723e-02, -6.6543534e-02, -3.8808998e-02},{ 0.31676167, 0.04734311, -0.04117204, -0.03236438, -0.1652316, 0.26388615,
0.14163053, 0.28787625, -0.08889721, -0.07310117, -0.11981936, 0.07330483,
0.1815828 , -0.04040264, -0.17567872, 0.13461456, -0.00199725, 0.17962895,
0.11096788, 0.08352342, 0.11901145, -0.13548183, -0.00122446, 0.08934294,
0.12820037, -0.06561123, -0.03481902, 0.27903822, -0.04861993, 0.09475674,
-0.11314277, 0.05898982, -0.00731682, 0.07329187, 0.02501443, -0.4707022,
0.27610326, -0.05646471, 0.01901012, -0.07691216}};
PROGMEM const float dmodel_bias_1[40] = {-0.0010746567,0.024285413,0.031801973,0.009014151,0.063084364,0.05269001,0.0034946036,0.024651857,-0.01832779,-0.027496472,0.0038995072,-0.0049361414,-0.0039025752,0.00017114611,0.014918175,0.00023670198,0.077505626,-0.024134863,0.046099823,0.08965501,-0.029326087,-0.024776006,0.013381814,0.0044070734,0.060039703,-0.04467007,0.005474059,0.05772726,-0.011100539,-0.01332115,0.017239654,0.047609802,0.05851343,0.09509844,0.036784247,-0.026534252,-0.019113211,0.02274208,0.003912732,-0.0057317107};
PROGMEM const float dmodel_bias_2[15] = {0.02183328,-0.044273492,-0.012110343,-0.004307126,0.0030345086,0.010601306,0.0007391676,-0.008779281,0.020210965,0.011785629,0.0064377924,-0.012795383,0.011844801,-0.017908162,0.024666786};
PROGMEM const float perceive_bias[40] = {0.030537171,0.04179521,-0.034147393,-0.012620558,0.0041902284,0.030705025,0.028250286,-0.0025205151,0.017727124,0.01005783,0.041590728,-0.0114766965,0.03215437,0.038724948,0.05805855,-0.0074059837,-0.0053902194,0.01935422,-0.08663503,0.039916087,0.0437605,0.05126975,0.029452205,0.050751057,-0.0012684441,-0.015251998,0.047365025,0.0081449,0.02040422,0.012763868,-0.028508976,0.0230172,-0.023475986,0.03449037,0.051923096,-0.011913723,-0.0069342074,0.024313584,-0.0033058159,0.05360153};
void setup() {
Serial.begin(9600);
Serial1.begin(57600); //Left neighbour
Serial2.begin(57600);// right neighbour
Serial3.begin(57600); // top neighbour
Serial4.begin(57600); // bottom neighbour
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(3, OUTPUT);
pinMode(A8, OUTPUT);
pinMode(A9, OUTPUT);
pinMode(A10, OUTPUT);
pinMode(A11, OUTPUT);
pinMode(19, INPUT_PULLUP);
pinMode(17, INPUT_PULLUP);
pinMode(15, INPUT_PULLUP);
pinMode(68, INPUT_PULLUP);
byte numDigits = 1;
byte digitPins[] = {};
byte segmentPins[] = {7, 6, 5, 13, 12, 9, 8, 4};
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_CATHODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
sevseg.setBrightness(90);
randomSeed(analogRead(23));
}
void loop() {
delay(random(500));
while(update_num<13){
send_message();
receieve_message();
update_message();
}
}
void send_message()
{
////////////////// send message!!!! //////////////////////////////////
if(message_process_completed == 0){ //only send one message at a time - wait for the neural network to update
//before sending another one
message_process_completed = 1; //reset trigger
// send header... at the moment its randomly 25 but we can change later if required
int header = 245;
Serial1.write(header);
Serial2.write(header);
Serial3.write(header);
Serial4.write(header);
int check_num = 0;
for (int k = 0; k < amount_of_cell_info; k++){
// send the current cell state to each of its neighbours
// convert into sendable format (i.e. cell_state of -2 --> 0 cells state of +2 --> 255)
if(cell_state[k]>1.27){cell_state[k] =1.27;}
if(cell_state[k]<-1.27){cell_state[k] =-1.27;}
int x = cell_state[k]*scale_factor + offset;
check_num = check_num + x;
Serial1.write(x);
Serial2.write(x);
Serial3.write(x);
Serial4.write(x);
}
check_num = check_num/amount_of_cell_info;
Serial1.write(check_num);
Serial2.write(check_num);
Serial3.write(check_num);
Serial4.write(check_num);
// set message sent trigger - actually this might be obsolete now ...
message_sent = 1;}
}
void receieve_message()
{
top_read = receive_neighbour_123(Serial2, ReadFromTopMessage, top_read);
right_read = receive_neighbour_123(Serial1, ReadFromRightMessage, right_read);
left_read = receive_neighbour_123(Serial3, ReadFromLeftMessage, left_read);
bottom_read = receive_neighbour_4(Serial4, ReadFromBottomMessage, bottom_read);
}
int receive_neighbour_123(HardwareSerial& neighbour_serial, float* message, int flag)
{
if(flag>14){
if(flag==15){
if(neighbour_serial.available()>0){
int temp = (neighbour_serial.read());
float recieved_sum = ((float(temp)-float(offset))/float(scale_factor));
float check_sum = 0;
for(int k=0;k<15;k++){
check_sum = check_sum + message[k];
}
float diff = abs(check_sum/float(15) - recieved_sum);
flag = flag +1;
}
}
return flag;
}
if(flag<0){
if(neighbour_serial.available()>0){
int value = (neighbour_serial.read());
if(value == 245){
flag = 0;
}
}
}
else{
while(neighbour_serial.available()>0 and flag<15){
int temp = (neighbour_serial.read());
message[flag] = (float(temp)-float(offset))/float(scale_factor);
flag = flag +1;
}
}
return flag;
}
int receive_neighbour_4(SoftwareSerial& neighbour_serial, float* message, int flag)
{
if(flag>14){
if(flag==15){
if(neighbour_serial.available()>0){
int temp = (neighbour_serial.read());
float recieved_sum = (float(temp)-float(offset))/float(scale_factor);
float check_sum = 0;
for(int k=0;k<15;k++){
check_sum = check_sum + message[k];
}
flag = flag +1;
float diff = abs(check_sum/float(15) - recieved_sum);
}
}
return flag;
}
if(flag<0){
if(neighbour_serial.available()>0){
int value = (neighbour_serial.read());
if(value == 245){
flag = 0;
}
}
}
else{
while(neighbour_serial.available()>0 and flag<15){
int temp = (neighbour_serial.read());
message[flag] = (float(temp)-float(offset))/float(scale_factor);
flag = flag +1;
}
}
return flag;
}
void update_message()
{
////////////////////////// Update message ///////////////////////////////////////////
now = millis();
check = now - prev;
int top_message = 0;
int bottom_message = 0;
int left_message = 0;
int right_message = 0;
if(top_read < 15){top_message = 1;}
if(bottom_read < 15){bottom_message = 1;}
if(left_read < 15){left_message = 1;}
if(right_read < 15){right_message = 1;}
int messages_recieved = top_message + right_message + left_message + bottom_message;
if(check>math_trigger){
int random_num = random(10);
Serial.println(random_num);
prev = now;
if(random_num>-1){
Serial.println("check");
Serial.println(check);
Serial.println("prev");
Serial.println(prev);
// update the cell state part...
float sumA1[neural_network_parameter] = {0};
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
for(int i = 0 ; i < amount_of_cell_info ; i++ ) {
int k = i*neural_network_parameter + j;
sumA1[j] += (pgm_read_float_near(&perceive_kernel_self[0][0] + k) * cell_state[i]); }}
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
for(int i = 0 ; i < amount_of_cell_info ; i++ ) {
int k = i*neural_network_parameter + j;
sumA1[j] += (pgm_read_float_near(&perceive_kernel_top[0][0] + k) * ReadFromTopMessage[i]) ; }}
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
for(int i = 0 ; i < amount_of_cell_info ; i++ ) {
int k = i*neural_network_parameter + j;
sumA1[j] += (pgm_read_float_near(&perceive_kernel_bottom[0][0] + k) * ReadFromBottomMessage[i]) ; }}
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
for(int i = 0 ; i < amount_of_cell_info ; i++ ) {
int k = i*neural_network_parameter + j;
sumA1[j] += (pgm_read_float_near(&perceive_kernel_right[0][0] + k) * ReadFromRightMessage[i]) ; }}
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
for(int i = 0 ; i < amount_of_cell_info ; i++ ) {
int k = i*neural_network_parameter + j;
sumA1[j] += (pgm_read_float_near(&perceive_kernel_left[0][0] + k) * ReadFromLeftMessage[i]) ; }}
for(int j = 0 ; j < neural_network_parameter ; j++ ) {sumA1[j] += (pgm_read_float_near(&perceive_bias[0] + j));}
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
if(sumA1[j]<0){
sumA1[j]=0;
}
}
float sumB[neural_network_parameter] = {0};
for(int j = 0 ; j < neural_network_parameter ; j++ ) {
for(int i = 0 ; i < neural_network_parameter; i++ ) {
int k = i*neural_network_parameter +j;
sumB[j] += sumA1[i] *(pgm_read_float_near(&dmodel_kernel_1[0][0] + k));
}
}
for(int j = 0 ; j < neural_network_parameter; j++ ) {
sumB[j] += (pgm_read_float_near(&dmodel_bias_1[0] + j));
if(sumB[j]<0){
sumB[j] = 0;
}
}
float sumC[amount_of_cell_info] = {0};
for(int j = 0 ; j< amount_of_cell_info ; j++ ) {
for(int i = 0 ; i < neural_network_parameter; i++ ) {
int k = i*amount_of_cell_info +j;
sumC[j] += sumB[i] *(pgm_read_float_near(&dmodel_kernel_2[0][0] + k));
}
}
for(int j = 0 ; j < amount_of_cell_info ; j++ ) {
sumC[j] += (pgm_read_float_near(&dmodel_bias_2[0] + j));
}
Serial.print("W");
Serial.print(",");
for(int j = 0 ; j < amount_of_cell_info ; j++ ) {
Serial.print(ReadFromRightMessage[j]);
Serial.print(",");
}
Serial.println(" ");
Serial.print("E");
Serial.print(",");
for(int j = 0 ; j < amount_of_cell_info ; j++ ) {
Serial.print(ReadFromLeftMessage[j]);
Serial.print(",");
}
Serial.println(" ");
Serial.print("N");
Serial.print(",");
for(int j = 0 ; j < amount_of_cell_info ; j++ ) {
Serial.print(ReadFromTopMessage[j]);
Serial.print(",");
}
Serial.println(" ");
Serial.print("S");
Serial.print(",");
for(int j = 0 ; j < amount_of_cell_info ; j++ ) {