update
This commit is contained in:
parent
d50f863e62
commit
3376469aea
BIN
HARDWARE/DOCS/40001393C.pdf
Normal file
BIN
HARDWARE/DOCS/40001393C.pdf
Normal file
Binary file not shown.
BIN
HARDWARE/DOCS/CXT280H02H34-200P50R.pdf
Normal file
BIN
HARDWARE/DOCS/CXT280H02H34-200P50R.pdf
Normal file
Binary file not shown.
15886
HARDWARE/DOCS/ILI9341V_v1.0.pdf
Normal file
15886
HARDWARE/DOCS/ILI9341V_v1.0.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP.Rev.B.BOM.ods
Normal file
BIN
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP.Rev.B.BOM.ods
Normal file
Binary file not shown.
479
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB-cache.lib
Normal file
479
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB-cache.lib
Normal file
@ -0,0 +1,479 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:+3.3V-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:+3.3V-MOD-LCD2.8RTP #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -150 50 H I C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:+3.3V-MOD-LCD2.8RTP" 0 140 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 2 0 1 0 -30 50 0 100 N
|
||||
P 2 0 1 0 0 0 0 100 N
|
||||
P 2 0 1 0 0 100 30 50 N
|
||||
X +3V3 1 0 0 0 U 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:AR1021T-I_SS(SSOP-20)-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:AR1021T-I_SS(SSOP-20)-MOD-LCD2.8RTP U 0 40 Y Y 1 F N
|
||||
F0 "U" 0 600 50 H V C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:AR1021T-I_SS(SSOP-20)-MOD-LCD2.8RTP" 0 -700 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
S -300 500 300 -600 0 1 0 f
|
||||
X VDD 1 -400 400 98 R 40 40 1 1 W
|
||||
X NC 10 -400 -500 98 R 40 40 1 1 N
|
||||
X SCK/SCL/TX 11 400 -500 98 L 40 40 1 1 B
|
||||
X NC 12 400 -400 98 L 40 40 1 1 N
|
||||
X SDI/SDA/RX 13 400 -300 98 L 40 40 1 1 B
|
||||
X SX+ 14 400 -200 98 L 40 40 1 1 I
|
||||
X Y+ 15 400 -100 98 L 40 40 1 1 O
|
||||
X Y- 16 400 0 98 L 40 40 1 1 O
|
||||
X 5WSX- 17 400 100 98 L 40 40 1 1 I
|
||||
X X+ 18 400 200 98 L 40 40 1 1 O
|
||||
X X- 19 400 300 98 L 40 40 1 1 O
|
||||
X M1 2 -400 300 98 R 40 40 1 1 I
|
||||
X VSS 20 400 400 98 L 40 40 1 1 W
|
||||
X SY- 3 -400 200 98 R 40 40 1 1 I
|
||||
X M2 4 -400 100 98 R 40 40 1 1 I
|
||||
X WAKE 5 -400 0 98 R 40 40 1 1 I
|
||||
X SIQ 6 -400 -100 98 R 40 40 1 1 O
|
||||
X SY+ 7 -400 -200 98 R 40 40 1 1 I
|
||||
X SS 8 -400 -300 98 R 40 40 1 1 I
|
||||
X SDO/I2C_IRQ 9 -400 -400 98 R 40 40 1 1 O
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:BH10S-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:BH10S-MOD-LCD2.8RTP CON 0 40 Y N 1 F N
|
||||
F0 "CON" 2 351 60 H V C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:BH10S-MOD-LCD2.8RTP" 12 -371 60 H V C CNN
|
||||
F2 "" -8 -47 60 H V C CNN
|
||||
F3 "" -8 -47 60 H V C CNN
|
||||
DRAW
|
||||
S -123 -191 -22 -209 0 0 0 N
|
||||
S -123 -92 -22 -110 0 0 0 N
|
||||
S -122 10 -21 -8 0 0 0 N
|
||||
S -121 109 -20 91 0 0 0 N
|
||||
S -120 210 -19 192 0 0 0 N
|
||||
S 20 -91 121 -109 0 0 0 N
|
||||
S 20 9 121 -9 0 0 0 N
|
||||
S 21 109 122 91 0 0 0 N
|
||||
S 22 -191 123 -209 0 0 0 N
|
||||
S 22 210 123 192 0 0 0 N
|
||||
S -150 300 150 -300 0 1 10 N
|
||||
P 8 0 0 0 -119 -197 -23 -197 -23 -206 -118 -207 -119 -200 -28 -200 -28 -203 -118 -201 N
|
||||
P 8 0 0 0 -119 4 -23 4 -23 -5 -118 -6 -119 1 -28 1 -28 -2 -118 0 N
|
||||
P 8 0 0 0 -118 -97 -22 -97 -22 -106 -117 -107 -118 -100 -27 -100 -27 -103 -117 -101 N
|
||||
P 8 0 0 0 -117 105 -21 105 -21 96 -116 95 -117 102 -26 102 -26 99 -116 101 N
|
||||
P 8 0 0 0 -116 206 -20 206 -20 197 -115 196 -116 203 -25 203 -25 200 -115 202 N
|
||||
P 8 0 0 0 22 4 118 4 118 -5 23 -6 22 1 113 1 113 -2 23 0 N
|
||||
P 8 0 0 0 23 -96 119 -96 119 -105 24 -106 23 -99 114 -99 114 -102 24 -100 N
|
||||
P 8 0 0 0 23 105 119 105 119 96 24 95 23 102 114 102 114 99 24 101 N
|
||||
P 8 0 0 0 25 -195 121 -195 121 -204 26 -205 25 -198 116 -198 116 -201 26 -199 N
|
||||
P 8 0 0 0 27 206 123 206 123 197 28 196 27 203 118 203 118 200 28 202 N
|
||||
P 2 0 1 0 -150 -200 -120 -200 N
|
||||
P 2 0 1 0 -150 -100 -120 -100 N
|
||||
P 2 0 1 0 -150 0 -120 0 N
|
||||
P 2 0 1 0 -150 100 -120 100 N
|
||||
P 2 0 1 0 -150 200 -120 200 N
|
||||
P 2 0 1 0 150 -200 120 -200 N
|
||||
P 2 0 1 0 150 -100 120 -100 N
|
||||
P 2 0 1 0 150 0 120 0 N
|
||||
P 2 0 1 0 150 100 120 100 N
|
||||
P 2 0 1 0 150 200 120 200 N
|
||||
X 1 1 -300 200 146 R 50 50 1 1 P
|
||||
X 10 10 300 -200 146 L 50 50 1 1 P
|
||||
X 2 2 300 200 146 L 50 50 1 1 P
|
||||
X 3 3 -300 100 146 R 50 50 1 1 P
|
||||
X 4 4 300 100 146 L 50 50 1 1 P
|
||||
X 5 5 -300 0 146 R 50 50 1 1 P
|
||||
X 6 6 300 0 146 L 50 50 1 1 P
|
||||
X 7 7 -300 -100 146 R 50 50 1 1 P
|
||||
X 8 8 300 -100 146 L 50 50 1 1 P
|
||||
X 9 9 -300 -200 146 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:CON12-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:CON12-MOD-LCD2.8RTP CON 0 40 Y Y 1 F N
|
||||
F0 "CON" -50 600 60 H V C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:CON12-MOD-LCD2.8RTP" 0 -700 60 H V C CNN
|
||||
F2 "" -75 450 60 H V C CNN
|
||||
F3 "" -75 450 60 H V C CNN
|
||||
DRAW
|
||||
S -104 -606 -34 -592 0 0 0 N
|
||||
S -104 -506 -34 -492 0 0 0 N
|
||||
S -104 -406 -34 -392 0 0 0 N
|
||||
S -104 -206 -34 -192 0 0 0 N
|
||||
S -104 -106 -34 -92 0 0 0 N
|
||||
S -104 -6 -34 8 0 0 0 N
|
||||
S -104 94 -34 108 0 0 0 N
|
||||
S -104 194 -34 208 0 0 0 N
|
||||
S -104 294 -34 308 0 0 0 N
|
||||
S -104 394 -34 408 0 0 0 N
|
||||
S -103 -602 -38 -598 0 0 0 N
|
||||
S -103 -502 -38 -498 0 0 0 N
|
||||
S -103 -402 -38 -398 0 0 0 N
|
||||
S -103 -306 -33 -292 0 0 0 N
|
||||
S -103 -202 -38 -198 0 0 0 N
|
||||
S -103 -102 -38 -98 0 0 0 N
|
||||
S -103 -2 -38 2 0 0 0 N
|
||||
S -103 98 -38 102 0 0 0 N
|
||||
S -103 198 -38 202 0 0 0 N
|
||||
S -103 298 -38 302 0 0 0 N
|
||||
S -103 398 -38 402 0 0 0 N
|
||||
S -103 494 -33 508 0 0 0 N
|
||||
S -102 -301 -37 -297 0 0 0 N
|
||||
S -102 499 -37 503 0 0 0 N
|
||||
S -38 -595 -104 -603 0 0 0 N
|
||||
S -38 -495 -104 -503 0 0 0 N
|
||||
S -38 -395 -104 -403 0 0 0 N
|
||||
S -38 -195 -104 -203 0 0 0 N
|
||||
S -38 -95 -104 -103 0 0 0 N
|
||||
S -38 5 -104 -3 0 0 0 N
|
||||
S -38 105 -104 97 0 0 0 N
|
||||
S -38 205 -104 197 0 0 0 N
|
||||
S -38 305 -104 297 0 0 0 N
|
||||
S -38 405 -104 397 0 0 0 N
|
||||
S -34 -296 -100 -304 0 0 0 N
|
||||
S -34 504 -100 496 0 0 0 N
|
||||
S -29 -588 -105 -610 0 0 0 N
|
||||
S -29 -488 -105 -510 0 0 0 N
|
||||
S -29 -388 -105 -410 0 0 0 N
|
||||
S -29 -288 -105 -310 0 0 0 N
|
||||
S -29 -188 -105 -210 0 0 0 N
|
||||
S -29 -88 -105 -110 0 0 0 N
|
||||
S -29 12 -105 -10 0 0 0 N
|
||||
S -29 112 -105 90 0 0 0 N
|
||||
S -29 212 -105 190 0 0 0 N
|
||||
S -29 312 -105 290 0 0 0 N
|
||||
S -29 412 -105 390 0 0 0 N
|
||||
S -29 512 -105 490 0 0 0 N
|
||||
S 0 550 -150 -650 0 1 10 N
|
||||
P 2 0 0 0 0 -600 -30 -600 N
|
||||
P 2 0 0 0 0 -500 -30 -500 N
|
||||
P 2 0 0 0 0 -400 -30 -400 N
|
||||
P 2 0 0 0 0 -300 -30 -300 N
|
||||
P 2 0 0 0 0 -200 -30 -200 N
|
||||
P 2 0 0 0 0 -100 -30 -100 N
|
||||
P 2 0 0 0 0 0 -30 0 N
|
||||
P 2 0 0 0 0 100 -30 100 N
|
||||
P 2 0 0 0 0 200 -30 200 N
|
||||
P 2 0 0 0 0 300 -30 300 N
|
||||
P 2 0 0 0 0 400 -30 400 N
|
||||
P 2 0 0 0 0 500 -30 500 N
|
||||
X ~ 1 100 500 100 L 50 50 1 1 P
|
||||
X ~ 10 100 -400 100 L 50 50 1 1 P
|
||||
X ~ 11 100 -500 100 L 50 50 1 1 P
|
||||
X ~ 12 100 -600 100 L 50 50 1 1 P
|
||||
X ~ 2 100 400 100 L 50 50 1 1 P
|
||||
X ~ 3 100 300 100 L 50 50 1 1 P
|
||||
X ~ 4 100 200 100 L 50 50 1 1 P
|
||||
X ~ 5 100 100 100 L 50 50 1 1 P
|
||||
X ~ 6 100 0 100 L 50 50 1 1 P
|
||||
X ~ 7 100 -100 100 L 50 50 1 1 P
|
||||
X ~ 8 100 -200 100 L 50 50 1 1 P
|
||||
X ~ 9 100 -300 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:CONN_01X50-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:CONN_01X50-MOD-LCD2.8RTP CON 0 40 Y N 1 F N
|
||||
F0 "CON" 0 2550 50 H V C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:CONN_01X50-MOD-LCD2.8RTP" 100 500 50 V V C CNN
|
||||
F2 "" 0 500 50 H V C CNN
|
||||
F3 "" 0 500 50 H V C CNN
|
||||
$FPLIST
|
||||
Pin_Header_Straight_1X40
|
||||
Pin_Header_Angled_1X40
|
||||
Socket_Strip_Straight_1X40
|
||||
Socket_Strip_Angled_1X40
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -2500 50 2500 0 1 0 N
|
||||
S -50 -2445 10 -2455 0 1 0 N
|
||||
S -50 -2345 10 -2355 0 1 0 N
|
||||
S -50 -2245 10 -2255 0 1 0 N
|
||||
S -50 -2145 10 -2155 0 1 0 N
|
||||
S -50 -2045 10 -2055 0 1 0 N
|
||||
S -50 -1945 10 -1955 0 1 0 N
|
||||
S -50 -1845 10 -1855 0 1 0 N
|
||||
S -50 -1745 10 -1755 0 1 0 N
|
||||
S -50 -1645 10 -1655 0 1 0 N
|
||||
S -50 -1545 10 -1555 0 1 0 N
|
||||
S -50 -1445 10 -1455 0 1 0 N
|
||||
S -50 -1345 10 -1355 0 1 0 N
|
||||
S -50 -1245 10 -1255 0 1 0 N
|
||||
S -50 -1145 10 -1155 0 1 0 N
|
||||
S -50 -1045 10 -1055 0 1 0 N
|
||||
S -50 -945 10 -955 0 1 0 N
|
||||
S -50 -845 10 -855 0 1 0 N
|
||||
S -50 -745 10 -755 0 1 0 N
|
||||
S -50 -645 10 -655 0 1 0 N
|
||||
S -50 -545 10 -555 0 1 0 N
|
||||
S -50 -445 10 -455 0 1 0 N
|
||||
S -50 -345 10 -355 0 1 0 N
|
||||
S -50 -245 10 -255 0 1 0 N
|
||||
S -50 -145 10 -155 0 1 0 N
|
||||
S -50 -45 10 -55 0 1 0 N
|
||||
S -50 55 10 45 0 1 0 N
|
||||
S -50 155 10 145 0 1 0 N
|
||||
S -50 255 10 245 0 1 0 N
|
||||
S -50 355 10 345 0 1 0 N
|
||||
S -50 455 10 445 0 1 0 N
|
||||
S -50 555 10 545 0 1 0 N
|
||||
S -50 655 10 645 0 1 0 N
|
||||
S -50 755 10 745 0 1 0 N
|
||||
S -50 855 10 845 0 1 0 N
|
||||
S -50 955 10 945 0 1 0 N
|
||||
S -50 1055 10 1045 0 1 0 N
|
||||
S -50 1155 10 1145 0 1 0 N
|
||||
S -50 1255 10 1245 0 1 0 N
|
||||
S -50 1355 10 1345 0 1 0 N
|
||||
S -50 1455 10 1445 0 1 0 N
|
||||
S -50 1555 10 1545 0 1 0 N
|
||||
S -50 1655 10 1645 0 1 0 N
|
||||
S -50 1755 10 1745 0 1 0 N
|
||||
S -50 1855 10 1845 0 1 0 N
|
||||
S -50 1955 10 1945 0 1 0 N
|
||||
S -50 2055 10 2045 0 1 0 N
|
||||
S -50 2155 10 2145 0 1 0 N
|
||||
S -50 2255 10 2245 0 1 0 N
|
||||
S -50 2355 10 2345 0 1 0 N
|
||||
S -50 2455 10 2445 0 1 0 N
|
||||
X P0 0 0 -2700 200 U 50 50 1 1 P
|
||||
X P1 1 -200 2450 150 R 50 50 1 1 P
|
||||
X P10 10 -200 1550 150 R 50 50 1 1 P
|
||||
X P11 11 -200 1450 150 R 50 50 1 1 P
|
||||
X P12 12 -200 1350 150 R 50 50 1 1 P
|
||||
X P13 13 -200 1250 150 R 50 50 1 1 P
|
||||
X P14 14 -200 1150 150 R 50 50 1 1 P
|
||||
X P15 15 -200 1050 150 R 50 50 1 1 P
|
||||
X P16 16 -200 950 150 R 50 50 1 1 P
|
||||
X P17 17 -200 850 150 R 50 50 1 1 P
|
||||
X P18 18 -200 750 150 R 50 50 1 1 P
|
||||
X P19 19 -200 650 150 R 50 50 1 1 P
|
||||
X P2 2 -200 2350 150 R 50 50 1 1 P
|
||||
X P20 20 -200 550 150 R 50 50 1 1 P
|
||||
X P21 21 -200 450 150 R 50 50 1 1 P
|
||||
X P22 22 -200 350 150 R 50 50 1 1 P
|
||||
X P23 23 -200 250 150 R 50 50 1 1 P
|
||||
X P24 24 -200 150 150 R 50 50 1 1 P
|
||||
X P25 25 -200 50 150 R 50 50 1 1 P
|
||||
X P26 26 -200 -50 150 R 50 50 1 1 P
|
||||
X P27 27 -200 -150 150 R 50 50 1 1 P
|
||||
X P28 28 -200 -250 150 R 50 50 1 1 P
|
||||
X P29 29 -200 -350 150 R 50 50 1 1 P
|
||||
X P3 3 -200 2250 150 R 50 50 1 1 P
|
||||
X P30 30 -200 -450 150 R 50 50 1 1 P
|
||||
X P31 31 -200 -550 150 R 50 50 1 1 P
|
||||
X P32 32 -200 -650 150 R 50 50 1 1 P
|
||||
X P33 33 -200 -750 150 R 50 50 1 1 P
|
||||
X P34 34 -200 -850 150 R 50 50 1 1 P
|
||||
X P35 35 -200 -950 150 R 50 50 1 1 P
|
||||
X P36 36 -200 -1050 150 R 50 50 1 1 P
|
||||
X P37 37 -200 -1150 150 R 50 50 1 1 P
|
||||
X P38 38 -200 -1250 150 R 50 50 1 1 P
|
||||
X P39 39 -200 -1350 150 R 50 50 1 1 P
|
||||
X P4 4 -200 2150 150 R 50 50 1 1 P
|
||||
X P40 40 -200 -1450 150 R 50 50 1 1 P
|
||||
X P4 41 -200 -1550 150 R 50 50 1 1 P
|
||||
X P42 42 -200 -1650 150 R 50 50 1 1 P
|
||||
X P43 43 -200 -1750 150 R 50 50 1 1 P
|
||||
X P44 44 -200 -1850 150 R 50 50 1 1 P
|
||||
X P45 45 -200 -1950 150 R 50 50 1 1 P
|
||||
X P46 46 -200 -2050 150 R 50 50 1 1 P
|
||||
X P47 47 -200 -2150 150 R 50 50 1 1 P
|
||||
X P48 48 -200 -2250 150 R 50 50 1 1 P
|
||||
X P49 49 -200 -2350 150 R 50 50 1 1 P
|
||||
X P5 5 -200 2050 150 R 50 50 1 1 P
|
||||
X P50 50 -200 -2450 150 R 50 50 1 1 P
|
||||
X P6 6 -200 1950 150 R 50 50 1 1 P
|
||||
X P7 7 -200 1850 150 R 50 50 1 1 P
|
||||
X P8 8 -200 1750 150 R 50 50 1 1 P
|
||||
X P9 9 -200 1650 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:C_Small-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:C_Small-MOD-LCD2.8RTP C 0 10 N N 1 F N
|
||||
F0 "C" 10 70 50 H V L CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:C_Small-MOD-LCD2.8RTP" 10 -80 50 H V L CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
C?
|
||||
C_????_*
|
||||
C_????
|
||||
SMD*_c
|
||||
Capacitor*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 13 -60 -20 60 -20 N
|
||||
P 2 0 1 12 -60 20 60 20 N
|
||||
X ~ 1 0 100 75 D 40 40 1 1 P
|
||||
X ~ 2 0 -100 80 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:GND-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:GND-MOD-LCD2.8RTP #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -250 50 H I C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:GND-MOD-LCD2.8RTP" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
|
||||
X GND 1 0 0 0 D 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:N-MOS+DIOD_Small-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:N-MOS+DIOD_Small-MOD-LCD2.8RTP FET 0 0 Y N 1 F N
|
||||
F0 "FET" 0 150 60 H V C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:N-MOS+DIOD_Small-MOD-LCD2.8RTP" 0 -200 60 H V C CNN
|
||||
F2 "" 0 0 60 V V C CNN
|
||||
F3 "" 0 0 60 V V C CNN
|
||||
DRAW
|
||||
C 0 0 100 0 1 0 N
|
||||
C 35 -50 5 0 1 10 N
|
||||
C 65 -50 5 0 1 10 N
|
||||
C 65 50 5 0 1 10 N
|
||||
T 900 22 70 25 0 0 0 D Normal 0 C C
|
||||
T 900 -35 -1 16 0 0 0 N-MOS Normal 0 C C
|
||||
T 900 23 -74 25 0 0 0 S Normal 0 C C
|
||||
T 0 -85 -3 25 0 1 0 G Normal 0 C C
|
||||
P 2 0 1 10 -100 -50 -60 -50 N
|
||||
P 2 0 1 20 -60 -45 -60 45 N
|
||||
P 2 0 1 20 -10 -75 -10 75 N
|
||||
P 2 0 1 0 5 0 25 -15 N
|
||||
P 2 0 1 0 65 -20 50 -20 N
|
||||
P 2 0 1 0 65 15 65 50 N
|
||||
P 2 0 1 10 100 -50 0 -50 N
|
||||
P 2 0 1 10 100 50 0 50 N
|
||||
P 3 0 1 0 50 -15 65 25 80 -20 N
|
||||
P 3 0 1 0 65 -50 65 -20 80 -20 N
|
||||
P 3 0 1 0 80 20 65 20 50 20 N
|
||||
P 4 0 1 0 35 -50 35 0 5 0 25 15 N
|
||||
X G 1 -150 -50 50 R 50 50 1 1 I
|
||||
X S 2 200 -50 100 L 50 50 1 1 P
|
||||
X D 3 200 50 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:PWR_FLAG-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:PWR_FLAG-MOD-LCD2.8RTP #FLG 0 0 N N 1 F P
|
||||
F0 "#FLG" 0 95 50 H I C CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:PWR_FLAG-MOD-LCD2.8RTP" 0 180 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 50 -75 100 0 150 75 100 0 50 N
|
||||
X pwr 1 0 0 0 U 20 20 0 0 w
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:R_Small-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:R_Small-MOD-LCD2.8RTP R 0 10 N N 1 F N
|
||||
F0 "R" 30 20 50 H V L CNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:R_Small-MOD-LCD2.8RTP" 30 -40 50 H V L CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
Resistor_*
|
||||
R_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -30 70 30 -70 0 1 8 N
|
||||
X ~ 1 0 100 30 D 40 40 1 1 P
|
||||
X ~ 2 0 -100 30 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# MOD-LCD2.8RTP_RevB-rescue:SJ2W_Closed(1-2)-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF MOD-LCD2.8RTP_RevB-rescue:SJ2W_Closed(1-2)-MOD-LCD2.8RTP SJ 0 40 Y N 1 F N
|
||||
F0 "SJ" 100 15 50 H V L BNN
|
||||
F1 "MOD-LCD2.8RTP_RevB-rescue:SJ2W_Closed(1-2)-MOD-LCD2.8RTP" 100 -75 50 H V L BNN
|
||||
F2 "" 30 150 20 H I C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
*SJ_2*
|
||||
*SJ_2_SMALL*
|
||||
*SJ_2_SMALLER*
|
||||
*SJ_2_SMALL_23_TIED*
|
||||
*SJ_2_SMALL_12_TIED*
|
||||
*SJ_2_SMALLER_12_TIED*
|
||||
*SJ_2_SMALLER_23_TIED*
|
||||
*SJ_2W*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
A 0 -51 50 -46 -1754 1 1 10 F 50 -55 -50 -55
|
||||
A 0 51 50 1754 46 1 1 10 F -50 55 50 55
|
||||
S -50 -25 50 25 1 1 0 F
|
||||
P 2 1 0 0 -100 0 -50 0 N
|
||||
P 2 1 0 0 -50 -25 -50 0 N
|
||||
P 2 1 0 0 -50 0 -50 25 N
|
||||
P 2 1 0 0 -50 25 50 25 N
|
||||
P 2 1 0 0 50 -25 -50 -25 N
|
||||
P 2 1 0 0 50 25 50 -25 N
|
||||
P 2 0 1 30 0 75 0 0 N
|
||||
P 2 1 1 10 -46 54 45 54 N
|
||||
P 2 1 1 10 -45 -55 45 -55 N
|
||||
X 1 1 0 200 100 D 40 20 1 1 P
|
||||
X 2 2 -200 0 100 R 40 20 1 1 P
|
||||
X 3 3 0 -200 100 U 40 20 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# OLIMEX_Jumpers:SJ
|
||||
#
|
||||
DEF OLIMEX_Jumpers:SJ SJ 0 40 Y N 1 F N
|
||||
F0 "SJ" -50 75 50 H V L BNN
|
||||
F1 "OLIMEX_Jumpers:SJ" -50 -100 50 H V L BNN
|
||||
F2 "jumper_SJ" 8 62 20 H I C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
*SJ*
|
||||
*SJ-CLOSE*
|
||||
*SJ_1_SMALLER_CLOSE*
|
||||
*SJ_1_SMALLER_CLOSE_10MILS*
|
||||
*SJ_1_THE_SMALLEST*
|
||||
*SJ_1_SMALLER*
|
||||
*SJW*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
A -20 0 30 901 -901 0 1 10 N -20 30 -20 -30
|
||||
A 20 0 30 900 0 0 1 10 N 20 30 50 0
|
||||
A 20 0 30 -900 0 0 1 10 N 20 -30 50 0
|
||||
P 2 0 1 10 -45 15 -45 -10 N
|
||||
P 2 0 1 10 -40 20 -40 -20 N
|
||||
P 2 0 1 10 -35 20 -35 -20 N
|
||||
P 2 0 1 10 -30 25 -30 -25 N
|
||||
P 2 0 1 10 -25 30 -25 -25 N
|
||||
P 2 0 1 10 -20 30 -20 -30 N
|
||||
P 2 0 1 10 20 30 20 -30 N
|
||||
P 2 0 1 10 25 30 25 -25 N
|
||||
P 2 0 1 10 30 25 30 -25 N
|
||||
P 2 0 1 10 35 20 35 -20 N
|
||||
P 2 0 1 10 40 20 40 -15 N
|
||||
P 2 0 1 10 45 15 45 -15 N
|
||||
X 1 1 -100 0 50 R 40 20 1 1 P
|
||||
X 2 2 100 0 50 L 40 20 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
3
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB-rescue.dcm
Normal file
3
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB-rescue.dcm
Normal file
@ -0,0 +1,3 @@
|
||||
EESchema-DOCLIB Version 2.0
|
||||
#
|
||||
#End Doc Library
|
||||
442
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB-rescue.lib
Normal file
442
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB-rescue.lib
Normal file
@ -0,0 +1,442 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
# +3.3V-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF +3.3V-MOD-LCD2.8RTP #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -150 50 H I C CNN
|
||||
F1 "+3.3V-MOD-LCD2.8RTP" 0 140 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 2 0 1 0 -30 50 0 100 N
|
||||
P 2 0 1 0 0 0 0 100 N
|
||||
P 2 0 1 0 0 100 30 50 N
|
||||
X +3V3 1 0 0 0 U 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# AR1021T-I_SS(SSOP-20)-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF AR1021T-I_SS(SSOP-20)-MOD-LCD2.8RTP U 0 40 Y Y 1 F N
|
||||
F0 "U" 0 600 50 H V C CNN
|
||||
F1 "AR1021T-I_SS(SSOP-20)-MOD-LCD2.8RTP" 0 -700 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
S -300 500 300 -600 0 1 0 f
|
||||
X VDD 1 -400 400 98 R 40 40 1 1 W
|
||||
X NC 10 -400 -500 98 R 40 40 1 1 N
|
||||
X SCK/SCL/TX 11 400 -500 98 L 40 40 1 1 B
|
||||
X NC 12 400 -400 98 L 40 40 1 1 N
|
||||
X SDI/SDA/RX 13 400 -300 98 L 40 40 1 1 B
|
||||
X SX+ 14 400 -200 98 L 40 40 1 1 I
|
||||
X Y+ 15 400 -100 98 L 40 40 1 1 O
|
||||
X Y- 16 400 0 98 L 40 40 1 1 O
|
||||
X 5WSX- 17 400 100 98 L 40 40 1 1 I
|
||||
X X+ 18 400 200 98 L 40 40 1 1 O
|
||||
X X- 19 400 300 98 L 40 40 1 1 O
|
||||
X M1 2 -400 300 98 R 40 40 1 1 I
|
||||
X VSS 20 400 400 98 L 40 40 1 1 W
|
||||
X SY- 3 -400 200 98 R 40 40 1 1 I
|
||||
X M2 4 -400 100 98 R 40 40 1 1 I
|
||||
X WAKE 5 -400 0 98 R 40 40 1 1 I
|
||||
X SIQ 6 -400 -100 98 R 40 40 1 1 O
|
||||
X SY+ 7 -400 -200 98 R 40 40 1 1 I
|
||||
X SS 8 -400 -300 98 R 40 40 1 1 I
|
||||
X SDO/I2C_IRQ 9 -400 -400 98 R 40 40 1 1 O
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# BH10S-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF BH10S-MOD-LCD2.8RTP CON 0 40 Y N 1 F N
|
||||
F0 "CON" 2 351 60 H V C CNN
|
||||
F1 "BH10S-MOD-LCD2.8RTP" 12 -371 60 H V C CNN
|
||||
F2 "" -8 -47 60 H V C CNN
|
||||
F3 "" -8 -47 60 H V C CNN
|
||||
DRAW
|
||||
S -123 -191 -22 -209 0 0 0 N
|
||||
S -123 -92 -22 -110 0 0 0 N
|
||||
S -122 10 -21 -8 0 0 0 N
|
||||
S -121 109 -20 91 0 0 0 N
|
||||
S -120 210 -19 192 0 0 0 N
|
||||
S 20 -91 121 -109 0 0 0 N
|
||||
S 20 9 121 -9 0 0 0 N
|
||||
S 21 109 122 91 0 0 0 N
|
||||
S 22 -191 123 -209 0 0 0 N
|
||||
S 22 210 123 192 0 0 0 N
|
||||
S -150 300 150 -300 0 1 10 N
|
||||
P 8 0 0 0 -119 -197 -23 -197 -23 -206 -118 -207 -119 -200 -28 -200 -28 -203 -118 -201 N
|
||||
P 8 0 0 0 -119 4 -23 4 -23 -5 -118 -6 -119 1 -28 1 -28 -2 -118 0 N
|
||||
P 8 0 0 0 -118 -97 -22 -97 -22 -106 -117 -107 -118 -100 -27 -100 -27 -103 -117 -101 N
|
||||
P 8 0 0 0 -117 105 -21 105 -21 96 -116 95 -117 102 -26 102 -26 99 -116 101 N
|
||||
P 8 0 0 0 -116 206 -20 206 -20 197 -115 196 -116 203 -25 203 -25 200 -115 202 N
|
||||
P 8 0 0 0 22 4 118 4 118 -5 23 -6 22 1 113 1 113 -2 23 0 N
|
||||
P 8 0 0 0 23 -96 119 -96 119 -105 24 -106 23 -99 114 -99 114 -102 24 -100 N
|
||||
P 8 0 0 0 23 105 119 105 119 96 24 95 23 102 114 102 114 99 24 101 N
|
||||
P 8 0 0 0 25 -195 121 -195 121 -204 26 -205 25 -198 116 -198 116 -201 26 -199 N
|
||||
P 8 0 0 0 27 206 123 206 123 197 28 196 27 203 118 203 118 200 28 202 N
|
||||
P 2 0 1 0 -150 -200 -120 -200 N
|
||||
P 2 0 1 0 -150 -100 -120 -100 N
|
||||
P 2 0 1 0 -150 0 -120 0 N
|
||||
P 2 0 1 0 -150 100 -120 100 N
|
||||
P 2 0 1 0 -150 200 -120 200 N
|
||||
P 2 0 1 0 150 -200 120 -200 N
|
||||
P 2 0 1 0 150 -100 120 -100 N
|
||||
P 2 0 1 0 150 0 120 0 N
|
||||
P 2 0 1 0 150 100 120 100 N
|
||||
P 2 0 1 0 150 200 120 200 N
|
||||
X 1 1 -300 200 146 R 50 50 1 1 P
|
||||
X 10 10 300 -200 146 L 50 50 1 1 P
|
||||
X 2 2 300 200 146 L 50 50 1 1 P
|
||||
X 3 3 -300 100 146 R 50 50 1 1 P
|
||||
X 4 4 300 100 146 L 50 50 1 1 P
|
||||
X 5 5 -300 0 146 R 50 50 1 1 P
|
||||
X 6 6 300 0 146 L 50 50 1 1 P
|
||||
X 7 7 -300 -100 146 R 50 50 1 1 P
|
||||
X 8 8 300 -100 146 L 50 50 1 1 P
|
||||
X 9 9 -300 -200 146 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# CON12-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF CON12-MOD-LCD2.8RTP CON 0 40 Y Y 1 F N
|
||||
F0 "CON" -50 600 60 H V C CNN
|
||||
F1 "CON12-MOD-LCD2.8RTP" 0 -700 60 H V C CNN
|
||||
F2 "" -75 450 60 H V C CNN
|
||||
F3 "" -75 450 60 H V C CNN
|
||||
DRAW
|
||||
S -104 -606 -34 -592 0 0 0 N
|
||||
S -104 -506 -34 -492 0 0 0 N
|
||||
S -104 -406 -34 -392 0 0 0 N
|
||||
S -104 -206 -34 -192 0 0 0 N
|
||||
S -104 -106 -34 -92 0 0 0 N
|
||||
S -104 -6 -34 8 0 0 0 N
|
||||
S -104 94 -34 108 0 0 0 N
|
||||
S -104 194 -34 208 0 0 0 N
|
||||
S -104 294 -34 308 0 0 0 N
|
||||
S -104 394 -34 408 0 0 0 N
|
||||
S -103 -602 -38 -598 0 0 0 N
|
||||
S -103 -502 -38 -498 0 0 0 N
|
||||
S -103 -402 -38 -398 0 0 0 N
|
||||
S -103 -306 -33 -292 0 0 0 N
|
||||
S -103 -202 -38 -198 0 0 0 N
|
||||
S -103 -102 -38 -98 0 0 0 N
|
||||
S -103 -2 -38 2 0 0 0 N
|
||||
S -103 98 -38 102 0 0 0 N
|
||||
S -103 198 -38 202 0 0 0 N
|
||||
S -103 298 -38 302 0 0 0 N
|
||||
S -103 398 -38 402 0 0 0 N
|
||||
S -103 494 -33 508 0 0 0 N
|
||||
S -102 -301 -37 -297 0 0 0 N
|
||||
S -102 499 -37 503 0 0 0 N
|
||||
S -38 -595 -104 -603 0 0 0 N
|
||||
S -38 -495 -104 -503 0 0 0 N
|
||||
S -38 -395 -104 -403 0 0 0 N
|
||||
S -38 -195 -104 -203 0 0 0 N
|
||||
S -38 -95 -104 -103 0 0 0 N
|
||||
S -38 5 -104 -3 0 0 0 N
|
||||
S -38 105 -104 97 0 0 0 N
|
||||
S -38 205 -104 197 0 0 0 N
|
||||
S -38 305 -104 297 0 0 0 N
|
||||
S -38 405 -104 397 0 0 0 N
|
||||
S -34 -296 -100 -304 0 0 0 N
|
||||
S -34 504 -100 496 0 0 0 N
|
||||
S -29 -588 -105 -610 0 0 0 N
|
||||
S -29 -488 -105 -510 0 0 0 N
|
||||
S -29 -388 -105 -410 0 0 0 N
|
||||
S -29 -288 -105 -310 0 0 0 N
|
||||
S -29 -188 -105 -210 0 0 0 N
|
||||
S -29 -88 -105 -110 0 0 0 N
|
||||
S -29 12 -105 -10 0 0 0 N
|
||||
S -29 112 -105 90 0 0 0 N
|
||||
S -29 212 -105 190 0 0 0 N
|
||||
S -29 312 -105 290 0 0 0 N
|
||||
S -29 412 -105 390 0 0 0 N
|
||||
S -29 512 -105 490 0 0 0 N
|
||||
S 0 550 -150 -650 0 1 10 N
|
||||
P 2 0 0 0 0 -600 -30 -600 N
|
||||
P 2 0 0 0 0 -500 -30 -500 N
|
||||
P 2 0 0 0 0 -400 -30 -400 N
|
||||
P 2 0 0 0 0 -300 -30 -300 N
|
||||
P 2 0 0 0 0 -200 -30 -200 N
|
||||
P 2 0 0 0 0 -100 -30 -100 N
|
||||
P 2 0 0 0 0 0 -30 0 N
|
||||
P 2 0 0 0 0 100 -30 100 N
|
||||
P 2 0 0 0 0 200 -30 200 N
|
||||
P 2 0 0 0 0 300 -30 300 N
|
||||
P 2 0 0 0 0 400 -30 400 N
|
||||
P 2 0 0 0 0 500 -30 500 N
|
||||
X ~ 1 100 500 100 L 50 50 1 1 P
|
||||
X ~ 10 100 -400 100 L 50 50 1 1 P
|
||||
X ~ 11 100 -500 100 L 50 50 1 1 P
|
||||
X ~ 12 100 -600 100 L 50 50 1 1 P
|
||||
X ~ 2 100 400 100 L 50 50 1 1 P
|
||||
X ~ 3 100 300 100 L 50 50 1 1 P
|
||||
X ~ 4 100 200 100 L 50 50 1 1 P
|
||||
X ~ 5 100 100 100 L 50 50 1 1 P
|
||||
X ~ 6 100 0 100 L 50 50 1 1 P
|
||||
X ~ 7 100 -100 100 L 50 50 1 1 P
|
||||
X ~ 8 100 -200 100 L 50 50 1 1 P
|
||||
X ~ 9 100 -300 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# CONN_01X50-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF CONN_01X50-MOD-LCD2.8RTP CON 0 40 Y N 1 F N
|
||||
F0 "CON" 0 2550 50 H V C CNN
|
||||
F1 "CONN_01X50-MOD-LCD2.8RTP" 100 500 50 V V C CNN
|
||||
F2 "" 0 500 50 H V C CNN
|
||||
F3 "" 0 500 50 H V C CNN
|
||||
$FPLIST
|
||||
Pin_Header_Straight_1X40
|
||||
Pin_Header_Angled_1X40
|
||||
Socket_Strip_Straight_1X40
|
||||
Socket_Strip_Angled_1X40
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -2500 50 2500 0 1 0 N
|
||||
S -50 -2445 10 -2455 0 1 0 N
|
||||
S -50 -2345 10 -2355 0 1 0 N
|
||||
S -50 -2245 10 -2255 0 1 0 N
|
||||
S -50 -2145 10 -2155 0 1 0 N
|
||||
S -50 -2045 10 -2055 0 1 0 N
|
||||
S -50 -1945 10 -1955 0 1 0 N
|
||||
S -50 -1845 10 -1855 0 1 0 N
|
||||
S -50 -1745 10 -1755 0 1 0 N
|
||||
S -50 -1645 10 -1655 0 1 0 N
|
||||
S -50 -1545 10 -1555 0 1 0 N
|
||||
S -50 -1445 10 -1455 0 1 0 N
|
||||
S -50 -1345 10 -1355 0 1 0 N
|
||||
S -50 -1245 10 -1255 0 1 0 N
|
||||
S -50 -1145 10 -1155 0 1 0 N
|
||||
S -50 -1045 10 -1055 0 1 0 N
|
||||
S -50 -945 10 -955 0 1 0 N
|
||||
S -50 -845 10 -855 0 1 0 N
|
||||
S -50 -745 10 -755 0 1 0 N
|
||||
S -50 -645 10 -655 0 1 0 N
|
||||
S -50 -545 10 -555 0 1 0 N
|
||||
S -50 -445 10 -455 0 1 0 N
|
||||
S -50 -345 10 -355 0 1 0 N
|
||||
S -50 -245 10 -255 0 1 0 N
|
||||
S -50 -145 10 -155 0 1 0 N
|
||||
S -50 -45 10 -55 0 1 0 N
|
||||
S -50 55 10 45 0 1 0 N
|
||||
S -50 155 10 145 0 1 0 N
|
||||
S -50 255 10 245 0 1 0 N
|
||||
S -50 355 10 345 0 1 0 N
|
||||
S -50 455 10 445 0 1 0 N
|
||||
S -50 555 10 545 0 1 0 N
|
||||
S -50 655 10 645 0 1 0 N
|
||||
S -50 755 10 745 0 1 0 N
|
||||
S -50 855 10 845 0 1 0 N
|
||||
S -50 955 10 945 0 1 0 N
|
||||
S -50 1055 10 1045 0 1 0 N
|
||||
S -50 1155 10 1145 0 1 0 N
|
||||
S -50 1255 10 1245 0 1 0 N
|
||||
S -50 1355 10 1345 0 1 0 N
|
||||
S -50 1455 10 1445 0 1 0 N
|
||||
S -50 1555 10 1545 0 1 0 N
|
||||
S -50 1655 10 1645 0 1 0 N
|
||||
S -50 1755 10 1745 0 1 0 N
|
||||
S -50 1855 10 1845 0 1 0 N
|
||||
S -50 1955 10 1945 0 1 0 N
|
||||
S -50 2055 10 2045 0 1 0 N
|
||||
S -50 2155 10 2145 0 1 0 N
|
||||
S -50 2255 10 2245 0 1 0 N
|
||||
S -50 2355 10 2345 0 1 0 N
|
||||
S -50 2455 10 2445 0 1 0 N
|
||||
X P0 0 0 -2700 200 U 50 50 1 1 P
|
||||
X P1 1 -200 2450 150 R 50 50 1 1 P
|
||||
X P10 10 -200 1550 150 R 50 50 1 1 P
|
||||
X P11 11 -200 1450 150 R 50 50 1 1 P
|
||||
X P12 12 -200 1350 150 R 50 50 1 1 P
|
||||
X P13 13 -200 1250 150 R 50 50 1 1 P
|
||||
X P14 14 -200 1150 150 R 50 50 1 1 P
|
||||
X P15 15 -200 1050 150 R 50 50 1 1 P
|
||||
X P16 16 -200 950 150 R 50 50 1 1 P
|
||||
X P17 17 -200 850 150 R 50 50 1 1 P
|
||||
X P18 18 -200 750 150 R 50 50 1 1 P
|
||||
X P19 19 -200 650 150 R 50 50 1 1 P
|
||||
X P2 2 -200 2350 150 R 50 50 1 1 P
|
||||
X P20 20 -200 550 150 R 50 50 1 1 P
|
||||
X P21 21 -200 450 150 R 50 50 1 1 P
|
||||
X P22 22 -200 350 150 R 50 50 1 1 P
|
||||
X P23 23 -200 250 150 R 50 50 1 1 P
|
||||
X P24 24 -200 150 150 R 50 50 1 1 P
|
||||
X P25 25 -200 50 150 R 50 50 1 1 P
|
||||
X P26 26 -200 -50 150 R 50 50 1 1 P
|
||||
X P27 27 -200 -150 150 R 50 50 1 1 P
|
||||
X P28 28 -200 -250 150 R 50 50 1 1 P
|
||||
X P29 29 -200 -350 150 R 50 50 1 1 P
|
||||
X P3 3 -200 2250 150 R 50 50 1 1 P
|
||||
X P30 30 -200 -450 150 R 50 50 1 1 P
|
||||
X P31 31 -200 -550 150 R 50 50 1 1 P
|
||||
X P32 32 -200 -650 150 R 50 50 1 1 P
|
||||
X P33 33 -200 -750 150 R 50 50 1 1 P
|
||||
X P34 34 -200 -850 150 R 50 50 1 1 P
|
||||
X P35 35 -200 -950 150 R 50 50 1 1 P
|
||||
X P36 36 -200 -1050 150 R 50 50 1 1 P
|
||||
X P37 37 -200 -1150 150 R 50 50 1 1 P
|
||||
X P38 38 -200 -1250 150 R 50 50 1 1 P
|
||||
X P39 39 -200 -1350 150 R 50 50 1 1 P
|
||||
X P4 4 -200 2150 150 R 50 50 1 1 P
|
||||
X P40 40 -200 -1450 150 R 50 50 1 1 P
|
||||
X P4 41 -200 -1550 150 R 50 50 1 1 P
|
||||
X P42 42 -200 -1650 150 R 50 50 1 1 P
|
||||
X P43 43 -200 -1750 150 R 50 50 1 1 P
|
||||
X P44 44 -200 -1850 150 R 50 50 1 1 P
|
||||
X P45 45 -200 -1950 150 R 50 50 1 1 P
|
||||
X P46 46 -200 -2050 150 R 50 50 1 1 P
|
||||
X P47 47 -200 -2150 150 R 50 50 1 1 P
|
||||
X P48 48 -200 -2250 150 R 50 50 1 1 P
|
||||
X P49 49 -200 -2350 150 R 50 50 1 1 P
|
||||
X P5 5 -200 2050 150 R 50 50 1 1 P
|
||||
X P50 50 -200 -2450 150 R 50 50 1 1 P
|
||||
X P6 6 -200 1950 150 R 50 50 1 1 P
|
||||
X P7 7 -200 1850 150 R 50 50 1 1 P
|
||||
X P8 8 -200 1750 150 R 50 50 1 1 P
|
||||
X P9 9 -200 1650 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# C_Small-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF C_Small-MOD-LCD2.8RTP C 0 10 N N 1 F N
|
||||
F0 "C" 10 70 50 H V L CNN
|
||||
F1 "C_Small-MOD-LCD2.8RTP" 10 -80 50 H V L CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
C?
|
||||
C_????_*
|
||||
C_????
|
||||
SMD*_c
|
||||
Capacitor*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 13 -60 -20 60 -20 N
|
||||
P 2 0 1 12 -60 20 60 20 N
|
||||
X ~ 1 0 100 75 D 40 40 1 1 P
|
||||
X ~ 2 0 -100 80 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# GND-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF GND-MOD-LCD2.8RTP #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -250 50 H I C CNN
|
||||
F1 "GND-MOD-LCD2.8RTP" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
|
||||
X GND 1 0 0 0 D 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# N-MOS+DIOD_Small-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF N-MOS+DIOD_Small-MOD-LCD2.8RTP FET 0 0 Y N 1 F N
|
||||
F0 "FET" 0 150 60 H V C CNN
|
||||
F1 "N-MOS+DIOD_Small-MOD-LCD2.8RTP" 0 -200 60 H V C CNN
|
||||
F2 "" 0 0 60 V V C CNN
|
||||
F3 "" 0 0 60 V V C CNN
|
||||
DRAW
|
||||
C 0 0 100 0 1 0 N
|
||||
C 35 -50 5 0 1 10 N
|
||||
C 65 -50 5 0 1 10 N
|
||||
C 65 50 5 0 1 10 N
|
||||
T 900 22 70 25 0 0 0 D Normal 0 C C
|
||||
T 900 -35 -1 16 0 0 0 N-MOS Normal 0 C C
|
||||
T 900 23 -74 25 0 0 0 S Normal 0 C C
|
||||
T 0 -85 -3 25 0 1 0 G Normal 0 C C
|
||||
P 2 0 1 10 -100 -50 -60 -50 N
|
||||
P 2 0 1 20 -60 -45 -60 45 N
|
||||
P 2 0 1 20 -10 -75 -10 75 N
|
||||
P 2 0 1 0 5 0 25 -15 N
|
||||
P 2 0 1 0 65 -20 50 -20 N
|
||||
P 2 0 1 0 65 15 65 50 N
|
||||
P 2 0 1 10 100 -50 0 -50 N
|
||||
P 2 0 1 10 100 50 0 50 N
|
||||
P 3 0 1 0 50 -15 65 25 80 -20 N
|
||||
P 3 0 1 0 65 -50 65 -20 80 -20 N
|
||||
P 3 0 1 0 80 20 65 20 50 20 N
|
||||
P 4 0 1 0 35 -50 35 0 5 0 25 15 N
|
||||
X G 1 -150 -50 50 R 50 50 1 1 I
|
||||
X S 2 200 -50 100 L 50 50 1 1 P
|
||||
X D 3 200 50 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# PWR_FLAG-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF PWR_FLAG-MOD-LCD2.8RTP #FLG 0 0 N N 1 F P
|
||||
F0 "#FLG" 0 95 50 H I C CNN
|
||||
F1 "PWR_FLAG-MOD-LCD2.8RTP" 0 180 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 50 -75 100 0 150 75 100 0 50 N
|
||||
X pwr 1 0 0 0 U 20 20 0 0 w
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# R_Small-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF R_Small-MOD-LCD2.8RTP R 0 10 N N 1 F N
|
||||
F0 "R" 30 20 50 H V L CNN
|
||||
F1 "R_Small-MOD-LCD2.8RTP" 30 -40 50 H V L CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
Resistor_*
|
||||
R_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -30 70 30 -70 0 1 8 N
|
||||
X ~ 1 0 100 30 D 40 40 1 1 P
|
||||
X ~ 2 0 -100 30 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# SJ2W_Closed(1-2)-MOD-LCD2.8RTP
|
||||
#
|
||||
DEF SJ2W_Closed(1-2)-MOD-LCD2.8RTP SJ 0 40 Y N 1 F N
|
||||
F0 "SJ" 100 15 50 H V L BNN
|
||||
F1 "SJ2W_Closed(1-2)-MOD-LCD2.8RTP" 100 -75 50 H V L BNN
|
||||
F2 "" 30 150 20 H I C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
*SJ_2*
|
||||
*SJ_2_SMALL*
|
||||
*SJ_2_SMALLER*
|
||||
*SJ_2_SMALL_23_TIED*
|
||||
*SJ_2_SMALL_12_TIED*
|
||||
*SJ_2_SMALLER_12_TIED*
|
||||
*SJ_2_SMALLER_23_TIED*
|
||||
*SJ_2W*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
A 0 -51 50 -46 -1754 1 1 10 F 50 -55 -50 -55
|
||||
A 0 51 50 1754 46 1 1 10 F -50 55 50 55
|
||||
S -50 -25 50 25 1 1 0 F
|
||||
P 2 1 0 0 -100 0 -50 0 N
|
||||
P 2 1 0 0 -50 -25 -50 0 N
|
||||
P 2 1 0 0 -50 0 -50 25 N
|
||||
P 2 1 0 0 -50 25 50 25 N
|
||||
P 2 1 0 0 50 -25 -50 -25 N
|
||||
P 2 1 0 0 50 25 50 -25 N
|
||||
P 2 0 1 30 0 75 0 0 N
|
||||
P 2 1 1 10 -46 54 45 54 N
|
||||
P 2 1 1 10 -45 -55 45 -55 N
|
||||
X 1 1 0 200 100 D 40 20 1 1 P
|
||||
X 2 2 -200 0 100 R 40 20 1 1 P
|
||||
X 3 3 0 -200 100 U 40 20 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
2884
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.kicad_pcb
Normal file
2884
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
480
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.lib
Normal file
480
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.lib
Normal file
@ -0,0 +1,480 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
# CONN_01X50
|
||||
#
|
||||
DEF CONN_01X50 CON 0 40 Y N 1 F N
|
||||
F0 "CON" 0 2550 50 H V C CNN
|
||||
F1 "CONN_01X50" 100 500 50 V V C CNN
|
||||
F2 "" 0 500 50 H V C CNN
|
||||
F3 "" 0 500 50 H V C CNN
|
||||
$FPLIST
|
||||
Pin_Header_Straight_1X40
|
||||
Pin_Header_Angled_1X40
|
||||
Socket_Strip_Straight_1X40
|
||||
Socket_Strip_Angled_1X40
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -2500 50 2500 0 1 0 N
|
||||
S -50 -2445 10 -2455 0 1 0 N
|
||||
S -50 -2345 10 -2355 0 1 0 N
|
||||
S -50 -2245 10 -2255 0 1 0 N
|
||||
S -50 -2145 10 -2155 0 1 0 N
|
||||
S -50 -2045 10 -2055 0 1 0 N
|
||||
S -50 -1945 10 -1955 0 1 0 N
|
||||
S -50 -1845 10 -1855 0 1 0 N
|
||||
S -50 -1745 10 -1755 0 1 0 N
|
||||
S -50 -1645 10 -1655 0 1 0 N
|
||||
S -50 -1545 10 -1555 0 1 0 N
|
||||
S -50 -1445 10 -1455 0 1 0 N
|
||||
S -50 -1345 10 -1355 0 1 0 N
|
||||
S -50 -1245 10 -1255 0 1 0 N
|
||||
S -50 -1145 10 -1155 0 1 0 N
|
||||
S -50 -1045 10 -1055 0 1 0 N
|
||||
S -50 -945 10 -955 0 1 0 N
|
||||
S -50 -845 10 -855 0 1 0 N
|
||||
S -50 -745 10 -755 0 1 0 N
|
||||
S -50 -645 10 -655 0 1 0 N
|
||||
S -50 -545 10 -555 0 1 0 N
|
||||
S -50 -445 10 -455 0 1 0 N
|
||||
S -50 -345 10 -355 0 1 0 N
|
||||
S -50 -245 10 -255 0 1 0 N
|
||||
S -50 -145 10 -155 0 1 0 N
|
||||
S -50 -45 10 -55 0 1 0 N
|
||||
S -50 55 10 45 0 1 0 N
|
||||
S -50 155 10 145 0 1 0 N
|
||||
S -50 255 10 245 0 1 0 N
|
||||
S -50 355 10 345 0 1 0 N
|
||||
S -50 455 10 445 0 1 0 N
|
||||
S -50 555 10 545 0 1 0 N
|
||||
S -50 655 10 645 0 1 0 N
|
||||
S -50 755 10 745 0 1 0 N
|
||||
S -50 855 10 845 0 1 0 N
|
||||
S -50 955 10 945 0 1 0 N
|
||||
S -50 1055 10 1045 0 1 0 N
|
||||
S -50 1155 10 1145 0 1 0 N
|
||||
S -50 1255 10 1245 0 1 0 N
|
||||
S -50 1355 10 1345 0 1 0 N
|
||||
S -50 1455 10 1445 0 1 0 N
|
||||
S -50 1555 10 1545 0 1 0 N
|
||||
S -50 1655 10 1645 0 1 0 N
|
||||
S -50 1755 10 1745 0 1 0 N
|
||||
S -50 1855 10 1845 0 1 0 N
|
||||
S -50 1955 10 1945 0 1 0 N
|
||||
S -50 2055 10 2045 0 1 0 N
|
||||
S -50 2155 10 2145 0 1 0 N
|
||||
S -50 2255 10 2245 0 1 0 N
|
||||
S -50 2355 10 2345 0 1 0 N
|
||||
S -50 2455 10 2445 0 1 0 N
|
||||
X P0 0 0 -2700 200 U 50 50 1 1 P
|
||||
X P1 1 -200 2450 150 R 50 50 1 1 P
|
||||
X P10 10 -200 1550 150 R 50 50 1 1 P
|
||||
X P11 11 -200 1450 150 R 50 50 1 1 P
|
||||
X P12 12 -200 1350 150 R 50 50 1 1 P
|
||||
X P13 13 -200 1250 150 R 50 50 1 1 P
|
||||
X P14 14 -200 1150 150 R 50 50 1 1 P
|
||||
X P15 15 -200 1050 150 R 50 50 1 1 P
|
||||
X P16 16 -200 950 150 R 50 50 1 1 P
|
||||
X P17 17 -200 850 150 R 50 50 1 1 P
|
||||
X P18 18 -200 750 150 R 50 50 1 1 P
|
||||
X P19 19 -200 650 150 R 50 50 1 1 P
|
||||
X P2 2 -200 2350 150 R 50 50 1 1 P
|
||||
X P20 20 -200 550 150 R 50 50 1 1 P
|
||||
X P21 21 -200 450 150 R 50 50 1 1 P
|
||||
X P22 22 -200 350 150 R 50 50 1 1 P
|
||||
X P23 23 -200 250 150 R 50 50 1 1 P
|
||||
X P24 24 -200 150 150 R 50 50 1 1 P
|
||||
X P25 25 -200 50 150 R 50 50 1 1 P
|
||||
X P26 26 -200 -50 150 R 50 50 1 1 P
|
||||
X P27 27 -200 -150 150 R 50 50 1 1 P
|
||||
X P28 28 -200 -250 150 R 50 50 1 1 P
|
||||
X P29 29 -200 -350 150 R 50 50 1 1 P
|
||||
X P3 3 -200 2250 150 R 50 50 1 1 P
|
||||
X P30 30 -200 -450 150 R 50 50 1 1 P
|
||||
X P31 31 -200 -550 150 R 50 50 1 1 P
|
||||
X P32 32 -200 -650 150 R 50 50 1 1 P
|
||||
X P33 33 -200 -750 150 R 50 50 1 1 P
|
||||
X P34 34 -200 -850 150 R 50 50 1 1 P
|
||||
X P35 35 -200 -950 150 R 50 50 1 1 P
|
||||
X P36 36 -200 -1050 150 R 50 50 1 1 P
|
||||
X P37 37 -200 -1150 150 R 50 50 1 1 P
|
||||
X P38 38 -200 -1250 150 R 50 50 1 1 P
|
||||
X P39 39 -200 -1350 150 R 50 50 1 1 P
|
||||
X P4 4 -200 2150 150 R 50 50 1 1 P
|
||||
X P40 40 -200 -1450 150 R 50 50 1 1 P
|
||||
X P4 41 -200 -1550 150 R 50 50 1 1 P
|
||||
X P42 42 -200 -1650 150 R 50 50 1 1 P
|
||||
X P43 43 -200 -1750 150 R 50 50 1 1 P
|
||||
X P44 44 -200 -1850 150 R 50 50 1 1 P
|
||||
X P45 45 -200 -1950 150 R 50 50 1 1 P
|
||||
X P46 46 -200 -2050 150 R 50 50 1 1 P
|
||||
X P47 47 -200 -2150 150 R 50 50 1 1 P
|
||||
X P48 48 -200 -2250 150 R 50 50 1 1 P
|
||||
X P49 49 -200 -2350 150 R 50 50 1 1 P
|
||||
X P5 5 -200 2050 150 R 50 50 1 1 P
|
||||
X P50 50 -200 -2450 150 R 50 50 1 1 P
|
||||
X P6 6 -200 1950 150 R 50 50 1 1 P
|
||||
X P7 7 -200 1850 150 R 50 50 1 1 P
|
||||
X P8 8 -200 1750 150 R 50 50 1 1 P
|
||||
X P9 9 -200 1650 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# GND
|
||||
#
|
||||
DEF GND #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -250 50 H I C CNN
|
||||
F1 "GND" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
|
||||
X GND 1 0 0 0 D 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# +3.3V
|
||||
#
|
||||
DEF +3.3V #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -150 50 H I C CNN
|
||||
F1 "+3.3V" 0 140 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 2 0 1 0 -30 50 0 100 N
|
||||
P 2 0 1 0 0 0 0 100 N
|
||||
P 2 0 1 0 0 100 30 50 N
|
||||
X +3V3 1 0 0 0 U 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# C_Small
|
||||
#
|
||||
DEF C_Small C 0 10 N N 1 F N
|
||||
F0 "C" 10 70 50 H V L CNN
|
||||
F1 "C_Small" 10 -80 50 H V L CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
C?
|
||||
C_????_*
|
||||
C_????
|
||||
SMD*_c
|
||||
Capacitor*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 13 -60 -20 60 -20 N
|
||||
P 2 0 1 12 -60 20 60 20 N
|
||||
X ~ 1 0 100 75 D 40 40 1 1 P
|
||||
X ~ 2 0 -100 80 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# R_Small
|
||||
#
|
||||
DEF R_Small R 0 10 N N 1 F N
|
||||
F0 "R" 30 20 50 H V L CNN
|
||||
F1 "R_Small" 30 -40 50 H V L CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
Resistor_*
|
||||
R_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -30 70 30 -70 0 1 8 N
|
||||
X ~ 1 0 100 30 D 40 40 1 1 P
|
||||
X ~ 2 0 -100 30 U 40 40 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# BH10S
|
||||
#
|
||||
DEF BH10S CON 0 40 Y N 1 F N
|
||||
F0 "CON" 2 351 60 H V C CNN
|
||||
F1 "BH10S" 12 -371 60 H V C CNN
|
||||
F2 "" -8 -47 60 H V C CNN
|
||||
F3 "" -8 -47 60 H V C CNN
|
||||
DRAW
|
||||
S -123 -191 -22 -209 0 0 0 N
|
||||
S -123 -92 -22 -110 0 0 0 N
|
||||
S -122 10 -21 -8 0 0 0 N
|
||||
S -121 109 -20 91 0 0 0 N
|
||||
S -120 210 -19 192 0 0 0 N
|
||||
S 20 -91 121 -109 0 0 0 N
|
||||
S 20 9 121 -9 0 0 0 N
|
||||
S 21 109 122 91 0 0 0 N
|
||||
S 22 -191 123 -209 0 0 0 N
|
||||
S 22 210 123 192 0 0 0 N
|
||||
S -150 300 150 -300 0 1 10 N
|
||||
P 8 0 0 0 -119 -197 -23 -197 -23 -206 -118 -207 -119 -200 -28 -200 -28 -203 -118 -201 N
|
||||
P 8 0 0 0 -119 4 -23 4 -23 -5 -118 -6 -119 1 -28 1 -28 -2 -118 0 N
|
||||
P 8 0 0 0 -118 -97 -22 -97 -22 -106 -117 -107 -118 -100 -27 -100 -27 -103 -117 -101 N
|
||||
P 8 0 0 0 -117 105 -21 105 -21 96 -116 95 -117 102 -26 102 -26 99 -116 101 N
|
||||
P 8 0 0 0 -116 206 -20 206 -20 197 -115 196 -116 203 -25 203 -25 200 -115 202 N
|
||||
P 8 0 0 0 22 4 118 4 118 -5 23 -6 22 1 113 1 113 -2 23 0 N
|
||||
P 8 0 0 0 23 -96 119 -96 119 -105 24 -106 23 -99 114 -99 114 -102 24 -100 N
|
||||
P 8 0 0 0 23 105 119 105 119 96 24 95 23 102 114 102 114 99 24 101 N
|
||||
P 8 0 0 0 25 -195 121 -195 121 -204 26 -205 25 -198 116 -198 116 -201 26 -199 N
|
||||
P 8 0 0 0 27 206 123 206 123 197 28 196 27 203 118 203 118 200 28 202 N
|
||||
P 2 0 1 0 -150 -200 -120 -200 N
|
||||
P 2 0 1 0 -150 -100 -120 -100 N
|
||||
P 2 0 1 0 -150 0 -120 0 N
|
||||
P 2 0 1 0 -150 100 -120 100 N
|
||||
P 2 0 1 0 -150 200 -120 200 N
|
||||
P 2 0 1 0 150 -200 120 -200 N
|
||||
P 2 0 1 0 150 -100 120 -100 N
|
||||
P 2 0 1 0 150 0 120 0 N
|
||||
P 2 0 1 0 150 100 120 100 N
|
||||
P 2 0 1 0 150 200 120 200 N
|
||||
X 1 1 -300 200 146 R 50 50 1 1 P
|
||||
X 10 10 300 -200 146 L 50 50 1 1 P
|
||||
X 2 2 300 200 146 L 50 50 1 1 P
|
||||
X 3 3 -300 100 146 R 50 50 1 1 P
|
||||
X 4 4 300 100 146 L 50 50 1 1 P
|
||||
X 5 5 -300 0 146 R 50 50 1 1 P
|
||||
X 6 6 300 0 146 L 50 50 1 1 P
|
||||
X 7 7 -300 -100 146 R 50 50 1 1 P
|
||||
X 8 8 300 -100 146 L 50 50 1 1 P
|
||||
X 9 9 -300 -200 146 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# N-MOS+DIOD_Small
|
||||
#
|
||||
DEF N-MOS+DIOD_Small FET 0 0 Y N 1 F N
|
||||
F0 "FET" 0 150 60 H V C CNN
|
||||
F1 "N-MOS+DIOD_Small" 0 -200 60 H V C CNN
|
||||
F2 "" 0 0 60 V V C CNN
|
||||
F3 "" 0 0 60 V V C CNN
|
||||
DRAW
|
||||
T 900 22 70 25 0 0 0 D Normal 0 C C
|
||||
T 900 -35 -1 16 0 0 0 N-MOS Normal 0 C C
|
||||
T 900 23 -74 25 0 0 0 S Normal 0 C C
|
||||
T 0 -85 -3 25 0 1 0 G Normal 0 C C
|
||||
C 0 0 100 0 1 0 N
|
||||
C 35 -50 5 0 1 10 N
|
||||
C 65 -50 5 0 1 10 N
|
||||
C 65 50 5 0 1 10 N
|
||||
P 2 0 1 10 -100 -50 -60 -50 N
|
||||
P 2 0 1 20 -60 -45 -60 45 N
|
||||
P 2 0 1 20 -10 -75 -10 75 N
|
||||
P 2 0 1 0 5 0 25 -15 N
|
||||
P 2 0 1 0 65 -20 50 -20 N
|
||||
P 2 0 1 0 65 15 65 50 N
|
||||
P 2 0 1 10 100 -50 0 -50 N
|
||||
P 2 0 1 10 100 50 0 50 N
|
||||
P 3 0 1 0 50 -15 65 25 80 -20 N
|
||||
P 3 0 1 0 65 -50 65 -20 80 -20 N
|
||||
P 3 0 1 0 80 20 65 20 50 20 N
|
||||
P 4 0 1 0 35 -50 35 0 5 0 25 15 N
|
||||
X G 1 -150 -50 50 R 50 50 1 1 I
|
||||
X S 2 200 -50 100 L 50 50 1 1 P
|
||||
X D 3 200 50 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# PWR_FLAG
|
||||
#
|
||||
DEF PWR_FLAG #FLG 0 0 N N 1 F P
|
||||
F0 "#FLG" 0 95 50 H I C CNN
|
||||
F1 "PWR_FLAG" 0 180 50 H V C CNN
|
||||
F2 "" 0 0 60 H V C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 50 -75 100 0 150 75 100 0 50 N
|
||||
X pwr 1 0 0 0 U 20 20 0 0 w
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# AR1021T-I_SS(SSOP-20)
|
||||
#
|
||||
DEF AR1021T-I_SS(SSOP-20) U 0 40 Y Y 1 F N
|
||||
F0 "U" 0 600 50 H V C CNN
|
||||
F1 "AR1021T-I_SS(SSOP-20)" 0 -700 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
S -300 500 300 -600 0 1 0 f
|
||||
X VDD 1 -400 400 98 R 40 40 1 1 W
|
||||
X NC 10 -400 -500 98 R 40 40 1 1 N
|
||||
X SCK/SCL/TX 11 400 -500 98 L 40 40 1 1 B
|
||||
X NC 12 400 -400 98 L 40 40 1 1 N
|
||||
X SDI/SDA/RX 13 400 -300 98 L 40 40 1 1 B
|
||||
X SX+ 14 400 -200 98 L 40 40 1 1 I
|
||||
X Y+ 15 400 -100 98 L 40 40 1 1 O
|
||||
X Y- 16 400 0 98 L 40 40 1 1 O
|
||||
X 5WSX- 17 400 100 98 L 40 40 1 1 I
|
||||
X X+ 18 400 200 98 L 40 40 1 1 O
|
||||
X X- 19 400 300 98 L 40 40 1 1 O
|
||||
X M1 2 -400 300 98 R 40 40 1 1 I
|
||||
X VSS 20 400 400 98 L 40 40 1 1 W
|
||||
X SY- 3 -400 200 98 R 40 40 1 1 I
|
||||
X M2 4 -400 100 98 R 40 40 1 1 I
|
||||
X WAKE 5 -400 0 98 R 40 40 1 1 I
|
||||
X SIQ 6 -400 -100 98 R 40 40 1 1 O
|
||||
X SY+ 7 -400 -200 98 R 40 40 1 1 I
|
||||
X SS 8 -400 -300 98 R 40 40 1 1 I
|
||||
X SDO/I2C_IRQ 9 -400 -400 98 R 40 40 1 1 O
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# CON12
|
||||
#
|
||||
DEF CON12 CON 0 40 Y Y 1 F N
|
||||
F0 "CON" -50 600 60 H V C CNN
|
||||
F1 "CON12" 0 -700 60 H V C CNN
|
||||
F2 "" -75 450 60 H V C CNN
|
||||
F3 "" -75 450 60 H V C CNN
|
||||
DRAW
|
||||
S -104 -606 -34 -592 0 0 0 N
|
||||
S -104 -506 -34 -492 0 0 0 N
|
||||
S -104 -406 -34 -392 0 0 0 N
|
||||
S -104 -206 -34 -192 0 0 0 N
|
||||
S -104 -106 -34 -92 0 0 0 N
|
||||
S -104 -6 -34 8 0 0 0 N
|
||||
S -104 94 -34 108 0 0 0 N
|
||||
S -104 194 -34 208 0 0 0 N
|
||||
S -104 294 -34 308 0 0 0 N
|
||||
S -104 394 -34 408 0 0 0 N
|
||||
S -103 -602 -38 -598 0 0 0 N
|
||||
S -103 -502 -38 -498 0 0 0 N
|
||||
S -103 -402 -38 -398 0 0 0 N
|
||||
S -103 -306 -33 -292 0 0 0 N
|
||||
S -103 -202 -38 -198 0 0 0 N
|
||||
S -103 -102 -38 -98 0 0 0 N
|
||||
S -103 -2 -38 2 0 0 0 N
|
||||
S -103 98 -38 102 0 0 0 N
|
||||
S -103 198 -38 202 0 0 0 N
|
||||
S -103 298 -38 302 0 0 0 N
|
||||
S -103 398 -38 402 0 0 0 N
|
||||
S -103 494 -33 508 0 0 0 N
|
||||
S -102 -301 -37 -297 0 0 0 N
|
||||
S -102 499 -37 503 0 0 0 N
|
||||
S -38 -595 -104 -603 0 0 0 N
|
||||
S -38 -495 -104 -503 0 0 0 N
|
||||
S -38 -395 -104 -403 0 0 0 N
|
||||
S -38 -195 -104 -203 0 0 0 N
|
||||
S -38 -95 -104 -103 0 0 0 N
|
||||
S -38 5 -104 -3 0 0 0 N
|
||||
S -38 105 -104 97 0 0 0 N
|
||||
S -38 205 -104 197 0 0 0 N
|
||||
S -38 305 -104 297 0 0 0 N
|
||||
S -38 405 -104 397 0 0 0 N
|
||||
S -34 -296 -100 -304 0 0 0 N
|
||||
S -34 504 -100 496 0 0 0 N
|
||||
S -29 -588 -105 -610 0 0 0 N
|
||||
S -29 -488 -105 -510 0 0 0 N
|
||||
S -29 -388 -105 -410 0 0 0 N
|
||||
S -29 -288 -105 -310 0 0 0 N
|
||||
S -29 -188 -105 -210 0 0 0 N
|
||||
S -29 -88 -105 -110 0 0 0 N
|
||||
S -29 12 -105 -10 0 0 0 N
|
||||
S -29 112 -105 90 0 0 0 N
|
||||
S -29 212 -105 190 0 0 0 N
|
||||
S -29 312 -105 290 0 0 0 N
|
||||
S -29 412 -105 390 0 0 0 N
|
||||
S -29 512 -105 490 0 0 0 N
|
||||
S 0 550 -150 -650 0 1 10 N
|
||||
P 2 0 0 0 0 -600 -30 -600 N
|
||||
P 2 0 0 0 0 -500 -30 -500 N
|
||||
P 2 0 0 0 0 -400 -30 -400 N
|
||||
P 2 0 0 0 0 -300 -30 -300 N
|
||||
P 2 0 0 0 0 -200 -30 -200 N
|
||||
P 2 0 0 0 0 -100 -30 -100 N
|
||||
P 2 0 0 0 0 0 -30 0 N
|
||||
P 2 0 0 0 0 100 -30 100 N
|
||||
P 2 0 0 0 0 200 -30 200 N
|
||||
P 2 0 0 0 0 300 -30 300 N
|
||||
P 2 0 0 0 0 400 -30 400 N
|
||||
P 2 0 0 0 0 500 -30 500 N
|
||||
X ~ 1 100 500 100 L 50 50 1 1 P
|
||||
X ~ 10 100 -400 100 L 50 50 1 1 P
|
||||
X ~ 11 100 -500 100 L 50 50 1 1 P
|
||||
X ~ 12 100 -600 100 L 50 50 1 1 P
|
||||
X ~ 2 100 400 100 L 50 50 1 1 P
|
||||
X ~ 3 100 300 100 L 50 50 1 1 P
|
||||
X ~ 4 100 200 100 L 50 50 1 1 P
|
||||
X ~ 5 100 100 100 L 50 50 1 1 P
|
||||
X ~ 6 100 0 100 L 50 50 1 1 P
|
||||
X ~ 7 100 -100 100 L 50 50 1 1 P
|
||||
X ~ 8 100 -200 100 L 50 50 1 1 P
|
||||
X ~ 9 100 -300 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# SJ2W_Closed(1-2)
|
||||
#
|
||||
DEF SJ2W_Closed(1-2) SJ 0 40 Y N 1 F N
|
||||
F0 "SJ" 100 15 50 H V L BNN
|
||||
F1 "SJ2W_Closed(1-2)" 100 -75 50 H V L BNN
|
||||
F2 "" 30 150 20 H I C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
*SJ_2*
|
||||
*SJ_2_SMALL*
|
||||
*SJ_2_SMALLER*
|
||||
*SJ_2_SMALL_23_TIED*
|
||||
*SJ_2_SMALL_12_TIED*
|
||||
*SJ_2_SMALLER_12_TIED*
|
||||
*SJ_2_SMALLER_23_TIED*
|
||||
*SJ_2W*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 1 0 0 -100 0 -50 0 N
|
||||
P 2 1 0 0 -50 -25 -50 0 N
|
||||
P 2 1 0 0 -50 0 -50 25 N
|
||||
P 2 1 0 0 -50 25 50 25 N
|
||||
P 2 1 0 0 50 -25 -50 -25 N
|
||||
P 2 1 0 0 50 25 50 -25 N
|
||||
P 2 0 1 30 0 75 0 0 N
|
||||
A 0 -51 50 -46 -1754 1 1 10 F 50 -55 -50 -55
|
||||
A 0 51 50 1754 46 1 1 10 F -50 55 50 55
|
||||
S -50 -25 50 25 1 1 0 F
|
||||
P 2 1 1 10 -46 54 45 54 N
|
||||
P 2 1 1 10 -45 -55 45 -55 N
|
||||
X 1 1 0 200 100 D 40 20 1 1 P
|
||||
X 2 2 -200 0 100 R 40 20 1 1 P
|
||||
X 3 3 0 -200 100 U 40 20 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# SJ_Closed
|
||||
#
|
||||
DEF SJ_Closed SJ 0 40 Y N 1 F N
|
||||
F0 "SJ" -50 75 50 H V L BNN
|
||||
F1 "SJ_Closed" -200 -100 50 H V L BNN
|
||||
F2 "jumper_SJ" 8 62 20 H I C CNN
|
||||
F3 "" 0 0 60 H V C CNN
|
||||
$FPLIST
|
||||
*SJ*
|
||||
*SJ-CLOSE*
|
||||
*SJ_1_SMALLER_CLOSE*
|
||||
*SJ_1_SMALLER_CLOSE_10MILS*
|
||||
*SJ_1_THE_SMALLEST*
|
||||
*SJ_1_SMALLER*
|
||||
*SJW*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
A -20 0 30 901 -901 0 1 10 N -20 30 -20 -30
|
||||
A 20 0 30 900 0 0 1 10 N 20 30 50 0
|
||||
A 20 0 30 -900 0 0 1 10 N 20 -30 50 0
|
||||
P 2 0 1 10 -45 15 -45 -10 N
|
||||
P 2 0 1 10 -40 20 -40 -20 N
|
||||
P 2 0 1 10 -35 20 -35 -20 N
|
||||
P 2 0 1 10 -30 25 -30 -25 N
|
||||
P 2 0 1 20 -25 0 25 0 N
|
||||
P 2 0 1 10 -25 30 -25 -25 N
|
||||
P 2 0 1 10 -20 30 -20 -30 N
|
||||
P 2 0 1 10 20 30 20 -30 N
|
||||
P 2 0 1 10 25 30 25 -25 N
|
||||
P 2 0 1 10 30 25 30 -25 N
|
||||
P 2 0 1 10 35 20 35 -20 N
|
||||
P 2 0 1 10 40 20 40 -15 N
|
||||
P 2 0 1 10 45 15 45 -15 N
|
||||
X 1 1 -100 0 50 R 40 20 1 1 P
|
||||
X 2 2 100 0 50 L 40 20 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
||||
BIN
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.pdf
Normal file
BIN
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.pdf
Normal file
Binary file not shown.
40
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.pro
Normal file
40
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.pro
Normal file
@ -0,0 +1,40 @@
|
||||
update=19.06.2018 (вт) 15:06:22 EEST
|
||||
version=1
|
||||
last_client=kicad
|
||||
[pcbnew]
|
||||
version=1
|
||||
LastNetListRead=
|
||||
UseCmpFile=1
|
||||
PadDrill=0.600000000000
|
||||
PadDrillOvalY=0.600000000000
|
||||
PadSizeH=1.500000000000
|
||||
PadSizeV=1.500000000000
|
||||
PcbTextSizeV=1.500000000000
|
||||
PcbTextSizeH=1.500000000000
|
||||
PcbTextThickness=0.300000000000
|
||||
ModuleTextSizeV=1.000000000000
|
||||
ModuleTextSizeH=1.000000000000
|
||||
ModuleTextSizeThickness=0.150000000000
|
||||
SolderMaskClearance=0.000000000000
|
||||
SolderMaskMinWidth=0.000000000000
|
||||
DrawSegmentWidth=0.200000000000
|
||||
BoardOutlineThickness=0.100000000000
|
||||
ModuleOutlineThickness=0.150000000000
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[general]
|
||||
version=1
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=./
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
||||
1208
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.sch
Normal file
1208
HARDWARE/SCHEMATICS/MOD-LCD2.8RTP_RevB.sch
Normal file
File diff suppressed because it is too large
Load Diff
4
HARDWARE/SCHEMATICS/sym-lib-table
Normal file
4
HARDWARE/SCHEMATICS/sym-lib-table
Normal file
@ -0,0 +1,4 @@
|
||||
(sym_lib_table
|
||||
(lib (name MOD-LCD2.8RTP)(type Legacy)(uri ${KIPRJMOD}/MOD-LCD2.8RTP.lib)(options "")(descr ""))
|
||||
(lib (name MOD-LCD2.8RTP_RevB-rescue)(type Legacy)(uri ${KIPRJMOD}/MOD-LCD2.8RTP_RevB-rescue.lib)(options "")(descr ""))
|
||||
)
|
||||
12
SOFTWARE/Arduino/graphicstest_olimex/Adafruit_ILI9341.patch
Normal file
12
SOFTWARE/Arduino/graphicstest_olimex/Adafruit_ILI9341.patch
Normal file
@ -0,0 +1,12 @@
|
||||
--- Adafruit_ILI9341/Adafruit_ILI9341.cpp
|
||||
+++ Adafruit_ILI9341/Adafruit_ILI9341.cpp
|
||||
@@ -256,6 +256,8 @@
|
||||
// Hardware SPI
|
||||
SPI_BEGIN();
|
||||
|
||||
+ pinMode(_dc, OUTPUT); // patched for ESP32-EVB by Olimex
|
||||
+
|
||||
// toggle RST low to reset
|
||||
if (_rst >= 0) {
|
||||
pinMode(_rst, OUTPUT);
|
||||
|
||||
239
SOFTWARE/Arduino/graphicstest_olimex/graphicstest_olimex.ino
Normal file
239
SOFTWARE/Arduino/graphicstest_olimex/graphicstest_olimex.ino
Normal file
@ -0,0 +1,239 @@
|
||||
/***************************************************
|
||||
This is our GFX example for the Adafruit ILI9341 Breakout and Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
|
||||
#include "SPI.h"
|
||||
#include "Adafruit_GFX.h"
|
||||
#include "Adafruit_ILI9341.h"
|
||||
#include "Wire.h"
|
||||
#include <Adafruit_STMPE610.h>
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 290
|
||||
#define TS_MINY 285
|
||||
#define TS_MAXX 7520
|
||||
#define TS_MAXY 7510
|
||||
#define TS_I2C_ADDRESS 0x4d
|
||||
|
||||
/*
|
||||
// This is pinouts for ESP32-EVB
|
||||
#define TFT_DC 15
|
||||
#define TFT_CS 17
|
||||
#define TFT_MOSI 2
|
||||
#define TFT_MISO 15
|
||||
#define TFT_CLK 14
|
||||
//#define TFT_RST 33 */
|
||||
|
||||
// This is pinouts for Olimexino 2560
|
||||
// Cut jumper SJ3
|
||||
// If display is connected to UEXT Connect p34 to p50 with a wire !!!
|
||||
|
||||
#define TFT_DC 34
|
||||
#define TFT_CS 53
|
||||
#define TFT_MOSI 51
|
||||
#define TFT_MISO 50
|
||||
#define TFT_CLK 52
|
||||
#define TFT_BKL 0
|
||||
|
||||
|
||||
Adafruit_STMPE610 ts = Adafruit_STMPE610();
|
||||
|
||||
|
||||
|
||||
// Size of the color selection boxes and the paintbrush size
|
||||
#define BOXSIZE 40
|
||||
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
uint8_t tp[5];
|
||||
|
||||
void setup() {
|
||||
// Power Up UEXT
|
||||
// pinMode(LED_BUILTIN, OUTPUT);
|
||||
// digitalWrite(LED_BUILTIN, HIGH);
|
||||
delay(1000);
|
||||
// digitalWrite(LED_BUILTIN, LOW);
|
||||
// delay(500);
|
||||
Serial.begin(115200);
|
||||
Serial.println("ILI9341 Test!");
|
||||
tft.begin();
|
||||
pinMode(TFT_DC, OUTPUT);
|
||||
|
||||
pinMode(TFT_BKL, OUTPUT);
|
||||
digitalWrite(TFT_BKL, 0);
|
||||
// Wire.begin();
|
||||
Wire.begin();
|
||||
|
||||
// read diagnostics (optional but can help debug problems)
|
||||
//uint8_t x = tft.readcommand8(ILI9341_RDMODE);
|
||||
delay(1000);
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
Serial.println("Touchscreen cleaned");
|
||||
// make the color selection boxes
|
||||
|
||||
ts.begin(TS_I2C_ADDRESS);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop(void) {
|
||||
|
||||
// This is just a draw some data Demo
|
||||
|
||||
// Clear Screen
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
// Set some fancy background
|
||||
testFastLines(ILI9341_DARKGREY,ILI9341_DARKCYAN);
|
||||
|
||||
// Print "current date and time"
|
||||
tft.setCursor(5,5);
|
||||
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);
|
||||
tft.println("29-05-18 11:28"); //TODO: Print the real date and time
|
||||
|
||||
|
||||
// Print "room temperature"
|
||||
tft.setCursor(85,50);
|
||||
tft.setTextColor(ILI9341_GREEN); tft.setTextSize(4);
|
||||
tft.println("22");//TODO: Print the real room temperature
|
||||
tft.setCursor(148,50);
|
||||
tft.println("C");
|
||||
tft.drawCircle(138, 54, 4, ILI9341_GREEN);
|
||||
tft.drawCircle(138, 54, 5, ILI9341_GREEN);
|
||||
tft.setCursor(78,85);
|
||||
tft.setTextColor(ILI9341_GREEN); tft.setTextSize(1);
|
||||
tft.println("ROOM TEMPERATURE");
|
||||
|
||||
|
||||
// Now print Message box wit two yes/no buttons
|
||||
tft.fillRoundRect(10,120, 220, 190, 8, ILI9341_OLIVE);
|
||||
tft.drawRoundRect(10,120, 220, 190, 8, ILI9341_WHITE);
|
||||
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);
|
||||
tft.fillRoundRect(20,150, 200, 80,8, ILI9341_BLUE);
|
||||
tft.setCursor(90, 165);
|
||||
tft.println("Save");
|
||||
tft.setCursor(40, 190);
|
||||
tft.println("new settings?");
|
||||
tft.drawRoundRect(20,150, 200, 80, 8, ILI9341_WHITE);
|
||||
// Get the choise
|
||||
bool answer = Get_yes_no();
|
||||
|
||||
if (answer == true)
|
||||
{
|
||||
// Some animation while "write to eeprom"
|
||||
testFilledRects(ILI9341_DARKGREEN,ILI9341_DARKCYAN);
|
||||
tft.setCursor(80, 150);
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(3);
|
||||
tft.println("Done!");
|
||||
} else tft.fillScreen(ILI9341_RED);
|
||||
// fill screen red to show negative choise
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start;
|
||||
int x, y, w = tft.width(), h = tft.height();
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
|
||||
for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start, t = 0;
|
||||
int n, i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(tft.width(), tft.height());
|
||||
for(i=n; i>0; i-=6) {
|
||||
i2 = i / 2;
|
||||
start = micros();
|
||||
tft.fillRect(cx-i2, cy-i2, i, i, color1);
|
||||
t += micros() - start;
|
||||
// Outlines are not included in timing results
|
||||
tft.drawRect(cx-i2, cy-i2, i, i, color2);
|
||||
yield();
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
bool Get_yes_no(void){
|
||||
TS_Point p;
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(3);
|
||||
|
||||
tft.fillRoundRect(20,250, 100, 50,8, ILI9341_RED);
|
||||
tft.setCursor(56, 265);
|
||||
tft.println("NO");
|
||||
tft.drawRoundRect(20,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
tft.fillRoundRect(120,250, 100, 50,8, ILI9341_GREEN);
|
||||
tft.setCursor(144, 265);
|
||||
tft.println("YES");
|
||||
tft.drawRoundRect(120,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
|
||||
while (1){
|
||||
delay(50);
|
||||
p = ts.getPoint();
|
||||
|
||||
if (p.z != 129){
|
||||
|
||||
|
||||
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
p.y = 320 - p.y;
|
||||
|
||||
// tft.fillCircle(p.x, p.y, 5, ILI9341_YELLOW);
|
||||
|
||||
|
||||
if ((p.y > 250) && (p.y<300)){
|
||||
|
||||
if ((p.x> 20) && (p.x < 220))
|
||||
if (p.x>120)
|
||||
{
|
||||
tft.fillRoundRect(120,250, 100, 50,8, ILI9341_OLIVE);
|
||||
tft.setCursor(144, 265);
|
||||
tft.println("YES");
|
||||
tft.drawRoundRect(120,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
delay(500);
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
|
||||
tft.fillRoundRect(20,250, 100, 50,8, ILI9341_OLIVE);
|
||||
tft.setCursor(56, 265);
|
||||
tft.println("NO");
|
||||
tft.drawRoundRect(20,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
delay(500);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
4
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/.gitignore
vendored
Normal file
4
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
.pioenvs
|
||||
.piolibdeps
|
||||
.clang_complete
|
||||
.gcc-flags.json
|
||||
67
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/.travis.yml
Normal file
67
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/.travis.yml
Normal file
@ -0,0 +1,67 @@
|
||||
# Continuous Integration (CI) is the practice, in software
|
||||
# engineering, of merging all developer working copies with a shared mainline
|
||||
# several times a day < http://docs.platformio.org/page/ci/index.html >
|
||||
#
|
||||
# Documentation:
|
||||
#
|
||||
# * Travis CI Embedded Builds with PlatformIO
|
||||
# < https://docs.travis-ci.com/user/integration/platformio/ >
|
||||
#
|
||||
# * PlatformIO integration with Travis CI
|
||||
# < http://docs.platformio.org/page/ci/travis.html >
|
||||
#
|
||||
# * User Guide for `platformio ci` command
|
||||
# < http://docs.platformio.org/page/userguide/cmd_ci.html >
|
||||
#
|
||||
#
|
||||
# Please choice one of the following templates (proposed below) and uncomment
|
||||
# it (remove "# " before each line) or use own configuration according to the
|
||||
# Travis CI documentation (see above).
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# Template #1: General project. Test it using existing `platformio.ini`.
|
||||
#
|
||||
|
||||
# language: python
|
||||
# python:
|
||||
# - "2.7"
|
||||
#
|
||||
# sudo: false
|
||||
# cache:
|
||||
# directories:
|
||||
# - "~/.platformio"
|
||||
#
|
||||
# install:
|
||||
# - pip install -U platformio
|
||||
# - platformio update
|
||||
#
|
||||
# script:
|
||||
# - platformio run
|
||||
|
||||
|
||||
#
|
||||
# Template #2: The project is intended to by used as a library with examples
|
||||
#
|
||||
|
||||
# language: python
|
||||
# python:
|
||||
# - "2.7"
|
||||
#
|
||||
# sudo: false
|
||||
# cache:
|
||||
# directories:
|
||||
# - "~/.platformio"
|
||||
#
|
||||
# env:
|
||||
# - PLATFORMIO_CI_SRC=path/to/test/file.c
|
||||
# - PLATFORMIO_CI_SRC=examples/file.ino
|
||||
# - PLATFORMIO_CI_SRC=path/to/test/directory
|
||||
#
|
||||
# install:
|
||||
# - pip install -U platformio
|
||||
# - platformio update
|
||||
#
|
||||
# script:
|
||||
# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N
|
||||
46
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/.github/ISSUE_TEMPLATE.md
vendored
Normal file
46
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
Thank you for opening an issue on an Adafruit Arduino library repository. To
|
||||
improve the speed of resolution please review the following guidelines and
|
||||
common troubleshooting steps below before creating the issue:
|
||||
|
||||
- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use
|
||||
the forums at http://forums.adafruit.com to ask questions and troubleshoot why
|
||||
something isn't working as expected. In many cases the problem is a common issue
|
||||
that you will more quickly receive help from the forum community. GitHub issues
|
||||
are meant for known defects in the code. If you don't know if there is a defect
|
||||
in the code then start with troubleshooting on the forum first.
|
||||
|
||||
- **If following a tutorial or guide be sure you didn't miss a step.** Carefully
|
||||
check all of the steps and commands to run have been followed. Consult the
|
||||
forum if you're unsure or have questions about steps in a guide/tutorial.
|
||||
|
||||
- **For Arduino projects check these very common issues to ensure they don't apply**:
|
||||
|
||||
- For uploading sketches or communicating with the board make sure you're using
|
||||
a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes
|
||||
very hard to tell the difference between a data and charge cable! Try using the
|
||||
cable with other devices or swapping to another cable to confirm it is not
|
||||
the problem.
|
||||
|
||||
- **Be sure you are supplying adequate power to the board.** Check the specs of
|
||||
your board and plug in an external power supply. In many cases just
|
||||
plugging a board into your computer is not enough to power it and other
|
||||
peripherals.
|
||||
|
||||
- **Double check all soldering joints and connections.** Flakey connections
|
||||
cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints.
|
||||
|
||||
- **Ensure you are using an official Arduino or Adafruit board.** We can't
|
||||
guarantee a clone board will have the same functionality and work as expected
|
||||
with this code and don't support them.
|
||||
|
||||
If you're sure this issue is a defect in the code and checked the steps above
|
||||
please fill in the following fields to provide enough troubleshooting information.
|
||||
You may delete the guideline and text above to just leave the following details:
|
||||
|
||||
- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE**
|
||||
|
||||
- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO
|
||||
VERSION HERE**
|
||||
|
||||
- List the steps to reproduce the problem below (if possible attach a sketch or
|
||||
copy the sketch code in too): **LIST REPRO STEPS BELOW**
|
||||
26
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
26
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
Thank you for creating a pull request to contribute to Adafruit's GitHub code!
|
||||
Before you open the request please review the following guidelines and tips to
|
||||
help it be more easily integrated:
|
||||
|
||||
- **Describe the scope of your change--i.e. what the change does and what parts
|
||||
of the code were modified.** This will help us understand any risks of integrating
|
||||
the code.
|
||||
|
||||
- **Describe any known limitations with your change.** For example if the change
|
||||
doesn't apply to a supported platform of the library please mention it.
|
||||
|
||||
- **Please run any tests or examples that can exercise your modified code.** We
|
||||
strive to not break users of the code and running tests/examples helps with this
|
||||
process.
|
||||
|
||||
Thank you again for contributing! We will try to test and integrate the change
|
||||
as soon as we can, but be aware we have many GitHub repositories to manage and
|
||||
can't immediately respond to every request. There is no need to bump or check in
|
||||
on a pull request (it will clutter the discussion of the request).
|
||||
|
||||
Also don't be worried if the request is closed or not integrated--sometimes the
|
||||
priorities of Adafruit's GitHub code (education, ease of use) might not match the
|
||||
priorities of the pull request. Don't fret, the open source community thrives on
|
||||
forks and GitHub makes it easy to keep your changes in a forked repo.
|
||||
|
||||
After reviewing the guidelines above you can delete this text from the pull request.
|
||||
@ -0,0 +1,46 @@
|
||||
{
|
||||
"description": "Arduino library for STMPE610/811 resistive touch screen controllers",
|
||||
"repository": {
|
||||
"url": "https://github.com/adafruit/Adafruit_STMPE610",
|
||||
"type": "git"
|
||||
},
|
||||
"platforms": [
|
||||
"atmelavr",
|
||||
"atmelsam",
|
||||
"espressif8266",
|
||||
"intel_arc32",
|
||||
"microchippic32",
|
||||
"nordicnrf51",
|
||||
"teensy",
|
||||
"timsp430"
|
||||
],
|
||||
"export": {
|
||||
"exclude": [
|
||||
"extras",
|
||||
"docs",
|
||||
"tests",
|
||||
"test",
|
||||
"*.doxyfile",
|
||||
"*.pdf"
|
||||
],
|
||||
"include": null
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
"maintainer": true,
|
||||
"name": "Adafruit",
|
||||
"url": null,
|
||||
"email": "info@adafruit.com"
|
||||
}
|
||||
],
|
||||
"keywords": [
|
||||
"display"
|
||||
],
|
||||
"id": 377,
|
||||
"name": "Adafruit STMPE610",
|
||||
"frameworks": [
|
||||
"arduino"
|
||||
],
|
||||
"version": "1.0.1",
|
||||
"homepage": null
|
||||
}
|
||||
358
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/Adafruit_STMPE610.cpp
Normal file
358
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/Adafruit_STMPE610.cpp
Normal file
@ -0,0 +1,358 @@
|
||||
/***************************************************
|
||||
This is a library for the Adafruit STMPE610 Resistive
|
||||
touch screen controller breakout
|
||||
----> http://www.adafruit.com/products/1571
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These breakouts use SPI or I2C to communicate
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#include <Wire.h>
|
||||
#include <SPI.h>
|
||||
|
||||
#include "Adafruit_STMPE610.h"
|
||||
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
// SPI transaction support allows managing SPI settings and prevents
|
||||
// conflicts between libraries, with a hardware-neutral interface
|
||||
static SPISettings mySPISettings;
|
||||
#elif defined (__AVR__)
|
||||
static uint8_t SPCRbackup;
|
||||
static uint8_t mySPCR;
|
||||
#endif
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Instantiates a new STMPE610 class
|
||||
*/
|
||||
/**************************************************************************/
|
||||
// software SPI
|
||||
Adafruit_STMPE610::Adafruit_STMPE610(uint8_t cspin, uint8_t mosipin, uint8_t misopin, uint8_t clkpin) {
|
||||
_CS = cspin;
|
||||
_MOSI = mosipin;
|
||||
_MISO = misopin;
|
||||
_CLK = clkpin;
|
||||
}
|
||||
|
||||
// hardware SPI
|
||||
Adafruit_STMPE610::Adafruit_STMPE610(uint8_t cspin) {
|
||||
_CS = cspin;
|
||||
_MOSI = _MISO = _CLK = -1;
|
||||
}
|
||||
|
||||
// I2C
|
||||
Adafruit_STMPE610::Adafruit_STMPE610() {
|
||||
// use i2c
|
||||
_CS = -1;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/*!
|
||||
@brief Setups the HW
|
||||
*/
|
||||
/**************************************************************************/
|
||||
boolean Adafruit_STMPE610::begin(uint8_t i2caddr) {
|
||||
if (_CS != -1 && _CLK == -1) {
|
||||
// hardware SPI
|
||||
pinMode(_CS, OUTPUT);
|
||||
digitalWrite(_CS, HIGH);
|
||||
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
SPI.begin();
|
||||
mySPISettings = SPISettings(1000000, MSBFIRST, SPI_MODE0);
|
||||
#elif defined (__AVR__)
|
||||
SPCRbackup = SPCR;
|
||||
SPI.begin();
|
||||
SPI.setClockDivider(SPI_CLOCK_DIV16);
|
||||
SPI.setDataMode(SPI_MODE0);
|
||||
mySPCR = SPCR; // save our preferred state
|
||||
//Serial.print("mySPCR = 0x"); Serial.println(SPCR, HEX);
|
||||
SPCR = SPCRbackup; // then restore
|
||||
#elif defined (__arm__)
|
||||
SPI.begin();
|
||||
SPI.setClockDivider(84);
|
||||
SPI.setDataMode(SPI_MODE0);
|
||||
#endif
|
||||
m_spiMode = SPI_MODE0;
|
||||
} else if (_CS != -1) {
|
||||
// software SPI
|
||||
pinMode(_CLK, OUTPUT);
|
||||
pinMode(_CS, OUTPUT);
|
||||
pinMode(_MOSI, OUTPUT);
|
||||
pinMode(_MISO, INPUT);
|
||||
} else {
|
||||
Wire.begin();
|
||||
_i2caddr = i2caddr;
|
||||
return true;
|
||||
}
|
||||
|
||||
// try mode0
|
||||
if (getVersion() != 0x811) {
|
||||
if (_CS != -1 && _CLK == -1) {
|
||||
//Serial.println("try MODE1");
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
mySPISettings = SPISettings(1000000, MSBFIRST, SPI_MODE1);
|
||||
#elif defined (__AVR__)
|
||||
SPCRbackup = SPCR;
|
||||
SPI.begin();
|
||||
SPI.setDataMode(SPI_MODE1);
|
||||
SPI.setClockDivider(SPI_CLOCK_DIV16);
|
||||
mySPCR = SPCR; // save our new preferred state
|
||||
//Serial.print("mySPCR = 0x"); Serial.println(SPCR, HEX);
|
||||
SPCR = SPCRbackup; // then restore
|
||||
#elif defined (__arm__)
|
||||
SPI.setClockDivider(84);
|
||||
SPI.setDataMode(SPI_MODE1);
|
||||
#endif
|
||||
m_spiMode = SPI_MODE1;
|
||||
|
||||
if (getVersion() != 0x811) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
writeRegister8(STMPE_SYS_CTRL1, STMPE_SYS_CTRL1_RESET);
|
||||
delay(10);
|
||||
|
||||
for (uint8_t i=0; i<65; i++) {
|
||||
readRegister8(i);
|
||||
}
|
||||
|
||||
writeRegister8(STMPE_SYS_CTRL2, 0x0); // turn on clocks!
|
||||
writeRegister8(STMPE_TSC_CTRL, STMPE_TSC_CTRL_XYZ | STMPE_TSC_CTRL_EN); // XYZ and enable!
|
||||
//Serial.println(readRegister8(STMPE_TSC_CTRL), HEX);
|
||||
writeRegister8(STMPE_INT_EN, STMPE_INT_EN_TOUCHDET);
|
||||
writeRegister8(STMPE_ADC_CTRL1, STMPE_ADC_CTRL1_10BIT | (0x6 << 4)); // 96 clocks per conversion
|
||||
writeRegister8(STMPE_ADC_CTRL2, STMPE_ADC_CTRL2_6_5MHZ);
|
||||
writeRegister8(STMPE_TSC_CFG, STMPE_TSC_CFG_4SAMPLE | STMPE_TSC_CFG_DELAY_1MS | STMPE_TSC_CFG_SETTLE_5MS);
|
||||
writeRegister8(STMPE_TSC_FRACTION_Z, 0x6);
|
||||
writeRegister8(STMPE_FIFO_TH, 1);
|
||||
writeRegister8(STMPE_FIFO_STA, STMPE_FIFO_STA_RESET);
|
||||
writeRegister8(STMPE_FIFO_STA, 0); // unreset
|
||||
writeRegister8(STMPE_TSC_I_DRIVE, STMPE_TSC_I_DRIVE_50MA);
|
||||
writeRegister8(STMPE_INT_STA, 0xFF); // reset all ints
|
||||
writeRegister8(STMPE_INT_CTRL, STMPE_INT_CTRL_POL_HIGH | STMPE_INT_CTRL_ENABLE);
|
||||
|
||||
#if defined (__AVR__) && !defined (SPI_HAS_TRANSACTION)
|
||||
if (_CS != -1 && _CLK == -1)
|
||||
SPCR = SPCRbackup; // restore SPI state
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
boolean Adafruit_STMPE610::touched(void) {
|
||||
return (readRegister8(STMPE_TSC_CTRL) & 0x80);
|
||||
}
|
||||
|
||||
boolean Adafruit_STMPE610::bufferEmpty(void) {
|
||||
return (readRegister8(STMPE_FIFO_STA) & STMPE_FIFO_STA_EMPTY);
|
||||
}
|
||||
|
||||
uint8_t Adafruit_STMPE610::bufferSize(void) {
|
||||
return readRegister8(STMPE_FIFO_SIZE);
|
||||
}
|
||||
|
||||
uint16_t Adafruit_STMPE610::getVersion() {
|
||||
uint16_t v;
|
||||
//Serial.print("get version");
|
||||
v = readRegister8(0);
|
||||
v <<= 8;
|
||||
v |= readRegister8(1);
|
||||
//Serial.print("Version: 0x"); Serial.println(v, HEX);
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
/*****************************/
|
||||
|
||||
void Adafruit_STMPE610::readData(uint16_t *x, uint16_t *y, uint8_t *z) {
|
||||
uint8_t data[4];
|
||||
Wire.requestFrom(0x4d, 5);
|
||||
*z = Wire.read();
|
||||
for (uint8_t i=0; i<4; i++) {
|
||||
data[i] = Wire.read();//readRegister8(0xD7); //SPI.transfer(0x00);
|
||||
// Serial.print("0x"); Serial.print(data[i], HEX); Serial.print(" / ");
|
||||
}
|
||||
*x = data[1];
|
||||
*x <<= 8;
|
||||
*x |= data[0];
|
||||
*y = data[3];
|
||||
*y <<= 8;
|
||||
*y |= data[2];
|
||||
// *z = data[3];
|
||||
|
||||
// if (bufferEmpty())
|
||||
// writeRegister8(STMPE_INT_STA, 0xFF); // reset all ints
|
||||
Wire.endTransmission();
|
||||
}
|
||||
|
||||
TS_Point Adafruit_STMPE610::getPoint(void) {
|
||||
uint16_t x, y;
|
||||
uint8_t z;
|
||||
readData(&x, &y, &z);
|
||||
|
||||
return TS_Point(x, y, z);
|
||||
}
|
||||
|
||||
uint8_t Adafruit_STMPE610::spiIn() {
|
||||
if (_CLK == -1) {
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
uint8_t d = SPI.transfer(0);
|
||||
return d;
|
||||
#elif defined (__AVR__)
|
||||
SPCRbackup = SPCR;
|
||||
SPCR = mySPCR;
|
||||
uint8_t d = SPI.transfer(0);
|
||||
SPCR = SPCRbackup;
|
||||
return d;
|
||||
#elif defined (__arm__)
|
||||
SPI.setClockDivider(84);
|
||||
SPI.setDataMode(m_spiMode);
|
||||
uint8_t d = SPI.transfer(0);
|
||||
return d;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
return shiftIn(_MISO, _CLK, MSBFIRST);
|
||||
}
|
||||
void Adafruit_STMPE610::spiOut(uint8_t x) {
|
||||
if (_CLK == -1) {
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
SPI.transfer(x);
|
||||
#elif defined (__AVR__)
|
||||
SPCRbackup = SPCR;
|
||||
SPCR = mySPCR;
|
||||
SPI.transfer(x);
|
||||
SPCR = SPCRbackup;
|
||||
#elif defined (__arm__)
|
||||
SPI.setClockDivider(84);
|
||||
SPI.setDataMode(m_spiMode);
|
||||
SPI.transfer(x);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
shiftOut(_MOSI, _CLK, MSBFIRST, x);
|
||||
}
|
||||
|
||||
uint8_t Adafruit_STMPE610::readRegister8(uint8_t reg) {
|
||||
uint8_t x ;
|
||||
if (_CS == -1) {
|
||||
// use i2c
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((byte)reg);
|
||||
Wire.endTransmission();
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.requestFrom(_i2caddr, (byte)1);
|
||||
x = Wire.read();
|
||||
Wire.endTransmission();
|
||||
|
||||
//Serial.print("$"); Serial.print(reg, HEX);
|
||||
//Serial.print(": 0x"); Serial.println(x, HEX);
|
||||
} else {
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
if (_CLK == -1) SPI.beginTransaction(mySPISettings);
|
||||
#endif
|
||||
digitalWrite(_CS, LOW);
|
||||
spiOut(0x80 | reg);
|
||||
spiOut(0x00);
|
||||
x = spiIn();
|
||||
digitalWrite(_CS, HIGH);
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
if (_CLK == -1) SPI.endTransaction();
|
||||
#endif
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
uint16_t Adafruit_STMPE610::readRegister16(uint8_t reg) {
|
||||
uint16_t x = 0;
|
||||
if (_CS == -1) {
|
||||
// use i2c
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((byte)reg);
|
||||
Wire.endTransmission();
|
||||
Wire.requestFrom(_i2caddr, (byte)2);
|
||||
x = Wire.read();
|
||||
x<<=8;
|
||||
x |= Wire.read();
|
||||
Wire.endTransmission();
|
||||
|
||||
} if (_CLK == -1) {
|
||||
// hardware SPI
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
if (_CLK == -1) SPI.beginTransaction(mySPISettings);
|
||||
#endif
|
||||
digitalWrite(_CS, LOW);
|
||||
spiOut(0x80 | reg);
|
||||
spiOut(0x00);
|
||||
x = spiIn();
|
||||
x<<=8;
|
||||
x |= spiIn();
|
||||
digitalWrite(_CS, HIGH);
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
if (_CLK == -1) SPI.endTransaction();
|
||||
#endif
|
||||
}
|
||||
|
||||
//Serial.print("$"); Serial.print(reg, HEX);
|
||||
//Serial.print(": 0x"); Serial.println(x, HEX);
|
||||
return x;
|
||||
}
|
||||
|
||||
void Adafruit_STMPE610::writeRegister8(uint8_t reg, uint8_t val) {
|
||||
if (_CS == -1) {
|
||||
// use i2c
|
||||
Wire.beginTransmission(_i2caddr);
|
||||
Wire.write((byte)reg);
|
||||
Wire.write(val);
|
||||
Wire.endTransmission();
|
||||
} else {
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
if (_CLK == -1) SPI.beginTransaction(mySPISettings);
|
||||
#endif
|
||||
digitalWrite(_CS, LOW);
|
||||
spiOut(reg);
|
||||
spiOut(val);
|
||||
digitalWrite(_CS, HIGH);
|
||||
#if defined (SPI_HAS_TRANSACTION)
|
||||
if (_CLK == -1) SPI.endTransaction();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/****************/
|
||||
|
||||
TS_Point::TS_Point(void) {
|
||||
x = y = 0;
|
||||
}
|
||||
|
||||
TS_Point::TS_Point(int16_t x0, int16_t y0, int16_t z0) {
|
||||
x = x0;
|
||||
y = y0;
|
||||
z = z0;
|
||||
}
|
||||
|
||||
bool TS_Point::operator==(TS_Point p1) {
|
||||
return ((p1.x == x) && (p1.y == y) && (p1.z == z));
|
||||
}
|
||||
|
||||
bool TS_Point::operator!=(TS_Point p1) {
|
||||
return ((p1.x != x) || (p1.y != y) || (p1.z != z));
|
||||
}
|
||||
@ -0,0 +1,156 @@
|
||||
/***************************************************
|
||||
This is a library for the Adafruit STMPE610 Resistive
|
||||
touch screen controller breakout
|
||||
----> http://www.adafruit.com/products/1571
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These breakouts use SPI or I2C to communicate
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
#ifndef _ADAFRUIT_STMPE610H_
|
||||
#define _ADAFRUIT_STMPE610H_
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
|
||||
#include <Wire.h>
|
||||
|
||||
|
||||
#define STMPE_ADDR 0x4d
|
||||
|
||||
#define STMPE_SYS_CTRL1 0x03
|
||||
#define STMPE_SYS_CTRL1_RESET 0x02
|
||||
#define STMPE_SYS_CTRL2 0x04
|
||||
|
||||
#define STMPE_TSC_CTRL 0x40
|
||||
#define STMPE_TSC_CTRL_EN 0x01
|
||||
#define STMPE_TSC_CTRL_XYZ 0x00
|
||||
#define STMPE_TSC_CTRL_XY 0x02
|
||||
|
||||
#define STMPE_INT_CTRL 0x09
|
||||
#define STMPE_INT_CTRL_POL_HIGH 0x04
|
||||
#define STMPE_INT_CTRL_POL_LOW 0x00
|
||||
#define STMPE_INT_CTRL_EDGE 0x02
|
||||
#define STMPE_INT_CTRL_LEVEL 0x00
|
||||
#define STMPE_INT_CTRL_ENABLE 0x01
|
||||
#define STMPE_INT_CTRL_DISABLE 0x00
|
||||
|
||||
|
||||
|
||||
#define STMPE_INT_EN 0x0A
|
||||
#define STMPE_INT_EN_TOUCHDET 0x01
|
||||
#define STMPE_INT_EN_FIFOTH 0x02
|
||||
#define STMPE_INT_EN_FIFOOF 0x04
|
||||
#define STMPE_INT_EN_FIFOFULL 0x08
|
||||
#define STMPE_INT_EN_FIFOEMPTY 0x10
|
||||
#define STMPE_INT_EN_ADC 0x40
|
||||
#define STMPE_INT_EN_GPIO 0x80
|
||||
|
||||
#define STMPE_INT_STA 0x0B
|
||||
#define STMPE_INT_STA_TOUCHDET 0x01
|
||||
|
||||
#define STMPE_ADC_CTRL1 0x20
|
||||
#define STMPE_ADC_CTRL1_12BIT 0x08
|
||||
#define STMPE_ADC_CTRL1_10BIT 0x00
|
||||
|
||||
#define STMPE_ADC_CTRL2 0x21
|
||||
#define STMPE_ADC_CTRL2_1_625MHZ 0x00
|
||||
#define STMPE_ADC_CTRL2_3_25MHZ 0x01
|
||||
#define STMPE_ADC_CTRL2_6_5MHZ 0x02
|
||||
|
||||
#define STMPE_TSC_CFG 0x41
|
||||
#define STMPE_TSC_CFG_1SAMPLE 0x00
|
||||
#define STMPE_TSC_CFG_2SAMPLE 0x40
|
||||
#define STMPE_TSC_CFG_4SAMPLE 0x80
|
||||
#define STMPE_TSC_CFG_8SAMPLE 0xC0
|
||||
#define STMPE_TSC_CFG_DELAY_10US 0x00
|
||||
#define STMPE_TSC_CFG_DELAY_50US 0x08
|
||||
#define STMPE_TSC_CFG_DELAY_100US 0x10
|
||||
#define STMPE_TSC_CFG_DELAY_500US 0x18
|
||||
#define STMPE_TSC_CFG_DELAY_1MS 0x20
|
||||
#define STMPE_TSC_CFG_DELAY_5MS 0x28
|
||||
#define STMPE_TSC_CFG_DELAY_10MS 0x30
|
||||
#define STMPE_TSC_CFG_DELAY_50MS 0x38
|
||||
#define STMPE_TSC_CFG_SETTLE_10US 0x00
|
||||
#define STMPE_TSC_CFG_SETTLE_100US 0x01
|
||||
#define STMPE_TSC_CFG_SETTLE_500US 0x02
|
||||
#define STMPE_TSC_CFG_SETTLE_1MS 0x03
|
||||
#define STMPE_TSC_CFG_SETTLE_5MS 0x04
|
||||
#define STMPE_TSC_CFG_SETTLE_10MS 0x05
|
||||
#define STMPE_TSC_CFG_SETTLE_50MS 0x06
|
||||
#define STMPE_TSC_CFG_SETTLE_100MS 0x07
|
||||
|
||||
#define STMPE_FIFO_TH 0x4A
|
||||
|
||||
#define STMPE_FIFO_SIZE 0x4C
|
||||
|
||||
#define STMPE_FIFO_STA 0x4B
|
||||
#define STMPE_FIFO_STA_RESET 0x01
|
||||
#define STMPE_FIFO_STA_OFLOW 0x80
|
||||
#define STMPE_FIFO_STA_FULL 0x40
|
||||
#define STMPE_FIFO_STA_EMPTY 0x20
|
||||
#define STMPE_FIFO_STA_THTRIG 0x10
|
||||
|
||||
#define STMPE_TSC_I_DRIVE 0x58
|
||||
#define STMPE_TSC_I_DRIVE_20MA 0x00
|
||||
#define STMPE_TSC_I_DRIVE_50MA 0x01
|
||||
|
||||
#define STMPE_TSC_DATA_X 0x4D
|
||||
#define STMPE_TSC_DATA_Y 0x4F
|
||||
#define STMPE_TSC_FRACTION_Z 0x56
|
||||
|
||||
#define STMPE_GPIO_SET_PIN 0x10
|
||||
#define STMPE_GPIO_CLR_PIN 0x11
|
||||
#define STMPE_GPIO_DIR 0x13
|
||||
#define STMPE_GPIO_ALT_FUNCT 0x17
|
||||
|
||||
|
||||
class TS_Point {
|
||||
public:
|
||||
TS_Point(void);
|
||||
TS_Point(int16_t x, int16_t y, int16_t z);
|
||||
|
||||
bool operator==(TS_Point);
|
||||
bool operator!=(TS_Point);
|
||||
|
||||
int16_t x, y, z;
|
||||
};
|
||||
|
||||
class Adafruit_STMPE610{
|
||||
public:
|
||||
Adafruit_STMPE610(uint8_t cspin, uint8_t mosipin, uint8_t misopin, uint8_t clkpin);
|
||||
Adafruit_STMPE610(uint8_t cs);
|
||||
Adafruit_STMPE610(void);
|
||||
boolean begin(uint8_t i2caddr = STMPE_ADDR);
|
||||
|
||||
void writeRegister8(uint8_t reg, uint8_t val);
|
||||
uint16_t readRegister16(uint8_t reg);
|
||||
uint8_t readRegister8(uint8_t reg);
|
||||
void readData(uint16_t *x, uint16_t *y, uint8_t *z);
|
||||
uint16_t getVersion();
|
||||
boolean touched(void);
|
||||
boolean bufferEmpty(void);
|
||||
uint8_t bufferSize(void);
|
||||
TS_Point getPoint(void);
|
||||
|
||||
private:
|
||||
uint8_t spiIn();
|
||||
void spiOut(uint8_t x);
|
||||
|
||||
int8_t _CS, _MOSI, _MISO, _CLK;
|
||||
uint8_t _i2caddr;
|
||||
|
||||
int m_spiMode;
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,20 @@
|
||||
/***************************************************
|
||||
This is a library for the Adafruit STMPE610 Resistive
|
||||
touch screen controller breakout
|
||||
----> http://www.adafruit.com/products/1571
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These breakouts use SPI or I2C to communicate
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_STMPE610. Check that the Adafruit_STMPE610 folder contains Adafruit_STMPE610.cpp and Adafruit_STMPE610.h
|
||||
|
||||
Place the Adafruit_STMPE610 library folder your *arduinosketchfolder*/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE
|
||||
|
||||
81
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/examples/TouchTest/TouchTest.ino
Normal file
81
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit STMPE610_ID377/examples/TouchTest/TouchTest.ino
Normal file
@ -0,0 +1,81 @@
|
||||
/***************************************************
|
||||
This is an example for the Adafruit STMPE610 Resistive
|
||||
touch screen controller breakout
|
||||
----> http://www.adafruit.com/products/1571
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These breakouts use SPI or I2C to communicate
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
|
||||
#include "Adafruit_STMPE610.h"
|
||||
|
||||
// Pick one of three wiring options below!
|
||||
|
||||
// Option #1 - uses I2C, connect to hardware I2C port only!
|
||||
// SCL to I2C clock (#A5 on Uno) and SDA to I2C data (#A4 on Uno)
|
||||
// tie MODE to GND and POWER CYCLE (there is no reset pin)
|
||||
Adafruit_STMPE610 touch = Adafruit_STMPE610();
|
||||
|
||||
// Option #2 - use hardware SPI, connect to hardware SPI port only!
|
||||
// SDI to MOSI, SDO to MISO, and SCL to SPI CLOCK
|
||||
// on Arduino Uno, that's 11, 12 and 13 respectively
|
||||
// Then pick a CS pin, any pin is OK but we suggest #10 on an Uno
|
||||
// tie MODE to 3.3V and POWER CYCLE the STMPE610 (there is no reset pin)
|
||||
|
||||
//Adafruit_STMPE610 touch = Adafruit_STMPE610(STMPE_CS);
|
||||
|
||||
// Option #3 - use software SPI, connect to *any* 4 I/O pins!
|
||||
// define the following pins to whatever 4 you want and wire up!
|
||||
// Tie MODE to 3.3V and POWER CYCLE the STMPE610 (there is no reset pin)
|
||||
// Adafruit_STMPE610 touch = Adafruit_STMPE610(STMPE_CS, STMPE_SDI, STMPE_SDO, STMPE_SCK);
|
||||
|
||||
/******************/
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("Adafruit STMPE610 example");
|
||||
Serial.flush();
|
||||
|
||||
// if using hardware SPI on an Uno #10 must be an output, remove line
|
||||
// if using software SPI or I2C
|
||||
pinMode(10, OUTPUT);
|
||||
|
||||
// If using I2C you can select the I2C address (there are two options) by calling
|
||||
// touch.begin(0x41), the default, or touch.begin(0x44) if A0 is tied to 3.3V
|
||||
// If no address is passed, 0x41 is used
|
||||
if (! touch.begin()) {
|
||||
Serial.println("STMPE not found!");
|
||||
while(1);
|
||||
}
|
||||
Serial.println("Waiting for touch sense");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
uint16_t x, y;
|
||||
uint8_t z;
|
||||
if (touch.touched()) {
|
||||
// read x & y & z;
|
||||
while (! touch.bufferEmpty()) {
|
||||
Serial.print(touch.bufferSize());
|
||||
touch.readData(&x, &y, &z);
|
||||
Serial.print("->(");
|
||||
Serial.print(x); Serial.print(", ");
|
||||
Serial.print(y); Serial.print(", ");
|
||||
Serial.print(z);
|
||||
Serial.println(")");
|
||||
}
|
||||
touch.writeRegister8(STMPE_INT_STA, 0xFF); // reset all ints
|
||||
}
|
||||
delay(10);
|
||||
}
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
name=Adafruit STMPE610
|
||||
version=1.0.1
|
||||
author=Adafruit
|
||||
maintainer=Adafruit <info@adafruit.com>
|
||||
sentence=Arduino library for STMPE610/811 resistive touch screen controllers
|
||||
paragraph=Arduino library for STMPE610/811 resistive touch screen controllers
|
||||
category=Display
|
||||
url=https://github.com/adafruit/Adafruit_STMPE610
|
||||
architectures=*
|
||||
46
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/.github/ISSUE_TEMPLATE.md
vendored
Normal file
46
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
Thank you for opening an issue on an Adafruit Arduino library repository. To
|
||||
improve the speed of resolution please review the following guidelines and
|
||||
common troubleshooting steps below before creating the issue:
|
||||
|
||||
- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use
|
||||
the forums at http://forums.adafruit.com to ask questions and troubleshoot why
|
||||
something isn't working as expected. In many cases the problem is a common issue
|
||||
that you will more quickly receive help from the forum community. GitHub issues
|
||||
are meant for known defects in the code. If you don't know if there is a defect
|
||||
in the code then start with troubleshooting on the forum first.
|
||||
|
||||
- **If following a tutorial or guide be sure you didn't miss a step.** Carefully
|
||||
check all of the steps and commands to run have been followed. Consult the
|
||||
forum if you're unsure or have questions about steps in a guide/tutorial.
|
||||
|
||||
- **For Arduino projects check these very common issues to ensure they don't apply**:
|
||||
|
||||
- For uploading sketches or communicating with the board make sure you're using
|
||||
a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes
|
||||
very hard to tell the difference between a data and charge cable! Try using the
|
||||
cable with other devices or swapping to another cable to confirm it is not
|
||||
the problem.
|
||||
|
||||
- **Be sure you are supplying adequate power to the board.** Check the specs of
|
||||
your board and plug in an external power supply. In many cases just
|
||||
plugging a board into your computer is not enough to power it and other
|
||||
peripherals.
|
||||
|
||||
- **Double check all soldering joints and connections.** Flakey connections
|
||||
cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints.
|
||||
|
||||
- **Ensure you are using an official Arduino or Adafruit board.** We can't
|
||||
guarantee a clone board will have the same functionality and work as expected
|
||||
with this code and don't support them.
|
||||
|
||||
If you're sure this issue is a defect in the code and checked the steps above
|
||||
please fill in the following fields to provide enough troubleshooting information.
|
||||
You may delete the guideline and text above to just leave the following details:
|
||||
|
||||
- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE**
|
||||
|
||||
- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO
|
||||
VERSION HERE**
|
||||
|
||||
- List the steps to reproduce the problem below (if possible attach a sketch or
|
||||
copy the sketch code in too): **LIST REPRO STEPS BELOW**
|
||||
26
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
26
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
Thank you for creating a pull request to contribute to Adafruit's GitHub code!
|
||||
Before you open the request please review the following guidelines and tips to
|
||||
help it be more easily integrated:
|
||||
|
||||
- **Describe the scope of your change--i.e. what the change does and what parts
|
||||
of the code were modified.** This will help us understand any risks of integrating
|
||||
the code.
|
||||
|
||||
- **Describe any known limitations with your change.** For example if the change
|
||||
doesn't apply to a supported platform of the library please mention it.
|
||||
|
||||
- **Please run any tests or examples that can exercise your modified code.** We
|
||||
strive to not break users of the code and running tests/examples helps with this
|
||||
process.
|
||||
|
||||
Thank you again for contributing! We will try to test and integrate the change
|
||||
as soon as we can, but be aware we have many GitHub repositories to manage and
|
||||
can't immediately respond to every request. There is no need to bump or check in
|
||||
on a pull request (it will clutter the discussion of the request).
|
||||
|
||||
Also don't be worried if the request is closed or not integrated--sometimes the
|
||||
priorities of Adafruit's GitHub code (education, ease of use) might not match the
|
||||
priorities of the pull request. Don't fret, the open source community thrives on
|
||||
forks and GitHub makes it easy to keep your changes in a forked repo.
|
||||
|
||||
After reviewing the guidelines above you can delete this text from the pull request.
|
||||
@ -0,0 +1,667 @@
|
||||
/***************************************************
|
||||
This is our library for the Adafruit ILI9341 Breakout and Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
#include "Adafruit_ILI9341.h"
|
||||
#ifndef ARDUINO_STM32_FEATHER
|
||||
#include "pins_arduino.h"
|
||||
#ifndef RASPI
|
||||
#include "wiring_private.h"
|
||||
#endif
|
||||
#endif
|
||||
#include <limits.h>
|
||||
|
||||
|
||||
#define MADCTL_MY 0x80
|
||||
#define MADCTL_MX 0x40
|
||||
#define MADCTL_MV 0x20
|
||||
#define MADCTL_ML 0x10
|
||||
#define MADCTL_RGB 0x00
|
||||
#define MADCTL_BGR 0x08
|
||||
#define MADCTL_MH 0x04
|
||||
|
||||
/*
|
||||
* Control Pins
|
||||
* */
|
||||
|
||||
#ifdef USE_FAST_PINIO
|
||||
#define SPI_DC_HIGH() *dcport |= dcpinmask
|
||||
#define SPI_DC_LOW() *dcport &= ~dcpinmask
|
||||
#define SPI_CS_HIGH() *csport |= cspinmask
|
||||
#define SPI_CS_LOW() *csport &= ~cspinmask
|
||||
#else
|
||||
#define SPI_DC_HIGH() digitalWrite(_dc, HIGH)
|
||||
#define SPI_DC_LOW() digitalWrite(_dc, LOW)
|
||||
#define SPI_CS_HIGH() digitalWrite(_cs, HIGH)
|
||||
#define SPI_CS_LOW() digitalWrite(_cs, LOW)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Software SPI Macros
|
||||
* */
|
||||
|
||||
#ifdef USE_FAST_PINIO
|
||||
#define SSPI_MOSI_HIGH() *mosiport |= mosipinmask
|
||||
#define SSPI_MOSI_LOW() *mosiport &= ~mosipinmask
|
||||
#define SSPI_SCK_HIGH() *clkport |= clkpinmask
|
||||
#define SSPI_SCK_LOW() *clkport &= ~clkpinmask
|
||||
#define SSPI_MISO_READ() ((*misoport & misopinmask) != 0)
|
||||
#else
|
||||
#define SSPI_MOSI_HIGH() digitalWrite(_mosi, HIGH)
|
||||
#define SSPI_MOSI_LOW() digitalWrite(_mosi, LOW)
|
||||
#define SSPI_SCK_HIGH() digitalWrite(_sclk, HIGH)
|
||||
#define SSPI_SCK_LOW() digitalWrite(_sclk, LOW)
|
||||
#define SSPI_MISO_READ() digitalRead(_miso)
|
||||
#endif
|
||||
|
||||
#define SSPI_BEGIN_TRANSACTION()
|
||||
#define SSPI_END_TRANSACTION()
|
||||
#define SSPI_WRITE(v) spiWrite(v)
|
||||
#define SSPI_WRITE16(s) SSPI_WRITE((s) >> 8); SSPI_WRITE(s)
|
||||
#define SSPI_WRITE32(l) SSPI_WRITE((l) >> 24); SSPI_WRITE((l) >> 16); SSPI_WRITE((l) >> 8); SSPI_WRITE(l)
|
||||
#define SSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ SSPI_WRITE(((uint8_t*)(c))[i+1]); SSPI_WRITE(((uint8_t*)(c))[i]); }
|
||||
|
||||
/*
|
||||
* Hardware SPI Macros
|
||||
* */
|
||||
|
||||
#ifndef ESP32
|
||||
#define SPI_OBJECT SPI
|
||||
#else
|
||||
#define SPI_OBJECT _spi
|
||||
#endif
|
||||
|
||||
#if defined (__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1)
|
||||
#define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(SPI_CLOCK_DIV2);
|
||||
#elif defined (__arm__)
|
||||
#define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(11);
|
||||
#elif defined(ESP8266) || defined(ESP32)
|
||||
#define HSPI_SET_CLOCK() SPI_OBJECT.setFrequency(_freq);
|
||||
#elif defined(RASPI)
|
||||
#define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq);
|
||||
#elif defined(ARDUINO_ARCH_STM32F1)
|
||||
#define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq);
|
||||
#else
|
||||
#define HSPI_SET_CLOCK()
|
||||
#endif
|
||||
|
||||
#ifdef SPI_HAS_TRANSACTION
|
||||
#define HSPI_BEGIN_TRANSACTION() SPI_OBJECT.beginTransaction(SPISettings(_freq, MSBFIRST, SPI_MODE0))
|
||||
#define HSPI_END_TRANSACTION() SPI_OBJECT.endTransaction()
|
||||
#else
|
||||
#define HSPI_BEGIN_TRANSACTION() HSPI_SET_CLOCK(); SPI_OBJECT.setBitOrder(MSBFIRST); SPI_OBJECT.setDataMode(SPI_MODE0)
|
||||
#define HSPI_END_TRANSACTION()
|
||||
#endif
|
||||
|
||||
#ifdef ESP32
|
||||
#define SPI_HAS_WRITE_PIXELS
|
||||
#endif
|
||||
#if defined(ESP8266) || defined(ESP32)
|
||||
// Optimized SPI (ESP8266 and ESP32)
|
||||
#define HSPI_READ() SPI_OBJECT.transfer(0)
|
||||
#define HSPI_WRITE(b) SPI_OBJECT.write(b)
|
||||
#define HSPI_WRITE16(s) SPI_OBJECT.write16(s)
|
||||
#define HSPI_WRITE32(l) SPI_OBJECT.write32(l)
|
||||
#ifdef SPI_HAS_WRITE_PIXELS
|
||||
#define SPI_MAX_PIXELS_AT_ONCE 32
|
||||
#define HSPI_WRITE_PIXELS(c,l) SPI_OBJECT.writePixels(c,l)
|
||||
#else
|
||||
#define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<((l)/2); i++){ SPI_WRITE16(((uint16_t*)(c))[i]); }
|
||||
#endif
|
||||
#else
|
||||
// Standard Byte-by-Byte SPI
|
||||
|
||||
#if defined (__AVR__) || defined(TEENSYDUINO)
|
||||
static inline uint8_t _avr_spi_read(void) __attribute__((always_inline));
|
||||
static inline uint8_t _avr_spi_read(void) {
|
||||
uint8_t r = 0;
|
||||
SPDR = r;
|
||||
while(!(SPSR & _BV(SPIF)));
|
||||
r = SPDR;
|
||||
return r;
|
||||
}
|
||||
#define HSPI_WRITE(b) {SPDR = (b); while(!(SPSR & _BV(SPIF)));}
|
||||
#define HSPI_READ() _avr_spi_read()
|
||||
#else
|
||||
#define HSPI_WRITE(b) SPI_OBJECT.transfer((uint8_t)(b))
|
||||
#define HSPI_READ() HSPI_WRITE(0)
|
||||
#endif
|
||||
#define HSPI_WRITE16(s) HSPI_WRITE((s) >> 8); HSPI_WRITE(s)
|
||||
#define HSPI_WRITE32(l) HSPI_WRITE((l) >> 24); HSPI_WRITE((l) >> 16); HSPI_WRITE((l) >> 8); HSPI_WRITE(l)
|
||||
#define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ HSPI_WRITE(((uint8_t*)(c))[i+1]); HSPI_WRITE(((uint8_t*)(c))[i]); }
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Final SPI Macros
|
||||
* */
|
||||
#if defined (ARDUINO_ARCH_ARC32)
|
||||
#define SPI_DEFAULT_FREQ 16000000
|
||||
#elif defined (__AVR__) || defined(TEENSYDUINO)
|
||||
#define SPI_DEFAULT_FREQ 8000000
|
||||
#elif defined(ESP8266) || defined(ESP32)
|
||||
#define SPI_DEFAULT_FREQ 40000000
|
||||
#elif defined(RASPI)
|
||||
#define SPI_DEFAULT_FREQ 80000000
|
||||
#elif defined(ARDUINO_ARCH_STM32F1)
|
||||
#define SPI_DEFAULT_FREQ 36000000
|
||||
#else
|
||||
#define SPI_DEFAULT_FREQ 24000000
|
||||
#endif
|
||||
|
||||
#define SPI_BEGIN() if(_sclk < 0){SPI_OBJECT.begin();}
|
||||
#define SPI_BEGIN_TRANSACTION() if(_sclk < 0){HSPI_BEGIN_TRANSACTION();}
|
||||
#define SPI_END_TRANSACTION() if(_sclk < 0){HSPI_END_TRANSACTION();}
|
||||
#define SPI_WRITE16(s) if(_sclk < 0){HSPI_WRITE16(s);}else{SSPI_WRITE16(s);}
|
||||
#define SPI_WRITE32(l) if(_sclk < 0){HSPI_WRITE32(l);}else{SSPI_WRITE32(l);}
|
||||
#define SPI_WRITE_PIXELS(c,l) if(_sclk < 0){HSPI_WRITE_PIXELS(c,l);}else{SSPI_WRITE_PIXELS(c,l);}
|
||||
|
||||
// Pass 8-bit (each) R,G,B, get back 16-bit packed color
|
||||
uint16_t Adafruit_ILI9341::color565(uint8_t r, uint8_t g, uint8_t b) {
|
||||
return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3);
|
||||
}
|
||||
|
||||
Adafruit_ILI9341::Adafruit_ILI9341(int8_t cs, int8_t dc, int8_t mosi,
|
||||
int8_t sclk, int8_t rst, int8_t miso) : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT) {
|
||||
_cs = cs;
|
||||
_dc = dc;
|
||||
_rst = rst;
|
||||
_sclk = sclk;
|
||||
_mosi = mosi;
|
||||
_miso = miso;
|
||||
_freq = 0;
|
||||
#ifdef USE_FAST_PINIO
|
||||
csport = portOutputRegister(digitalPinToPort(_cs));
|
||||
cspinmask = digitalPinToBitMask(_cs);
|
||||
dcport = portOutputRegister(digitalPinToPort(_dc));
|
||||
dcpinmask = digitalPinToBitMask(_dc);
|
||||
clkport = portOutputRegister(digitalPinToPort(_sclk));
|
||||
clkpinmask = digitalPinToBitMask(_sclk);
|
||||
mosiport = portOutputRegister(digitalPinToPort(_mosi));
|
||||
mosipinmask = digitalPinToBitMask(_mosi);
|
||||
if(miso >= 0){
|
||||
misoport = portInputRegister(digitalPinToPort(_miso));
|
||||
misopinmask = digitalPinToBitMask(_miso);
|
||||
} else {
|
||||
misoport = 0;
|
||||
misopinmask = 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Adafruit_ILI9341::Adafruit_ILI9341(int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT) {
|
||||
_cs = cs;
|
||||
_dc = dc;
|
||||
_rst = rst;
|
||||
_sclk = -1;
|
||||
_mosi = -1;
|
||||
_miso = -1;
|
||||
_freq = 0;
|
||||
#ifdef USE_FAST_PINIO
|
||||
csport = portOutputRegister(digitalPinToPort(_cs));
|
||||
cspinmask = digitalPinToBitMask(_cs);
|
||||
dcport = portOutputRegister(digitalPinToPort(_dc));
|
||||
dcpinmask = digitalPinToBitMask(_dc);
|
||||
clkport = 0;
|
||||
clkpinmask = 0;
|
||||
mosiport = 0;
|
||||
mosipinmask = 0;
|
||||
misoport = 0;
|
||||
misopinmask = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef ESP32
|
||||
void Adafruit_ILI9341::begin(uint32_t freq, SPIClass &spi)
|
||||
#else
|
||||
void Adafruit_ILI9341::begin(uint32_t freq)
|
||||
#endif
|
||||
{
|
||||
#ifdef ESP32
|
||||
_spi = spi;
|
||||
#endif
|
||||
if(!freq){
|
||||
freq = SPI_DEFAULT_FREQ;
|
||||
}
|
||||
_freq = freq;
|
||||
|
||||
// Control Pins
|
||||
pinMode(_dc, OUTPUT);
|
||||
digitalWrite(_dc, LOW);
|
||||
pinMode(_cs, OUTPUT);
|
||||
digitalWrite(_cs, HIGH);
|
||||
|
||||
// Software SPI
|
||||
if(_sclk >= 0){
|
||||
pinMode(_mosi, OUTPUT);
|
||||
digitalWrite(_mosi, LOW);
|
||||
pinMode(_sclk, OUTPUT);
|
||||
digitalWrite(_sclk, HIGH);
|
||||
if(_miso >= 0){
|
||||
pinMode(_miso, INPUT);
|
||||
}
|
||||
}
|
||||
|
||||
// Hardware SPI
|
||||
SPI_BEGIN();
|
||||
pinMode(_dc, OUTPUT);
|
||||
// toggle RST low to reset
|
||||
if (_rst >= 0) {
|
||||
pinMode(_rst, OUTPUT);
|
||||
digitalWrite(_rst, HIGH);
|
||||
delay(100);
|
||||
digitalWrite(_rst, LOW);
|
||||
delay(100);
|
||||
digitalWrite(_rst, HIGH);
|
||||
delay(200);
|
||||
}
|
||||
|
||||
startWrite();
|
||||
|
||||
writeCommand(0xEF);
|
||||
spiWrite(0x03);
|
||||
spiWrite(0x80);
|
||||
spiWrite(0x02);
|
||||
|
||||
writeCommand(0xCF);
|
||||
spiWrite(0x00);
|
||||
spiWrite(0XC1);
|
||||
spiWrite(0X30);
|
||||
|
||||
writeCommand(0xED);
|
||||
spiWrite(0x64);
|
||||
spiWrite(0x03);
|
||||
spiWrite(0X12);
|
||||
spiWrite(0X81);
|
||||
|
||||
writeCommand(0xE8);
|
||||
spiWrite(0x85);
|
||||
spiWrite(0x00);
|
||||
spiWrite(0x78);
|
||||
|
||||
writeCommand(0xCB);
|
||||
spiWrite(0x39);
|
||||
spiWrite(0x2C);
|
||||
spiWrite(0x00);
|
||||
spiWrite(0x34);
|
||||
spiWrite(0x02);
|
||||
|
||||
writeCommand(0xF7);
|
||||
spiWrite(0x20);
|
||||
|
||||
writeCommand(0xEA);
|
||||
spiWrite(0x00);
|
||||
spiWrite(0x00);
|
||||
|
||||
writeCommand(ILI9341_PWCTR1); //Power control
|
||||
spiWrite(0x23); //VRH[5:0]
|
||||
|
||||
writeCommand(ILI9341_PWCTR2); //Power control
|
||||
spiWrite(0x10); //SAP[2:0];BT[3:0]
|
||||
|
||||
writeCommand(ILI9341_VMCTR1); //VCM control
|
||||
spiWrite(0x3e);
|
||||
spiWrite(0x28);
|
||||
|
||||
writeCommand(ILI9341_VMCTR2); //VCM control2
|
||||
spiWrite(0x86); //--
|
||||
|
||||
writeCommand(ILI9341_MADCTL); // Memory Access Control
|
||||
spiWrite(0x48);
|
||||
|
||||
writeCommand(ILI9341_VSCRSADD); // Vertical scroll
|
||||
SPI_WRITE16(0); // Zero
|
||||
|
||||
writeCommand(ILI9341_PIXFMT);
|
||||
spiWrite(0x55);
|
||||
|
||||
writeCommand(ILI9341_FRMCTR1);
|
||||
spiWrite(0x00);
|
||||
spiWrite(0x18);
|
||||
|
||||
writeCommand(ILI9341_DFUNCTR); // Display Function Control
|
||||
spiWrite(0x08);
|
||||
spiWrite(0x82);
|
||||
spiWrite(0x27);
|
||||
|
||||
writeCommand(0xF2); // 3Gamma Function Disable
|
||||
spiWrite(0x00);
|
||||
|
||||
writeCommand(ILI9341_GAMMASET); //Gamma curve selected
|
||||
spiWrite(0x01);
|
||||
|
||||
writeCommand(ILI9341_GMCTRP1); //Set Gamma
|
||||
spiWrite(0x0F);
|
||||
spiWrite(0x31);
|
||||
spiWrite(0x2B);
|
||||
spiWrite(0x0C);
|
||||
spiWrite(0x0E);
|
||||
spiWrite(0x08);
|
||||
spiWrite(0x4E);
|
||||
spiWrite(0xF1);
|
||||
spiWrite(0x37);
|
||||
spiWrite(0x07);
|
||||
spiWrite(0x10);
|
||||
spiWrite(0x03);
|
||||
spiWrite(0x0E);
|
||||
spiWrite(0x09);
|
||||
spiWrite(0x00);
|
||||
|
||||
writeCommand(ILI9341_GMCTRN1); //Set Gamma
|
||||
spiWrite(0x00);
|
||||
spiWrite(0x0E);
|
||||
spiWrite(0x14);
|
||||
spiWrite(0x03);
|
||||
spiWrite(0x11);
|
||||
spiWrite(0x07);
|
||||
spiWrite(0x31);
|
||||
spiWrite(0xC1);
|
||||
spiWrite(0x48);
|
||||
spiWrite(0x08);
|
||||
spiWrite(0x0F);
|
||||
spiWrite(0x0C);
|
||||
spiWrite(0x31);
|
||||
spiWrite(0x36);
|
||||
spiWrite(0x0F);
|
||||
|
||||
writeCommand(ILI9341_SLPOUT); //Exit Sleep
|
||||
delay(120);
|
||||
writeCommand(ILI9341_DISPON); //Display on
|
||||
delay(120);
|
||||
endWrite();
|
||||
|
||||
_width = ILI9341_TFTWIDTH;
|
||||
_height = ILI9341_TFTHEIGHT;
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::setRotation(uint8_t m) {
|
||||
rotation = m % 4; // can't be higher than 3
|
||||
switch (rotation) {
|
||||
case 0:
|
||||
m = (MADCTL_MX | MADCTL_BGR);
|
||||
_width = ILI9341_TFTWIDTH;
|
||||
_height = ILI9341_TFTHEIGHT;
|
||||
break;
|
||||
case 1:
|
||||
m = (MADCTL_MV | MADCTL_BGR);
|
||||
_width = ILI9341_TFTHEIGHT;
|
||||
_height = ILI9341_TFTWIDTH;
|
||||
break;
|
||||
case 2:
|
||||
m = (MADCTL_MY | MADCTL_BGR);
|
||||
_width = ILI9341_TFTWIDTH;
|
||||
_height = ILI9341_TFTHEIGHT;
|
||||
break;
|
||||
case 3:
|
||||
m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR);
|
||||
_width = ILI9341_TFTHEIGHT;
|
||||
_height = ILI9341_TFTWIDTH;
|
||||
break;
|
||||
}
|
||||
|
||||
startWrite();
|
||||
writeCommand(ILI9341_MADCTL);
|
||||
spiWrite(m);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::invertDisplay(boolean i) {
|
||||
startWrite();
|
||||
writeCommand(i ? ILI9341_INVON : ILI9341_INVOFF);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::scrollTo(uint16_t y) {
|
||||
startWrite();
|
||||
writeCommand(ILI9341_VSCRSADD);
|
||||
SPI_WRITE16(y);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
uint8_t Adafruit_ILI9341::spiRead() {
|
||||
if(_sclk < 0){
|
||||
return HSPI_READ();
|
||||
}
|
||||
if(_miso < 0){
|
||||
return 0;
|
||||
}
|
||||
uint8_t r = 0;
|
||||
for (uint8_t i=0; i<8; i++) {
|
||||
SSPI_SCK_LOW();
|
||||
SSPI_SCK_HIGH();
|
||||
r <<= 1;
|
||||
if (SSPI_MISO_READ()){
|
||||
r |= 0x1;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::spiWrite(uint8_t b) {
|
||||
if(_sclk < 0){
|
||||
HSPI_WRITE(b);
|
||||
return;
|
||||
}
|
||||
for(uint8_t bit = 0x80; bit; bit >>= 1){
|
||||
if((b) & bit){
|
||||
SSPI_MOSI_HIGH();
|
||||
} else {
|
||||
SSPI_MOSI_LOW();
|
||||
}
|
||||
SSPI_SCK_LOW();
|
||||
SSPI_SCK_HIGH();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Transaction API
|
||||
* */
|
||||
|
||||
void Adafruit_ILI9341::startWrite(void){
|
||||
SPI_BEGIN_TRANSACTION();
|
||||
SPI_CS_LOW();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::endWrite(void){
|
||||
SPI_CS_HIGH();
|
||||
SPI_END_TRANSACTION();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writeCommand(uint8_t cmd){
|
||||
SPI_DC_LOW();
|
||||
spiWrite(cmd);
|
||||
SPI_DC_HIGH();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) {
|
||||
uint32_t xa = ((uint32_t)x << 16) | (x+w-1);
|
||||
uint32_t ya = ((uint32_t)y << 16) | (y+h-1);
|
||||
writeCommand(ILI9341_CASET); // Column addr set
|
||||
SPI_WRITE32(xa);
|
||||
writeCommand(ILI9341_PASET); // Row addr set
|
||||
SPI_WRITE32(ya);
|
||||
writeCommand(ILI9341_RAMWR); // write to RAM
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::pushColor(uint16_t color) {
|
||||
startWrite();
|
||||
SPI_WRITE16(color);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
|
||||
void Adafruit_ILI9341::writePixel(uint16_t color){
|
||||
SPI_WRITE16(color);
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writePixels(uint16_t * colors, uint32_t len){
|
||||
SPI_WRITE_PIXELS((uint8_t*)colors , len * 2);
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writeColor(uint16_t color, uint32_t len){
|
||||
#ifdef SPI_HAS_WRITE_PIXELS
|
||||
if(_sclk >= 0){
|
||||
for (uint32_t t=0; t<len; t++){
|
||||
writePixel(color);
|
||||
}
|
||||
return;
|
||||
}
|
||||
static uint16_t temp[SPI_MAX_PIXELS_AT_ONCE];
|
||||
size_t blen = (len > SPI_MAX_PIXELS_AT_ONCE)?SPI_MAX_PIXELS_AT_ONCE:len;
|
||||
uint16_t tlen = 0;
|
||||
|
||||
for (uint32_t t=0; t<blen; t++){
|
||||
temp[t] = color;
|
||||
}
|
||||
|
||||
while(len){
|
||||
tlen = (len>blen)?blen:len;
|
||||
writePixels(temp, tlen);
|
||||
len -= tlen;
|
||||
}
|
||||
#else
|
||||
uint8_t hi = color >> 8, lo = color;
|
||||
if(_sclk < 0){ //AVR Optimization
|
||||
for (uint32_t t=len; t; t--){
|
||||
HSPI_WRITE(hi);
|
||||
HSPI_WRITE(lo);
|
||||
}
|
||||
return;
|
||||
}
|
||||
for (uint32_t t=len; t; t--){
|
||||
spiWrite(hi);
|
||||
spiWrite(lo);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writePixel(int16_t x, int16_t y, uint16_t color) {
|
||||
if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return;
|
||||
setAddrWindow(x,y,1,1);
|
||||
writePixel(color);
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color){
|
||||
if((x >= _width) || (y >= _height)) return;
|
||||
int16_t x2 = x + w - 1, y2 = y + h - 1;
|
||||
if((x2 < 0) || (y2 < 0)) return;
|
||||
|
||||
// Clip left/top
|
||||
if(x < 0) {
|
||||
x = 0;
|
||||
w = x2 + 1;
|
||||
}
|
||||
if(y < 0) {
|
||||
y = 0;
|
||||
h = y2 + 1;
|
||||
}
|
||||
|
||||
// Clip right/bottom
|
||||
if(x2 >= _width) w = _width - x;
|
||||
if(y2 >= _height) h = _height - y;
|
||||
|
||||
int32_t len = (int32_t)w * h;
|
||||
setAddrWindow(x, y, w, h);
|
||||
writeColor(color, len);
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color){
|
||||
writeFillRect(x, y, 1, h, color);
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color){
|
||||
writeFillRect(x, y, w, 1, color);
|
||||
}
|
||||
|
||||
uint8_t Adafruit_ILI9341::readcommand8(uint8_t c, uint8_t index) {
|
||||
uint32_t freq = _freq;
|
||||
if(_freq > 24000000){
|
||||
_freq = 24000000;
|
||||
}
|
||||
startWrite();
|
||||
writeCommand(0xD9); // woo sekret command?
|
||||
spiWrite(0x10 + index);
|
||||
writeCommand(c);
|
||||
uint8_t r = spiRead();
|
||||
endWrite();
|
||||
_freq = freq;
|
||||
return r;
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::drawPixel(int16_t x, int16_t y, uint16_t color){
|
||||
startWrite();
|
||||
writePixel(x, y, color);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::drawFastVLine(int16_t x, int16_t y,
|
||||
int16_t h, uint16_t color) {
|
||||
startWrite();
|
||||
writeFastVLine(x, y, h, color);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::drawFastHLine(int16_t x, int16_t y,
|
||||
int16_t w, uint16_t color) {
|
||||
startWrite();
|
||||
writeFastHLine(x, y, w, color);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
void Adafruit_ILI9341::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
|
||||
uint16_t color) {
|
||||
startWrite();
|
||||
writeFillRect(x,y,w,h,color);
|
||||
endWrite();
|
||||
}
|
||||
|
||||
// Adapted from https://github.com/PaulStoffregen/ILI9341_t3
|
||||
// by Marc MERLIN. See examples/pictureEmbed to use this.
|
||||
// 5/6/2017: function name and arguments have changed for compatibility
|
||||
// with current GFX library and to avoid naming problems in prior
|
||||
// implementation. Formerly drawBitmap() with arguments in different order.
|
||||
void Adafruit_ILI9341::drawRGBBitmap(int16_t x, int16_t y,
|
||||
uint16_t *pcolors, int16_t w, int16_t h) {
|
||||
|
||||
int16_t x2, y2; // Lower-right coord
|
||||
if(( x >= _width ) || // Off-edge right
|
||||
( y >= _height) || // " top
|
||||
((x2 = (x+w-1)) < 0 ) || // " left
|
||||
((y2 = (y+h-1)) < 0) ) return; // " bottom
|
||||
|
||||
int16_t bx1=0, by1=0, // Clipped top-left within bitmap
|
||||
saveW=w; // Save original bitmap width value
|
||||
if(x < 0) { // Clip left
|
||||
w += x;
|
||||
bx1 = -x;
|
||||
x = 0;
|
||||
}
|
||||
if(y < 0) { // Clip top
|
||||
h += y;
|
||||
by1 = -y;
|
||||
y = 0;
|
||||
}
|
||||
if(x2 >= _width ) w = _width - x; // Clip right
|
||||
if(y2 >= _height) h = _height - y; // Clip bottom
|
||||
|
||||
pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left
|
||||
startWrite();
|
||||
setAddrWindow(x, y, w, h); // Clipped area
|
||||
while(h--) { // For each (clipped) scanline...
|
||||
writePixels(pcolors, w); // Push one (clipped) row
|
||||
pcolors += saveW; // Advance pointer by one full (unclipped) line
|
||||
}
|
||||
endWrite();
|
||||
}
|
||||
@ -0,0 +1,200 @@
|
||||
/******************************************************************
|
||||
This is our library for the Adafruit ILI9341 Breakout and Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required
|
||||
to interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source
|
||||
code, please support Adafruit and open-source hardware by
|
||||
purchasing products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
*******************************************************************/
|
||||
|
||||
#ifndef _ADAFRUIT_ILI9341H_
|
||||
#define _ADAFRUIT_ILI9341H_
|
||||
|
||||
#if ARDUINO >= 100
|
||||
#include "Arduino.h"
|
||||
#include "Print.h"
|
||||
#else
|
||||
#include "WProgram.h"
|
||||
#endif
|
||||
#include <SPI.h>
|
||||
#include "Adafruit_GFX.h"
|
||||
|
||||
#if defined(ARDUINO_STM32_FEATHER)
|
||||
typedef volatile uint32 RwReg;
|
||||
#endif
|
||||
#if defined(ARDUINO_FEATHER52)
|
||||
typedef volatile uint32_t RwReg;
|
||||
#endif
|
||||
|
||||
#define ILI9341_TFTWIDTH 240
|
||||
#define ILI9341_TFTHEIGHT 320
|
||||
|
||||
#define ILI9341_NOP 0x00
|
||||
#define ILI9341_SWRESET 0x01
|
||||
#define ILI9341_RDDID 0x04
|
||||
#define ILI9341_RDDST 0x09
|
||||
|
||||
#define ILI9341_SLPIN 0x10
|
||||
#define ILI9341_SLPOUT 0x11
|
||||
#define ILI9341_PTLON 0x12
|
||||
#define ILI9341_NORON 0x13
|
||||
|
||||
#define ILI9341_RDMODE 0x0A
|
||||
#define ILI9341_RDMADCTL 0x0B
|
||||
#define ILI9341_RDPIXFMT 0x0C
|
||||
#define ILI9341_RDIMGFMT 0x0D
|
||||
#define ILI9341_RDSELFDIAG 0x0F
|
||||
|
||||
#define ILI9341_INVOFF 0x20
|
||||
#define ILI9341_INVON 0x21
|
||||
#define ILI9341_GAMMASET 0x26
|
||||
#define ILI9341_DISPOFF 0x28
|
||||
#define ILI9341_DISPON 0x29
|
||||
|
||||
#define ILI9341_CASET 0x2A
|
||||
#define ILI9341_PASET 0x2B
|
||||
#define ILI9341_RAMWR 0x2C
|
||||
#define ILI9341_RAMRD 0x2E
|
||||
|
||||
#define ILI9341_PTLAR 0x30
|
||||
#define ILI9341_MADCTL 0x36
|
||||
#define ILI9341_VSCRSADD 0x37
|
||||
#define ILI9341_PIXFMT 0x3A
|
||||
|
||||
#define ILI9341_FRMCTR1 0xB1
|
||||
#define ILI9341_FRMCTR2 0xB2
|
||||
#define ILI9341_FRMCTR3 0xB3
|
||||
#define ILI9341_INVCTR 0xB4
|
||||
#define ILI9341_DFUNCTR 0xB6
|
||||
|
||||
#define ILI9341_PWCTR1 0xC0
|
||||
#define ILI9341_PWCTR2 0xC1
|
||||
#define ILI9341_PWCTR3 0xC2
|
||||
#define ILI9341_PWCTR4 0xC3
|
||||
#define ILI9341_PWCTR5 0xC4
|
||||
#define ILI9341_VMCTR1 0xC5
|
||||
#define ILI9341_VMCTR2 0xC7
|
||||
|
||||
#define ILI9341_RDID1 0xDA
|
||||
#define ILI9341_RDID2 0xDB
|
||||
#define ILI9341_RDID3 0xDC
|
||||
#define ILI9341_RDID4 0xDD
|
||||
|
||||
#define ILI9341_GMCTRP1 0xE0
|
||||
#define ILI9341_GMCTRN1 0xE1
|
||||
/*
|
||||
#define ILI9341_PWCTR6 0xFC
|
||||
|
||||
*/
|
||||
|
||||
// Color definitions
|
||||
#define ILI9341_BLACK 0x0000 /* 0, 0, 0 */
|
||||
#define ILI9341_NAVY 0x000F /* 0, 0, 128 */
|
||||
#define ILI9341_DARKGREEN 0x03E0 /* 0, 128, 0 */
|
||||
#define ILI9341_DARKCYAN 0x03EF /* 0, 128, 128 */
|
||||
#define ILI9341_MAROON 0x7800 /* 128, 0, 0 */
|
||||
#define ILI9341_PURPLE 0x780F /* 128, 0, 128 */
|
||||
#define ILI9341_OLIVE 0x7BE0 /* 128, 128, 0 */
|
||||
#define ILI9341_LIGHTGREY 0xC618 /* 192, 192, 192 */
|
||||
#define ILI9341_DARKGREY 0x7BEF /* 128, 128, 128 */
|
||||
#define ILI9341_BLUE 0x001F /* 0, 0, 255 */
|
||||
#define ILI9341_GREEN 0x07E0 /* 0, 255, 0 */
|
||||
#define ILI9341_CYAN 0x07FF /* 0, 255, 255 */
|
||||
#define ILI9341_RED 0xF800 /* 255, 0, 0 */
|
||||
#define ILI9341_MAGENTA 0xF81F /* 255, 0, 255 */
|
||||
#define ILI9341_YELLOW 0xFFE0 /* 255, 255, 0 */
|
||||
#define ILI9341_WHITE 0xFFFF /* 255, 255, 255 */
|
||||
#define ILI9341_ORANGE 0xFD20 /* 255, 165, 0 */
|
||||
#define ILI9341_GREENYELLOW 0xAFE5 /* 173, 255, 47 */
|
||||
#define ILI9341_PINK 0xF81F
|
||||
|
||||
#if defined (__AVR__) || defined(TEENSYDUINO) || defined(ESP8266) || defined (ESP32) || defined(__arm__)
|
||||
#define USE_FAST_PINIO
|
||||
#endif
|
||||
|
||||
class Adafruit_ILI9341 : public Adafruit_GFX {
|
||||
protected:
|
||||
|
||||
public:
|
||||
Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK, int8_t _RST = -1, int8_t _MISO = -1);
|
||||
Adafruit_ILI9341(int8_t _CS, int8_t _DC, int8_t _RST = -1);
|
||||
|
||||
#ifndef ESP32
|
||||
void begin(uint32_t freq = 0);
|
||||
#else
|
||||
void begin(uint32_t freq = 0, SPIClass &spi=SPI);
|
||||
#endif
|
||||
void setRotation(uint8_t r);
|
||||
void invertDisplay(boolean i);
|
||||
void scrollTo(uint16_t y);
|
||||
|
||||
// Required Non-Transaction
|
||||
void drawPixel(int16_t x, int16_t y, uint16_t color);
|
||||
|
||||
// Transaction API
|
||||
void startWrite(void);
|
||||
void endWrite(void);
|
||||
void writePixel(int16_t x, int16_t y, uint16_t color);
|
||||
void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
|
||||
void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
|
||||
void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
|
||||
|
||||
// Transaction API not used by GFX
|
||||
void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
void writePixel(uint16_t color);
|
||||
void writePixels(uint16_t * colors, uint32_t len);
|
||||
void writeColor(uint16_t color, uint32_t len);
|
||||
void pushColor(uint16_t color);
|
||||
|
||||
// Recommended Non-Transaction
|
||||
void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
|
||||
void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
|
||||
void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
|
||||
|
||||
using Adafruit_GFX::drawRGBBitmap; // Check base class first
|
||||
void drawRGBBitmap(int16_t x, int16_t y,
|
||||
uint16_t *pcolors, int16_t w, int16_t h);
|
||||
|
||||
uint8_t readcommand8(uint8_t reg, uint8_t index = 0);
|
||||
|
||||
uint16_t color565(uint8_t r, uint8_t g, uint8_t b);
|
||||
|
||||
private:
|
||||
#ifdef ESP32
|
||||
SPIClass _spi;
|
||||
#endif
|
||||
uint32_t _freq;
|
||||
#if defined (__AVR__) || defined(TEENSYDUINO)
|
||||
int8_t _cs, _dc, _rst, _sclk, _mosi, _miso;
|
||||
#ifdef USE_FAST_PINIO
|
||||
volatile uint8_t *mosiport, *misoport, *clkport, *dcport, *csport;
|
||||
uint8_t mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask;
|
||||
#endif
|
||||
#elif defined (__arm__)
|
||||
int32_t _cs, _dc, _rst, _sclk, _mosi, _miso;
|
||||
#ifdef USE_FAST_PINIO
|
||||
volatile RwReg *mosiport, *misoport, *clkport, *dcport, *csport;
|
||||
uint32_t mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask;
|
||||
#endif
|
||||
#elif defined (ESP8266) || defined (ESP32)
|
||||
int8_t _cs, _dc, _rst, _sclk, _mosi, _miso;
|
||||
#ifdef USE_FAST_PINIO
|
||||
volatile uint32_t *mosiport, *misoport, *clkport, *dcport, *csport;
|
||||
uint32_t mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask;
|
||||
#endif
|
||||
#else
|
||||
int8_t _cs, _dc, _rst, _sclk, _mosi, _miso;
|
||||
#endif
|
||||
|
||||
void writeCommand(uint8_t cmd);
|
||||
void spiWrite(uint8_t v);
|
||||
uint8_t spiRead(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,21 @@
|
||||
This is a library for the Adafruit ILI9341 display products
|
||||
|
||||
This library works with the Adafruit 2.8" Touch Shield V2 (SPI)
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams.
|
||||
These displays use SPI to communicate, 4 or 5 pins are required
|
||||
to interface (RST is optional).
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
|
||||
To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ILI9341. Check that the Adafruit_ILI9341 folder contains Adafruit_ILI9341.cpp and Adafruit_ILI9341.
|
||||
|
||||
Place the Adafruit_ILI9341 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE
|
||||
|
||||
Also requires the Adafruit_GFX library for Arduino.
|
||||
145
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/breakouttouchpaint/breakouttouchpaint.ino
Normal file
145
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/breakouttouchpaint/breakouttouchpaint.ino
Normal file
@ -0,0 +1,145 @@
|
||||
/***************************************************
|
||||
This is our touchscreen painting example for the Adafruit ILI9341 Breakout
|
||||
----> http://www.adafruit.com/products/1770
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
/** NOT FOR USE WITH THE TOUCH SHIELD, ONLY FOR THE BREAKOUT! **/
|
||||
|
||||
#include <Adafruit_GFX.h> // Core graphics library
|
||||
#include <SPI.h>
|
||||
#include <Adafruit_ILI9341.h>
|
||||
#include "TouchScreen.h"
|
||||
|
||||
// These are the four touchscreen analog pins
|
||||
#define YP A2 // must be an analog pin, use "An" notation!
|
||||
#define XM A3 // must be an analog pin, use "An" notation!
|
||||
#define YM 5 // can be a digital pin
|
||||
#define XP 4 // can be a digital pin
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 150
|
||||
#define TS_MINY 120
|
||||
#define TS_MAXX 920
|
||||
#define TS_MAXY 940
|
||||
|
||||
#define MINPRESSURE 10
|
||||
#define MAXPRESSURE 1000
|
||||
|
||||
// The display uses hardware SPI, plus #9 & #10
|
||||
#define TFT_CS 10
|
||||
#define TFT_DC 9
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
// For better pressure precision, we need to know the resistance
|
||||
// between X+ and X- Use any multimeter to read it
|
||||
// For the one we're using, its 300 ohms across the X plate
|
||||
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
|
||||
|
||||
// Size of the color selection boxes and the paintbrush size
|
||||
#define BOXSIZE 40
|
||||
#define PENRADIUS 3
|
||||
int oldcolor, currentcolor;
|
||||
|
||||
void setup(void) {
|
||||
// while (!Serial); // used for leonardo debugging
|
||||
|
||||
Serial.begin(9600);
|
||||
Serial.println(F("Touch Paint!"));
|
||||
|
||||
tft.begin();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
|
||||
// make the color selection boxes
|
||||
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
|
||||
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
|
||||
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
|
||||
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
|
||||
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
|
||||
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
|
||||
|
||||
// select the current color 'red'
|
||||
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
currentcolor = ILI9341_RED;
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
// Retrieve a point
|
||||
TSPoint p = ts.getPoint();
|
||||
|
||||
/*
|
||||
Serial.print("X = "); Serial.print(p.x);
|
||||
Serial.print("\tY = "); Serial.print(p.y);
|
||||
Serial.print("\tPressure = "); Serial.println(p.z);
|
||||
*/
|
||||
|
||||
// we have some minimum pressure we consider 'valid'
|
||||
// pressure of 0 means no pressing!
|
||||
if (p.z < MINPRESSURE || p.z > MAXPRESSURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Scale from ~0->1000 to tft.width using the calibration #'s
|
||||
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
|
||||
/*
|
||||
Serial.print("("); Serial.print(p.x);
|
||||
Serial.print(", "); Serial.print(p.y);
|
||||
Serial.println(")");
|
||||
*/
|
||||
|
||||
|
||||
if (p.y < BOXSIZE) {
|
||||
oldcolor = currentcolor;
|
||||
|
||||
if (p.x < BOXSIZE) {
|
||||
currentcolor = ILI9341_RED;
|
||||
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*2) {
|
||||
currentcolor = ILI9341_YELLOW;
|
||||
tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*3) {
|
||||
currentcolor = ILI9341_GREEN;
|
||||
tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*4) {
|
||||
currentcolor = ILI9341_CYAN;
|
||||
tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*5) {
|
||||
currentcolor = ILI9341_BLUE;
|
||||
tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*6) {
|
||||
currentcolor = ILI9341_MAGENTA;
|
||||
tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
}
|
||||
|
||||
if (oldcolor != currentcolor) {
|
||||
if (oldcolor == ILI9341_RED)
|
||||
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
|
||||
if (oldcolor == ILI9341_YELLOW)
|
||||
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
|
||||
if (oldcolor == ILI9341_GREEN)
|
||||
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
|
||||
if (oldcolor == ILI9341_CYAN)
|
||||
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
|
||||
if (oldcolor == ILI9341_BLUE)
|
||||
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
|
||||
if (oldcolor == ILI9341_MAGENTA)
|
||||
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
|
||||
}
|
||||
}
|
||||
if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) {
|
||||
tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor);
|
||||
}
|
||||
}
|
||||
247
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/fulltest_featherwing/fulltest_featherwing.ino
Normal file
247
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/fulltest_featherwing/fulltest_featherwing.ino
Normal file
@ -0,0 +1,247 @@
|
||||
/***************************************************
|
||||
This is our touchscreen painting example for the Adafruit TFT FeatherWing
|
||||
----> http://www.adafruit.com/products/3315
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
#include <SPI.h>
|
||||
#include <Wire.h> // this is needed even tho we aren't using it
|
||||
|
||||
#include <Adafruit_GFX.h> // Core graphics library
|
||||
#include <Adafruit_ILI9341.h> // Hardware-specific library
|
||||
#include <SD.h>
|
||||
#include <Adafruit_STMPE610.h>
|
||||
|
||||
#ifdef ESP8266
|
||||
#define STMPE_CS 16
|
||||
#define TFT_CS 0
|
||||
#define TFT_DC 15
|
||||
#define SD_CS 2
|
||||
#endif
|
||||
#ifdef __AVR_ATmega32U4__
|
||||
#define STMPE_CS 6
|
||||
#define TFT_CS 9
|
||||
#define TFT_DC 10
|
||||
#define SD_CS 5
|
||||
#endif
|
||||
#ifdef ARDUINO_SAMD_FEATHER_M0
|
||||
#define STMPE_CS 6
|
||||
#define TFT_CS 9
|
||||
#define TFT_DC 10
|
||||
#define SD_CS 5
|
||||
#endif
|
||||
#ifdef TEENSYDUINO
|
||||
#define TFT_DC 10
|
||||
#define TFT_CS 4
|
||||
#define STMPE_CS 3
|
||||
#define SD_CS 8
|
||||
#endif
|
||||
#ifdef ARDUINO_STM32_FEATHER
|
||||
#define TFT_DC PB4
|
||||
#define TFT_CS PA15
|
||||
#define STMPE_CS PC7
|
||||
#define SD_CS PC5
|
||||
#endif
|
||||
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
|
||||
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 3800
|
||||
#define TS_MAXX 100
|
||||
#define TS_MINY 100
|
||||
#define TS_MAXY 3750
|
||||
|
||||
#define PENRADIUS 3
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(115200);
|
||||
|
||||
delay(10);
|
||||
Serial.println("FeatherWing TFT");
|
||||
if (!ts.begin()) {
|
||||
Serial.println("Couldn't start touchscreen controller");
|
||||
while (1);
|
||||
}
|
||||
Serial.println("Touchscreen started");
|
||||
|
||||
tft.begin();
|
||||
tft.fillScreen(ILI9341_BLUE);
|
||||
|
||||
yield();
|
||||
|
||||
Serial.print("Initializing SD card...");
|
||||
if (!SD.begin(SD_CS)) {
|
||||
Serial.println("failed!");
|
||||
}
|
||||
Serial.println("OK!");
|
||||
|
||||
bmpDraw("purple.bmp", 0, 0);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Retrieve a point
|
||||
TS_Point p = ts.getPoint();
|
||||
|
||||
Serial.print("X = "); Serial.print(p.x);
|
||||
Serial.print("\tY = "); Serial.print(p.y);
|
||||
Serial.print("\tPressure = "); Serial.println(p.z);
|
||||
|
||||
|
||||
// Scale from ~0->4000 to tft.width using the calibration #'s
|
||||
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
|
||||
if (((p.y-PENRADIUS) > 0) && ((p.y+PENRADIUS) < tft.height())) {
|
||||
tft.fillCircle(p.x, p.y, PENRADIUS, ILI9341_RED);
|
||||
}
|
||||
}
|
||||
|
||||
// This function opens a Windows Bitmap (BMP) file and
|
||||
// displays it at the given coordinates. It's sped up
|
||||
// by reading many pixels worth of data at a time
|
||||
// (rather than pixel by pixel). Increasing the buffer
|
||||
// size takes more of the Arduino's precious RAM but
|
||||
// makes loading a little faster. 20 pixels seems a
|
||||
// good balance.
|
||||
|
||||
#define BUFFPIXEL 20
|
||||
|
||||
void bmpDraw(char *filename, uint8_t x, uint16_t y) {
|
||||
|
||||
File bmpFile;
|
||||
int bmpWidth, bmpHeight; // W+H in pixels
|
||||
uint8_t bmpDepth; // Bit depth (currently must be 24)
|
||||
uint32_t bmpImageoffset; // Start of image data in file
|
||||
uint32_t rowSize; // Not always = bmpWidth; may have padding
|
||||
uint8_t sdbuffer[3*BUFFPIXEL]; // pixel buffer (R+G+B per pixel)
|
||||
uint8_t buffidx = sizeof(sdbuffer); // Current position in sdbuffer
|
||||
boolean goodBmp = false; // Set to true on valid header parse
|
||||
boolean flip = true; // BMP is stored bottom-to-top
|
||||
int w, h, row, col;
|
||||
uint8_t r, g, b;
|
||||
uint32_t pos = 0, startTime = millis();
|
||||
|
||||
if((x >= tft.width()) || (y >= tft.height())) return;
|
||||
|
||||
Serial.println();
|
||||
Serial.print(F("Loading image '"));
|
||||
Serial.print(filename);
|
||||
Serial.println('\'');
|
||||
|
||||
// Open requested file on SD card
|
||||
if ((bmpFile = SD.open(filename)) == NULL) {
|
||||
Serial.print(F("File not found"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Parse BMP header
|
||||
if(read16(bmpFile) == 0x4D42) { // BMP signature
|
||||
Serial.print(F("File size: ")); Serial.println(read32(bmpFile));
|
||||
(void)read32(bmpFile); // Read & ignore creator bytes
|
||||
bmpImageoffset = read32(bmpFile); // Start of image data
|
||||
Serial.print(F("Image Offset: ")); Serial.println(bmpImageoffset, DEC);
|
||||
// Read DIB header
|
||||
Serial.print(F("Header size: ")); Serial.println(read32(bmpFile));
|
||||
bmpWidth = read32(bmpFile);
|
||||
bmpHeight = read32(bmpFile);
|
||||
if(read16(bmpFile) == 1) { // # planes -- must be '1'
|
||||
bmpDepth = read16(bmpFile); // bits per pixel
|
||||
Serial.print(F("Bit Depth: ")); Serial.println(bmpDepth);
|
||||
if((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed
|
||||
|
||||
goodBmp = true; // Supported BMP format -- proceed!
|
||||
Serial.print(F("Image size: "));
|
||||
Serial.print(bmpWidth);
|
||||
Serial.print('x');
|
||||
Serial.println(bmpHeight);
|
||||
|
||||
// BMP rows are padded (if needed) to 4-byte boundary
|
||||
rowSize = (bmpWidth * 3 + 3) & ~3;
|
||||
|
||||
// If bmpHeight is negative, image is in top-down order.
|
||||
// This is not canon but has been observed in the wild.
|
||||
if(bmpHeight < 0) {
|
||||
bmpHeight = -bmpHeight;
|
||||
flip = false;
|
||||
}
|
||||
|
||||
// Crop area to be loaded
|
||||
w = bmpWidth;
|
||||
h = bmpHeight;
|
||||
if((x+w-1) >= tft.width()) w = tft.width() - x;
|
||||
if((y+h-1) >= tft.height()) h = tft.height() - y;
|
||||
|
||||
// Set TFT address window to clipped image bounds
|
||||
tft.setAddrWindow(x, y, x+w-1, y+h-1);
|
||||
|
||||
for (row=0; row<h; row++) { // For each scanline...
|
||||
|
||||
// Seek to start of scan line. It might seem labor-
|
||||
// intensive to be doing this on every line, but this
|
||||
// method covers a lot of gritty details like cropping
|
||||
// and scanline padding. Also, the seek only takes
|
||||
// place if the file position actually needs to change
|
||||
// (avoids a lot of cluster math in SD library).
|
||||
if(flip) // Bitmap is stored bottom-to-top order (normal BMP)
|
||||
pos = bmpImageoffset + (bmpHeight - 1 - row) * rowSize;
|
||||
else // Bitmap is stored top-to-bottom
|
||||
pos = bmpImageoffset + row * rowSize;
|
||||
if(bmpFile.position() != pos) { // Need seek?
|
||||
bmpFile.seek(pos);
|
||||
buffidx = sizeof(sdbuffer); // Force buffer reload
|
||||
}
|
||||
|
||||
for (col=0; col<w; col++) { // For each pixel...
|
||||
// Time to read more pixel data?
|
||||
if (buffidx >= sizeof(sdbuffer)) { // Indeed
|
||||
bmpFile.read(sdbuffer, sizeof(sdbuffer));
|
||||
buffidx = 0; // Set index to beginning
|
||||
}
|
||||
|
||||
// Convert pixel from BMP to TFT format, push to display
|
||||
b = sdbuffer[buffidx++];
|
||||
g = sdbuffer[buffidx++];
|
||||
r = sdbuffer[buffidx++];
|
||||
tft.pushColor(tft.color565(r,g,b));
|
||||
} // end pixel
|
||||
} // end scanline
|
||||
Serial.print(F("Loaded in "));
|
||||
Serial.print(millis() - startTime);
|
||||
Serial.println(" ms");
|
||||
} // end goodBmp
|
||||
}
|
||||
}
|
||||
|
||||
bmpFile.close();
|
||||
if(!goodBmp) Serial.println(F("BMP format not recognized."));
|
||||
}
|
||||
|
||||
// These read 16- and 32-bit types from the SD card file.
|
||||
// BMP data is stored little-endian, Arduino is little-endian too.
|
||||
// May need to reverse subscript order if porting elsewhere.
|
||||
|
||||
uint16_t read16(File &f) {
|
||||
uint16_t result;
|
||||
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||
((uint8_t *)&result)[1] = f.read(); // MSB
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32_t read32(File &f) {
|
||||
uint32_t result;
|
||||
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||
((uint8_t *)&result)[1] = f.read();
|
||||
((uint8_t *)&result)[2] = f.read();
|
||||
((uint8_t *)&result)[3] = f.read(); // MSB
|
||||
return result;
|
||||
}
|
||||
365
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino
Normal file
365
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/graphicstest/graphicstest.ino
Normal file
@ -0,0 +1,365 @@
|
||||
/***************************************************
|
||||
This is our GFX example for the Adafruit ILI9341 Breakout and Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
|
||||
#include "SPI.h"
|
||||
#include "Adafruit_GFX.h"
|
||||
#include "Adafruit_ILI9341.h"
|
||||
|
||||
// For the Adafruit shield, these are the default.
|
||||
#define TFT_DC 9
|
||||
#define TFT_CS 10
|
||||
|
||||
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
// If using the breakout, change pins as desired
|
||||
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.println("ILI9341 Test!");
|
||||
|
||||
tft.begin();
|
||||
|
||||
// read diagnostics (optional but can help debug problems)
|
||||
uint8_t x = tft.readcommand8(ILI9341_RDMODE);
|
||||
Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDMADCTL);
|
||||
Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDPIXFMT);
|
||||
Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDIMGFMT);
|
||||
Serial.print("Image Format: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDSELFDIAG);
|
||||
Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);
|
||||
|
||||
Serial.println(F("Benchmark Time (microseconds)"));
|
||||
delay(10);
|
||||
Serial.print(F("Screen fill "));
|
||||
Serial.println(testFillScreen());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Text "));
|
||||
Serial.println(testText());
|
||||
delay(3000);
|
||||
|
||||
Serial.print(F("Lines "));
|
||||
Serial.println(testLines(ILI9341_CYAN));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Horiz/Vert Lines "));
|
||||
Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rectangles (outline) "));
|
||||
Serial.println(testRects(ILI9341_GREEN));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rectangles (filled) "));
|
||||
Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Circles (filled) "));
|
||||
Serial.println(testFilledCircles(10, ILI9341_MAGENTA));
|
||||
|
||||
Serial.print(F("Circles (outline) "));
|
||||
Serial.println(testCircles(10, ILI9341_WHITE));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Triangles (outline) "));
|
||||
Serial.println(testTriangles());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Triangles (filled) "));
|
||||
Serial.println(testFilledTriangles());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rounded rects (outline) "));
|
||||
Serial.println(testRoundRects());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rounded rects (filled) "));
|
||||
Serial.println(testFilledRoundRects());
|
||||
delay(500);
|
||||
|
||||
Serial.println(F("Done!"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop(void) {
|
||||
for(uint8_t rotation=0; rotation<4; rotation++) {
|
||||
tft.setRotation(rotation);
|
||||
testText();
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long testFillScreen() {
|
||||
unsigned long start = micros();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_RED);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_GREEN);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLUE);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testText() {
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
unsigned long start = micros();
|
||||
tft.setCursor(0, 0);
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);
|
||||
tft.println("Hello World!");
|
||||
tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
|
||||
tft.println(1234.56);
|
||||
tft.setTextColor(ILI9341_RED); tft.setTextSize(3);
|
||||
tft.println(0xDEADBEEF, HEX);
|
||||
tft.println();
|
||||
tft.setTextColor(ILI9341_GREEN);
|
||||
tft.setTextSize(5);
|
||||
tft.println("Groop");
|
||||
tft.setTextSize(2);
|
||||
tft.println("I implore thee,");
|
||||
tft.setTextSize(1);
|
||||
tft.println("my foonting turlingdromes.");
|
||||
tft.println("And hooptiously drangle me");
|
||||
tft.println("with crinkly bindlewurdles,");
|
||||
tft.println("Or I will rend thee");
|
||||
tft.println("in the gobberwarts");
|
||||
tft.println("with my blurglecruncheon,");
|
||||
tft.println("see if I don't!");
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testLines(uint16_t color) {
|
||||
unsigned long start, t;
|
||||
int x1, y1, x2, y2,
|
||||
w = tft.width(),
|
||||
h = tft.height();
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = y1 = 0;
|
||||
y2 = h - 1;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = w - 1;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
t = micros() - start; // fillScreen doesn't count against timing
|
||||
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = w - 1;
|
||||
y1 = 0;
|
||||
y2 = h - 1;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = 0;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
t += micros() - start;
|
||||
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = 0;
|
||||
y1 = h - 1;
|
||||
y2 = 0;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = w - 1;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
t += micros() - start;
|
||||
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = w - 1;
|
||||
y1 = h - 1;
|
||||
y2 = 0;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = 0;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
|
||||
yield();
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start;
|
||||
int x, y, w = tft.width(), h = tft.height();
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
|
||||
for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testRects(uint16_t color) {
|
||||
unsigned long start;
|
||||
int n, i, i2,
|
||||
cx = tft.width() / 2,
|
||||
cy = tft.height() / 2;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(tft.width(), tft.height());
|
||||
start = micros();
|
||||
for(i=2; i<n; i+=6) {
|
||||
i2 = i / 2;
|
||||
tft.drawRect(cx-i2, cy-i2, i, i, color);
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start, t = 0;
|
||||
int n, i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(tft.width(), tft.height());
|
||||
for(i=n; i>0; i-=6) {
|
||||
i2 = i / 2;
|
||||
start = micros();
|
||||
tft.fillRect(cx-i2, cy-i2, i, i, color1);
|
||||
t += micros() - start;
|
||||
// Outlines are not included in timing results
|
||||
tft.drawRect(cx-i2, cy-i2, i, i, color2);
|
||||
yield();
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
|
||||
unsigned long start;
|
||||
int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(x=radius; x<w; x+=r2) {
|
||||
for(y=radius; y<h; y+=r2) {
|
||||
tft.fillCircle(x, y, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testCircles(uint8_t radius, uint16_t color) {
|
||||
unsigned long start;
|
||||
int x, y, r2 = radius * 2,
|
||||
w = tft.width() + radius,
|
||||
h = tft.height() + radius;
|
||||
|
||||
// Screen is not cleared for this one -- this is
|
||||
// intentional and does not affect the reported time.
|
||||
start = micros();
|
||||
for(x=0; x<w; x+=r2) {
|
||||
for(y=0; y<h; y+=r2) {
|
||||
tft.drawCircle(x, y, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testTriangles() {
|
||||
unsigned long start;
|
||||
int n, i, cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(cx, cy);
|
||||
start = micros();
|
||||
for(i=0; i<n; i+=5) {
|
||||
tft.drawTriangle(
|
||||
cx , cy - i, // peak
|
||||
cx - i, cy + i, // bottom left
|
||||
cx + i, cy + i, // bottom right
|
||||
tft.color565(i, i, i));
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledTriangles() {
|
||||
unsigned long start, t = 0;
|
||||
int i, cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(i=min(cx,cy); i>10; i-=5) {
|
||||
start = micros();
|
||||
tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
|
||||
tft.color565(0, i*10, i*10));
|
||||
t += micros() - start;
|
||||
tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
|
||||
tft.color565(i*10, i*10, 0));
|
||||
yield();
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
unsigned long testRoundRects() {
|
||||
unsigned long start;
|
||||
int w, i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
w = min(tft.width(), tft.height());
|
||||
start = micros();
|
||||
for(i=0; i<w; i+=6) {
|
||||
i2 = i / 2;
|
||||
tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledRoundRects() {
|
||||
unsigned long start;
|
||||
int i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(i=min(tft.width(), tft.height()); i>20; i-=6) {
|
||||
i2 = i / 2;
|
||||
tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
|
||||
yield();
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
389
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/graphicstest_featherwing/graphicstest_featherwing.ino
Normal file
389
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/graphicstest_featherwing/graphicstest_featherwing.ino
Normal file
@ -0,0 +1,389 @@
|
||||
/***************************************************
|
||||
This is our GFX example for the Adafruit ILI9341 TFT FeatherWing
|
||||
----> http://www.adafruit.com/products/3315
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
#include <SPI.h>
|
||||
#include <Adafruit_GFX.h>
|
||||
#include <Adafruit_ILI9341.h>
|
||||
|
||||
#ifdef ESP8266
|
||||
#define STMPE_CS 16
|
||||
#define TFT_CS 0
|
||||
#define TFT_DC 15
|
||||
#define SD_CS 2
|
||||
#endif
|
||||
#ifdef __AVR_ATmega32U4__
|
||||
#define STMPE_CS 6
|
||||
#define TFT_CS 9
|
||||
#define TFT_DC 10
|
||||
#define SD_CS 5
|
||||
#endif
|
||||
#ifdef ARDUINO_SAMD_FEATHER_M0
|
||||
#define STMPE_CS 6
|
||||
#define TFT_CS 9
|
||||
#define TFT_DC 10
|
||||
#define SD_CS 5
|
||||
#endif
|
||||
#ifdef TEENSYDUINO
|
||||
#define TFT_DC 10
|
||||
#define TFT_CS 4
|
||||
#define STMPE_CS 3
|
||||
#define SD_CS 8
|
||||
#endif
|
||||
#ifdef ARDUINO_STM32_FEATHER
|
||||
#define TFT_DC PB4
|
||||
#define TFT_CS PA15
|
||||
#define STMPE_CS PC7
|
||||
#define SD_CS PC5
|
||||
#endif
|
||||
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
delay(10);
|
||||
Serial.println("FeatherWing TFT Test!");
|
||||
|
||||
tft.begin();
|
||||
|
||||
// read diagnostics (optional but can help debug problems)
|
||||
uint8_t x = tft.readcommand8(ILI9341_RDMODE);
|
||||
Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDMADCTL);
|
||||
Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDPIXFMT);
|
||||
Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDIMGFMT);
|
||||
Serial.print("Image Format: 0x"); Serial.println(x, HEX);
|
||||
x = tft.readcommand8(ILI9341_RDSELFDIAG);
|
||||
Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);
|
||||
|
||||
Serial.println(F("Benchmark Time (microseconds)"));
|
||||
delay(10);
|
||||
Serial.print(F("Screen fill "));
|
||||
Serial.println(testFillScreen());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Text "));
|
||||
Serial.println(testText());
|
||||
delay(3000);
|
||||
|
||||
Serial.print(F("Lines "));
|
||||
Serial.println(testLines(ILI9341_CYAN));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Horiz/Vert Lines "));
|
||||
Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rectangles (outline) "));
|
||||
Serial.println(testRects(ILI9341_GREEN));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rectangles (filled) "));
|
||||
Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Circles (filled) "));
|
||||
Serial.println(testFilledCircles(10, ILI9341_MAGENTA));
|
||||
|
||||
Serial.print(F("Circles (outline) "));
|
||||
Serial.println(testCircles(10, ILI9341_WHITE));
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Triangles (outline) "));
|
||||
Serial.println(testTriangles());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Triangles (filled) "));
|
||||
Serial.println(testFilledTriangles());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rounded rects (outline) "));
|
||||
Serial.println(testRoundRects());
|
||||
delay(500);
|
||||
|
||||
Serial.print(F("Rounded rects (filled) "));
|
||||
Serial.println(testFilledRoundRects());
|
||||
delay(500);
|
||||
|
||||
Serial.println(F("Done!"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop(void) {
|
||||
for(uint8_t rotation=0; rotation<4; rotation++) {
|
||||
tft.setRotation(rotation);
|
||||
testText();
|
||||
delay(1000);
|
||||
}
|
||||
}
|
||||
|
||||
unsigned long testFillScreen() {
|
||||
unsigned long start = micros();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_RED);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_GREEN);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLUE);
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testText() {
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
unsigned long start = micros();
|
||||
tft.setCursor(0, 0);
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);
|
||||
tft.println("Hello World!");
|
||||
tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
|
||||
tft.println(1234.56);
|
||||
tft.setTextColor(ILI9341_RED); tft.setTextSize(3);
|
||||
tft.println(0xDEADBEEF, HEX);
|
||||
tft.println();
|
||||
tft.setTextColor(ILI9341_GREEN);
|
||||
tft.setTextSize(5);
|
||||
tft.println("Groop");
|
||||
tft.setTextSize(2);
|
||||
tft.println("I implore thee,");
|
||||
tft.setTextSize(1);
|
||||
tft.println("my foonting turlingdromes.");
|
||||
tft.println("And hooptiously drangle me");
|
||||
tft.println("with crinkly bindlewurdles,");
|
||||
tft.println("Or I will rend thee");
|
||||
tft.println("in the gobberwarts");
|
||||
tft.println("with my blurglecruncheon,");
|
||||
tft.println("see if I don't!");
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testLines(uint16_t color) {
|
||||
unsigned long start, t;
|
||||
int x1, y1, x2, y2,
|
||||
w = tft.width(),
|
||||
h = tft.height();
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = y1 = 0;
|
||||
y2 = h - 1;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = w - 1;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
t = micros() - start; // fillScreen doesn't count against timing
|
||||
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = w - 1;
|
||||
y1 = 0;
|
||||
y2 = h - 1;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = 0;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
t += micros() - start;
|
||||
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = 0;
|
||||
y1 = h - 1;
|
||||
y2 = 0;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = w - 1;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
t += micros() - start;
|
||||
|
||||
yield();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
yield();
|
||||
|
||||
x1 = w - 1;
|
||||
y1 = h - 1;
|
||||
y2 = 0;
|
||||
start = micros();
|
||||
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
x2 = 0;
|
||||
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
|
||||
|
||||
yield();
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start;
|
||||
int x, y, w = tft.width(), h = tft.height();
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
|
||||
for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testRects(uint16_t color) {
|
||||
unsigned long start;
|
||||
int n, i, i2,
|
||||
cx = tft.width() / 2,
|
||||
cy = tft.height() / 2;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(tft.width(), tft.height());
|
||||
start = micros();
|
||||
for(i=2; i<n; i+=6) {
|
||||
i2 = i / 2;
|
||||
tft.drawRect(cx-i2, cy-i2, i, i, color);
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start, t = 0;
|
||||
int n, i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(tft.width(), tft.height());
|
||||
for(i=n; i>0; i-=6) {
|
||||
i2 = i / 2;
|
||||
start = micros();
|
||||
tft.fillRect(cx-i2, cy-i2, i, i, color1);
|
||||
t += micros() - start;
|
||||
// Outlines are not included in timing results
|
||||
tft.drawRect(cx-i2, cy-i2, i, i, color2);
|
||||
yield();
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
|
||||
unsigned long start;
|
||||
int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(x=radius; x<w; x+=r2) {
|
||||
for(y=radius; y<h; y+=r2) {
|
||||
tft.fillCircle(x, y, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testCircles(uint8_t radius, uint16_t color) {
|
||||
unsigned long start;
|
||||
int x, y, r2 = radius * 2,
|
||||
w = tft.width() + radius,
|
||||
h = tft.height() + radius;
|
||||
|
||||
// Screen is not cleared for this one -- this is
|
||||
// intentional and does not affect the reported time.
|
||||
start = micros();
|
||||
for(x=0; x<w; x+=r2) {
|
||||
for(y=0; y<h; y+=r2) {
|
||||
tft.drawCircle(x, y, radius, color);
|
||||
}
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testTriangles() {
|
||||
unsigned long start;
|
||||
int n, i, cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(cx, cy);
|
||||
start = micros();
|
||||
for(i=0; i<n; i+=5) {
|
||||
tft.drawTriangle(
|
||||
cx , cy - i, // peak
|
||||
cx - i, cy + i, // bottom left
|
||||
cx + i, cy + i, // bottom right
|
||||
tft.color565(i, i, i));
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledTriangles() {
|
||||
unsigned long start, t = 0;
|
||||
int i, cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(i=min(cx,cy); i>10; i-=5) {
|
||||
start = micros();
|
||||
tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
|
||||
tft.color565(0, i*10, i*10));
|
||||
t += micros() - start;
|
||||
tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
|
||||
tft.color565(i*10, i*10, 0));
|
||||
yield();
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
unsigned long testRoundRects() {
|
||||
unsigned long start;
|
||||
int w, i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
w = min(tft.width(), tft.height());
|
||||
start = micros();
|
||||
for(i=0; i<w; i+=6) {
|
||||
i2 = i / 2;
|
||||
tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledRoundRects() {
|
||||
unsigned long start;
|
||||
int i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(i=min(tft.width(), tft.height()); i>20; i-=6) {
|
||||
i2 = i / 2;
|
||||
tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
|
||||
yield();
|
||||
}
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
125
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/onoffbutton/onoffbutton.ino
Normal file
125
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/onoffbutton/onoffbutton.ino
Normal file
@ -0,0 +1,125 @@
|
||||
//This example implements a simple sliding On/Off button. The example
|
||||
// demonstrates drawing and touch operations.
|
||||
//
|
||||
//Thanks to Adafruit forums member Asteroid for the original sketch!
|
||||
//
|
||||
#include <Adafruit_GFX.h>
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_ILI9341.h>
|
||||
#include <Adafruit_STMPE610.h>
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 150
|
||||
#define TS_MINY 130
|
||||
#define TS_MAXX 3800
|
||||
#define TS_MAXY 4000
|
||||
|
||||
#define STMPE_CS 8
|
||||
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
|
||||
#define TFT_CS 10
|
||||
#define TFT_DC 9
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
boolean RecordOn = false;
|
||||
|
||||
#define FRAME_X 210
|
||||
#define FRAME_Y 180
|
||||
#define FRAME_W 100
|
||||
#define FRAME_H 50
|
||||
|
||||
#define REDBUTTON_X FRAME_X
|
||||
#define REDBUTTON_Y FRAME_Y
|
||||
#define REDBUTTON_W (FRAME_W/2)
|
||||
#define REDBUTTON_H FRAME_H
|
||||
|
||||
#define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W)
|
||||
#define GREENBUTTON_Y FRAME_Y
|
||||
#define GREENBUTTON_W (FRAME_W/2)
|
||||
#define GREENBUTTON_H FRAME_H
|
||||
|
||||
void drawFrame()
|
||||
{
|
||||
tft.drawRect(FRAME_X, FRAME_Y, FRAME_W, FRAME_H, ILI9341_BLACK);
|
||||
}
|
||||
|
||||
void redBtn()
|
||||
{
|
||||
tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_RED);
|
||||
tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_BLUE);
|
||||
drawFrame();
|
||||
tft.setCursor(GREENBUTTON_X + 6 , GREENBUTTON_Y + (GREENBUTTON_H/2));
|
||||
tft.setTextColor(ILI9341_WHITE);
|
||||
tft.setTextSize(2);
|
||||
tft.println("ON");
|
||||
RecordOn = false;
|
||||
}
|
||||
|
||||
void greenBtn()
|
||||
{
|
||||
tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_GREEN);
|
||||
tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_BLUE);
|
||||
drawFrame();
|
||||
tft.setCursor(REDBUTTON_X + 6 , REDBUTTON_Y + (REDBUTTON_H/2));
|
||||
tft.setTextColor(ILI9341_WHITE);
|
||||
tft.setTextSize(2);
|
||||
tft.println("OFF");
|
||||
RecordOn = true;
|
||||
}
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
Serial.begin(9600);
|
||||
tft.begin();
|
||||
if (!ts.begin()) {
|
||||
Serial.println("Unable to start touchscreen.");
|
||||
}
|
||||
else {
|
||||
Serial.println("Touchscreen started.");
|
||||
}
|
||||
|
||||
tft.fillScreen(ILI9341_BLUE);
|
||||
// origin = left,top landscape (USB left upper)
|
||||
tft.setRotation(1);
|
||||
redBtn();
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// See if there's any touch data for us
|
||||
if (!ts.bufferEmpty())
|
||||
{
|
||||
// Retrieve a point
|
||||
TS_Point p = ts.getPoint();
|
||||
// Scale using the calibration #'s
|
||||
// and rotate coordinate system
|
||||
p.x = map(p.x, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
p.y = map(p.y, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
int y = tft.height() - p.x;
|
||||
int x = p.y;
|
||||
|
||||
if (RecordOn)
|
||||
{
|
||||
if((x > REDBUTTON_X) && (x < (REDBUTTON_X + REDBUTTON_W))) {
|
||||
if ((y > REDBUTTON_Y) && (y <= (REDBUTTON_Y + REDBUTTON_H))) {
|
||||
Serial.println("Red btn hit");
|
||||
redBtn();
|
||||
}
|
||||
}
|
||||
}
|
||||
else //Record is off (RecordOn == false)
|
||||
{
|
||||
if((x > GREENBUTTON_X) && (x < (GREENBUTTON_X + GREENBUTTON_W))) {
|
||||
if ((y > GREENBUTTON_Y) && (y <= (GREENBUTTON_Y + GREENBUTTON_H))) {
|
||||
Serial.println("Green btn hit");
|
||||
greenBtn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println(RecordOn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
133
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/onoffbutton_breakout/onoffbutton_breakout.ino
Normal file
133
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/onoffbutton_breakout/onoffbutton_breakout.ino
Normal file
@ -0,0 +1,133 @@
|
||||
//This example implements a simple sliding On/Off button. The example
|
||||
// demonstrates drawing and touch operations.
|
||||
//
|
||||
//Thanks to Adafruit forums member Asteroid for the original sketch!
|
||||
//
|
||||
#include <Adafruit_GFX.h>
|
||||
#include <SPI.h>
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_ILI9341.h>
|
||||
#include <TouchScreen.h>
|
||||
|
||||
//Touchscreen X+ X- Y+ Y- pins
|
||||
#define YP A3 // must be an analog pin, use "An" notation!
|
||||
#define XM A2 // must be an analog pin, use "An" notation!
|
||||
#define YM 5 // can be a digital pin
|
||||
#define XP 4 // can be a digital pin
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 150
|
||||
#define TS_MINY 120
|
||||
#define TS_MAXX 920
|
||||
#define TS_MAXY 940
|
||||
|
||||
#define MINPRESSURE 10
|
||||
#define MAXPRESSURE 1000
|
||||
|
||||
// For better pressure precision, we need to know the resistance
|
||||
// between X+ and X- Use any multimeter to read it
|
||||
// For the one we're using, its 300 ohms across the X plate
|
||||
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
|
||||
|
||||
|
||||
#define TFT_CS 10
|
||||
#define TFT_DC 9
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
boolean RecordOn = false;
|
||||
|
||||
#define FRAME_X 210
|
||||
#define FRAME_Y 180
|
||||
#define FRAME_W 100
|
||||
#define FRAME_H 50
|
||||
|
||||
#define REDBUTTON_X FRAME_X
|
||||
#define REDBUTTON_Y FRAME_Y
|
||||
#define REDBUTTON_W (FRAME_W/2)
|
||||
#define REDBUTTON_H FRAME_H
|
||||
|
||||
#define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W)
|
||||
#define GREENBUTTON_Y FRAME_Y
|
||||
#define GREENBUTTON_W (FRAME_W/2)
|
||||
#define GREENBUTTON_H FRAME_H
|
||||
|
||||
void drawFrame()
|
||||
{
|
||||
tft.drawRect(FRAME_X, FRAME_Y, FRAME_W, FRAME_H, ILI9341_BLACK);
|
||||
}
|
||||
|
||||
void redBtn()
|
||||
{
|
||||
tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_RED);
|
||||
tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_BLUE);
|
||||
drawFrame();
|
||||
tft.setCursor(GREENBUTTON_X + 6 , GREENBUTTON_Y + (GREENBUTTON_H/2));
|
||||
tft.setTextColor(ILI9341_WHITE);
|
||||
tft.setTextSize(2);
|
||||
tft.println("ON");
|
||||
RecordOn = false;
|
||||
}
|
||||
|
||||
void greenBtn()
|
||||
{
|
||||
tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_GREEN);
|
||||
tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_BLUE);
|
||||
drawFrame();
|
||||
tft.setCursor(REDBUTTON_X + 6 , REDBUTTON_Y + (REDBUTTON_H/2));
|
||||
tft.setTextColor(ILI9341_WHITE);
|
||||
tft.setTextSize(2);
|
||||
tft.println("OFF");
|
||||
RecordOn = true;
|
||||
}
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
Serial.begin(9600);
|
||||
tft.begin();
|
||||
|
||||
tft.fillScreen(ILI9341_BLUE);
|
||||
// origin = left,top landscape (USB left upper)
|
||||
tft.setRotation(1);
|
||||
redBtn();
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// Retrieve a point
|
||||
TSPoint p = ts.getPoint();
|
||||
|
||||
// See if there's any touch data for us
|
||||
if (p.z > MINPRESSURE && p.z < MAXPRESSURE)
|
||||
{
|
||||
// Scale using the calibration #'s
|
||||
// and rotate coordinate system
|
||||
p.x = map(p.x, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
p.y = map(p.y, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
int y = tft.height() - p.x;
|
||||
int x = p.y;
|
||||
|
||||
if (RecordOn)
|
||||
{
|
||||
if((x > REDBUTTON_X) && (x < (REDBUTTON_X + REDBUTTON_W))) {
|
||||
if ((y > REDBUTTON_Y) && (y <= (REDBUTTON_Y + REDBUTTON_H))) {
|
||||
Serial.println("Red btn hit");
|
||||
redBtn();
|
||||
}
|
||||
}
|
||||
}
|
||||
else //Record is off (RecordOn == false)
|
||||
{
|
||||
if((x > GREENBUTTON_X) && (x < (GREENBUTTON_X + GREENBUTTON_W))) {
|
||||
if ((y > GREENBUTTON_Y) && (y <= (GREENBUTTON_Y + GREENBUTTON_H))) {
|
||||
Serial.println("Green btn hit");
|
||||
greenBtn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println(RecordOn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
861
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/pictureEmbed/dragon.h
Normal file
861
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/pictureEmbed/dragon.h
Normal file
@ -0,0 +1,861 @@
|
||||
#define DRAGON_WIDTH 110
|
||||
#define DRAGON_HEIGHT 70
|
||||
|
||||
const PROGMEM uint16_t dragonBitmap[DRAGON_WIDTH * DRAGON_HEIGHT] = {
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X8C10, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XBD14, 0XAC92, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XDEFB, 0XB431, 0XA1C9, 0XAA4B, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE18, 0X9A2A, 0X9044,
|
||||
0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XDEFB, 0XB3B0, 0XA148, 0XB865, 0XC066, 0XC066, 0XAA4B,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XAB2E, 0X9864,
|
||||
0XA865, 0XAAAC, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XAC92,
|
||||
0X728B, 0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XCE18, 0XAB2E, 0XAA4B, 0XAA4B, 0XAA4B, 0XA3AF,
|
||||
0XB431, 0XB431, 0XB431, 0XA411, 0XA8E6, 0XD086, 0XB865, 0X7043, 0XA865,
|
||||
0XD086, 0XAA4B, 0XCE79, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB493, 0XA8E6,
|
||||
0X9864, 0XC066, 0XD086, 0XB493, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE79, 0X830D,
|
||||
0X80C5, 0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB431, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XB865, 0X9864,
|
||||
0XC066, 0XD086, 0XB8E7, 0XB493, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A, 0XA1C9,
|
||||
0XB865, 0X9864, 0XD086, 0XD086, 0XD086, 0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XAD14, 0X71A8,
|
||||
0X9864, 0XC066, 0XC515, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XDEFB, 0XBDF7, 0XBD14, 0XA411, 0XB431, 0XB148, 0XD086, 0XC066,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0XD086, 0XA865,
|
||||
0XB865, 0XD086, 0XD086, 0XB1CA, 0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XB3B0,
|
||||
0XB865, 0XA865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XBD14, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE79, 0X932D, 0X78C5,
|
||||
0XA865, 0XD086, 0XC066, 0XC515, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XDEFB, 0XAB2E, 0XA0C6, 0XB865, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XB865, 0X78C5, 0X4208, 0X2104, 0X8947, 0X9864, 0X9864, 0X9864, 0XD086,
|
||||
0XD086, 0XA865, 0X9864, 0XD086, 0XB865, 0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE18,
|
||||
0XB148, 0XC066, 0XA865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XB493, 0X89A8, 0X9044,
|
||||
0XB865, 0XD086, 0XD086, 0XC066, 0XC515, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0X7B8E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XAD14, 0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XB431, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0XA865,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XAA4B, 0X9A2A, 0XC066, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XC066, 0X9044, 0X9864, 0X9864, 0X9044, 0XCE18, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D,
|
||||
0XB3B0, 0XC066, 0XB865, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XAAAC, 0XBD96, 0XAD14, 0XAAAC, 0X8044, 0X9864,
|
||||
0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XB431, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XB3B0, 0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XBD96, 0XB8E7, 0XB431, 0XEF7D, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XA32E, 0X9864, 0X9864, 0XAA4B, 0XAA4B, 0X9147, 0XB865,
|
||||
0X9044, 0XD086, 0XA865, 0XD086, 0XC066, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XDE9A, 0XB148, 0XD086, 0XA865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X9864, 0X9864, 0XA865, 0X9864,
|
||||
0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA148, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XC515, 0XC066, 0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAA4B, 0XD086,
|
||||
0XA865, 0XAB2E, 0XBD96, 0XEF7D, 0XCE79, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XDEFB, 0XB1CA, 0XD086, 0XD086, 0X9864, 0X822A, 0XBDF7, 0XB493,
|
||||
0XB148, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XAA4B, 0XBD14, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XB431, 0XB865, 0XD086, 0X9864, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XC066, 0X9864, 0X9864, 0XC066, 0XA865, 0X9864,
|
||||
0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XB3B0,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCD96, 0XC066, 0XD086, 0XAA4B, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XDE9A, 0XB865, 0XD086, 0XD086, 0XD086, 0XA865, 0X9147, 0X9C92, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE18, 0X80C5, 0X5822, 0X5A08, 0XDEFB,
|
||||
0XFFFF, 0XFFFF, 0XCE79, 0XA0C6, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X9044, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XAB2E, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XEF7D, 0XAA4B, 0XD086, 0XC066, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XA865, 0X9864, 0XA865, 0XD086, 0X9864, 0X9864,
|
||||
0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A, 0XB8E7, 0XD086, 0XD086,
|
||||
0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XC515, 0XC066, 0XD086, 0XB865, 0X8044, 0X82AB,
|
||||
0XBDF7, 0XBDF7, 0XBDF7, 0XBDF7, 0XBDF7, 0XBDF7, 0XAC92, 0XA3AF, 0X92AC,
|
||||
0XAB2E, 0XAA4B, 0XA1C9, 0X9864, 0XB865, 0XA865, 0XC066, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XB1CA, 0XBD14,
|
||||
0X9CF3, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XCE18, 0XA8E6, 0XD086, 0XC066, 0XA865, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XC066, 0X9864, 0X9864, 0XC066, 0XD086, 0X9864, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XC066, 0XC515, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A, 0XB8E7, 0XD086,
|
||||
0XD086, 0XD086, 0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB3B0, 0XD086, 0XA865,
|
||||
0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XC066, 0XA865, 0X8044, 0X4822, 0X9044, 0X9044,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X8044, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XAA4B, 0XCE18, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XB493, 0XC066, 0XD086, 0XC066, 0XA865, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0X9864, 0XA865, 0XD086, 0XC066, 0X9864, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X9044, 0X3986, 0XCE79,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A, 0XB8E7,
|
||||
0XD086, 0XD086, 0XC066, 0XD086, 0XAA4B, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XB431, 0XC066, 0X90C6, 0XAA4B, 0XAA4B, 0XAA4B, 0XAA4B, 0X99C9, 0X9864,
|
||||
0X9864, 0X9864, 0X6843, 0X6843, 0X5822, 0X4822, 0X7043, 0X9044, 0XC066,
|
||||
0X9864, 0X7043, 0XC066, 0XB865, 0XD086, 0X7043, 0X8044, 0XC066, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XC066, 0XB431, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XAB2E, 0XD086, 0XD086, 0XC066, 0XA865,
|
||||
0XD086, 0XD086, 0X9864, 0X9044, 0XC066, 0XD086, 0XC066, 0X9864, 0XA865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XB865, 0X9864, 0X9864, 0X9864, 0X9044, 0X6843, 0X6843, 0X8044, 0X7B0C,
|
||||
0XCE79, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A,
|
||||
0XB8E7, 0XD086, 0X9864, 0XC066, 0X9864, 0XD086, 0XAA4B, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XC515, 0XA8E6, 0XCE18, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XA148, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XB148, 0XBD14, 0X9A2A, 0XD086, 0X9864, 0X9864, 0X6843, 0XD086, 0XC066,
|
||||
0XC066, 0XD086, 0XD086, 0XD086, 0XA865, 0XC066, 0XA865, 0XEF7D, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XB1CA, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0XC066, 0X9864, 0X9864, 0XD086, 0XD086, 0XC066, 0X9864, 0XA865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X9864, 0X9864, 0X9864,
|
||||
0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0XA865, 0XD086, 0XA1C9,
|
||||
0XDE9A, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XDE9A, 0XB8E7, 0XD086, 0XD086, 0X9864, 0XD086, 0X9864, 0XD086, 0XAA4B,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDEFB, 0XCE18, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAA4B, 0XD086, 0XC066,
|
||||
0XD086, 0XAAAC, 0XEF7D, 0XFFFF, 0X932D, 0XB865, 0XB865, 0XC066, 0X7043,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XB148, 0XEF7D, 0XBD14, 0XA148,
|
||||
0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAA4B, 0XD086, 0XD086,
|
||||
0XD086, 0X8044, 0X9864, 0XA865, 0XD086, 0XD086, 0XC066, 0X9864, 0XA865,
|
||||
0XD086, 0XD086, 0XA865, 0X9864, 0X9864, 0X9864, 0X9864, 0XA865, 0XD086,
|
||||
0XB865, 0X9864, 0X9864, 0X9864, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XDE9A, 0XB8E7, 0XD086, 0XD086, 0XC066, 0XA865, 0XD086, 0X9864,
|
||||
0XD086, 0XA0C6, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X8C10, 0XB431, 0XEF7D, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XBD14,
|
||||
0XD086, 0XA1C9, 0X80C5, 0XEF7D, 0XFFFF, 0XB431, 0XD086, 0XB865, 0X9864,
|
||||
0X8044, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XAA4B, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XBD14, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0XB865, 0XD086, 0XD086, 0XC066, 0X9864, 0X9864,
|
||||
0X9864, 0X9044, 0X9864, 0X9864, 0XC066, 0XD086, 0XD086, 0XB865, 0X9864,
|
||||
0X9864, 0X9864, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XDE9A, 0XB8E7, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0X9864, 0XD086, 0X9864, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XB148,
|
||||
0XA1C9, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XBDF7, 0XD086, 0XBD14, 0XEF7D, 0XFFFF, 0XFFFF, 0XA148, 0XD086,
|
||||
0XD086, 0XD086, 0X9864, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XC066, 0XB431, 0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XAA4B, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XC066, 0X7043,
|
||||
0X9864, 0XA865, 0XD086, 0XD086, 0XD086, 0XC066, 0X9864, 0X9864, 0X9864,
|
||||
0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XAAAC, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XA32E, 0XAA4B, 0XAA4B, 0XAA4B, 0XAB2E,
|
||||
0X9044, 0XD086, 0XA865, 0X9864, 0XD086, 0XD086, 0XBDF7, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XBDF7, 0XDEFB, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XB431, 0XB865, 0XAC92, 0XFFFF, 0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0X8947, 0XEF7D, 0XFFFF, 0XFFFF, 0XEF7D,
|
||||
0X9044, 0XD086, 0XD086, 0XB865, 0XB865, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XA0C6, 0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0X9864, 0XA865, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XA8E6, 0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XCE18, 0XC066, 0XD086, 0XA1C9, 0XB431, 0XD086, 0XD086, 0XB493,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XAB2E, 0XB865,
|
||||
0XB3B0, 0XFFFF, 0XFFFF, 0X9AAC, 0XB865, 0XA148, 0XFFFF, 0X9AAC, 0XCD96,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XAA4B, 0XB865, 0X9864, 0X9864, 0X8044, 0X9044, 0X8044, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XA1C9, 0X90C6, 0XD086, 0XB3B0, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XDEFB, 0XB3B0, 0XAA4B, 0X9864, 0X9864, 0XA1C9,
|
||||
0XAB2E, 0XBD96, 0XFFFF, 0XAA4B, 0XD086, 0XD086, 0XB493, 0XFFFF, 0XAB2E,
|
||||
0XC066, 0XAAAC, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0X8947, 0X9864, 0X9A2A, 0XFFFF, 0X9864, 0XD086, 0XA148, 0XEF7D,
|
||||
0XA8E6, 0XB431, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XCE79, 0XC066, 0XD086, 0XD086, 0XD086, 0X9044, 0X7043,
|
||||
0X8044, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XFFFF, 0XFFFF, 0XBD14,
|
||||
0X92AC, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XB865,
|
||||
0XB865, 0XD086, 0XD086, 0X8044, 0X6843, 0X9864, 0X9864, 0X9864, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XBD96, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB431, 0XB865, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9147, 0XA865, 0XD086, 0XC066, 0XCE79,
|
||||
0XFFFF, 0XFFFF, 0XCD96, 0X7926, 0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XC066, 0X9CF3, 0XC066, 0XD086,
|
||||
0X8A2A, 0X8947, 0XD086, 0XBD14, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAD14, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0X9864, 0X8044, 0XD086, 0XD086, 0XD086, 0XD086, 0XB865, 0XDEFB,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X9864,
|
||||
0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864,
|
||||
0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB493, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0XA865,
|
||||
0XA148, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAA4B, 0XD086, 0XD086, 0X71A8,
|
||||
0XD086, 0XD086, 0X9044, 0XD086, 0X9864, 0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A, 0XB865, 0XA865, 0XA865,
|
||||
0XD086, 0XD086, 0X7043, 0X9864, 0X9044, 0XA865, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XA8E6, 0XB493, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0X9864, 0XB865, 0XB865, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864,
|
||||
0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0X9864, 0X9864, 0X9864, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XA0C6, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0X80C5, 0X9864, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XC066, 0X8B8E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB493, 0XD086,
|
||||
0XD086, 0X9864, 0XA865, 0XA865, 0XC066, 0XD086, 0XA8E6, 0XEF7D, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAAAC, 0XD086,
|
||||
0XD086, 0XC066, 0X9864, 0X8044, 0XA865, 0X9044, 0XC066, 0X8044, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9A2A, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XEF7D, 0XA865, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0X9864, 0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X9864,
|
||||
0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0XD086, 0XD086,
|
||||
0X9864, 0X9864, 0X9864, 0XC066, 0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0X9864, 0XD086, 0XD086, 0X90C6, 0XCE79, 0XFFFF, 0XFFFF, 0X9C92, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XAB2E, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XEF7D, 0XA0C6, 0XD086, 0XD086, 0XB865, 0X9864, 0XD086, 0XB1CA, 0XDE9A,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XAA4B, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X7043, 0XA865, 0X9044,
|
||||
0X9044, 0XD086, 0XD086, 0XD086, 0XD086, 0XB1CA, 0XB431, 0X82AB, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XBD14, 0XA865, 0XC066, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X9864, 0XC066, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X7043, 0X8044, 0XDEFB, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XD086, 0XA32E, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0X728B, 0XB865, 0XD086, 0XD086, 0XD086, 0X9864, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0XAA4B, 0XD086, 0XD086, 0XB865, 0X90C6,
|
||||
0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XC515, 0X9044, 0XC066, 0XD086, 0XD086, 0XD086, 0X9864, 0X8044,
|
||||
0XC066, 0X8044, 0X9044, 0XC066, 0XD086, 0XD086, 0XD086, 0XBDF7, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XEF7D, 0X6926, 0XC066, 0XD086,
|
||||
0XD086, 0XD086, 0X9044, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA8E6, 0XAAAC, 0XB431, 0X8410,
|
||||
0X8C71, 0XFFFF, 0XFFFF, 0XFFFF, 0XAAAC, 0XD086, 0XD086, 0XA865, 0XA32E,
|
||||
0XB431, 0XB431, 0X8947, 0XC066, 0X9864, 0XD086, 0XD086, 0XD086, 0XC066,
|
||||
0XCE79, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XB431, 0XD086, 0XD086,
|
||||
0XD086, 0XB8E7, 0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XA0C6, 0XD086, 0XA865, 0X9864, 0X9864, 0X9864,
|
||||
0X9044, 0X9044, 0XA865, 0X9864, 0XA865, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XB3B0, 0XFFFF, 0XEF7D, 0XBDF7, 0XB431, 0XAAAC, 0XA148, 0XA865, 0XD086,
|
||||
0XD086, 0XD086, 0XC066, 0XD086, 0XB865, 0X9044, 0X9864, 0X9864, 0XC066,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XB8E7, 0XB493, 0XEF7D, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDE9A, 0XB8E7, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XAAAC,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XB3B0, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XDEFB, 0XB865, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X8044, 0X9864, 0XB865, 0X8044, 0XC066, 0X6843, 0XD086,
|
||||
0XD086, 0X9864, 0XA0C6, 0X99C9, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X8044, 0XB865, 0XD086, 0XC066, 0XA865,
|
||||
0XD086, 0XA865, 0X9864, 0X9864, 0XD086, 0XD086, 0XB865, 0X9864, 0XC066,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XB1CA, 0XDEFB, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XDEFB, 0XAB2E, 0X9864, 0XC066, 0XD086, 0XC066, 0X9864, 0X89A8, 0XA865,
|
||||
0XD086, 0XD086, 0XD086, 0XA865, 0XEF7D, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XAA4B, 0XD086, 0XD086, 0XD086, 0XD086, 0XA148, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XBDF7, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X7043, 0XC066, 0X6843, 0XD086, 0X7043,
|
||||
0XC066, 0X9044, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0XD086, 0X9864, 0XB865, 0XB865,
|
||||
0XD086, 0XC066, 0XA865, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0XC066,
|
||||
0XD086, 0XA865, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X9C92,
|
||||
0XBDF7, 0XBDF7, 0XBDF7, 0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE79, 0XBDF7, 0XCE79, 0XEF7D,
|
||||
0XAAAC, 0XD086, 0XD086, 0XD086, 0XD086, 0XA1C9, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XA148, 0XD086, 0XD086, 0XD086, 0XD086, 0XB865,
|
||||
0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCD96,
|
||||
0X8044, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X6843, 0X9044, 0X9864,
|
||||
0XA865, 0XA865, 0X9044, 0XB865, 0XD086, 0XD086, 0XB865, 0X9864, 0X8044,
|
||||
0XC066, 0XD086, 0XD086, 0XB865, 0XD086, 0XA865, 0X9044, 0XD086, 0XB865,
|
||||
0XB865, 0XB865, 0XA865, 0XD086, 0XB865, 0XB865, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XA865, 0X9864, 0XB865, 0XC066, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0XA1C9,
|
||||
0XAB2E, 0XBD14, 0XCE79, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XCE79,
|
||||
0XB493, 0XB148, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XBD14, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XBDF7, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XA148, 0XD086, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864, 0X9864,
|
||||
0X9864, 0X9864, 0X7043, 0X9864, 0XD086, 0XD086, 0XA865, 0X9864, 0XB865,
|
||||
0XD086, 0X9864, 0XD086, 0XC066, 0X7043, 0XD086, 0XD086, 0X9864, 0XC066,
|
||||
0XA865, 0XD086, 0X9864, 0XD086, 0XC066, 0XA865, 0XD086, 0XA865, 0XC066,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X9864, 0X9044, 0X9864,
|
||||
0XC066, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X9864, 0X9864, 0X9864, 0X9864,
|
||||
0X9864, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA1C9,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XC515, 0XC066, 0XA865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XAD14, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X9044, 0X8044, 0X9864, 0XA865, 0XD086, 0XA865, 0X9864, 0XC066,
|
||||
0XD086, 0XD086, 0XA865, 0XC066, 0XC066, 0XA865, 0X9864, 0XD086, 0XA865,
|
||||
0XC066, 0XD086, 0X9864, 0XD086, 0X9864, 0XD086, 0XD086, 0XB865, 0XB865,
|
||||
0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X9864, 0X8044, 0X8044, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864,
|
||||
0XA865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XB8E7, 0XDEFB, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF,
|
||||
0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0XFFFF, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X04A6, 0XB865,
|
||||
0XD086, 0X31C3, 0XC066, 0XD086, 0XD086, 0X9864, 0XB865, 0X2305, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X6843, 0X9864, 0XA865, 0XB865, 0X9864, 0XC066,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XC066, 0XA865, 0XD086, 0X9864,
|
||||
0XD086, 0X9864, 0XD086, 0XD086, 0XA865, 0XC066, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XC066, 0XA865, 0XB865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X8044, 0X8044, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0XC066, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X8145, 0X0C66, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0506,
|
||||
0X8145, 0XD086, 0X9105, 0X0506, 0X80E5, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0X9864, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X80E5, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X8044, 0XB865, 0X9864, 0XB865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0XC066, 0X9864, 0XD086,
|
||||
0XD086, 0X9864, 0XC066, 0XA865, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0XA865, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XA865, 0X9864, 0X9864, 0X7043, 0X9864, 0XA865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0XC066, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XC066, 0X59E5, 0X0506, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X2305, 0XB865, 0XD086, 0X2305, 0X0547, 0X1B65, 0XD086, 0XD086,
|
||||
0XB865, 0XB865, 0X9864, 0X6985, 0X1B65, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0C05, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0X9044, 0X8044, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XB865, 0XA865,
|
||||
0XA865, 0XD086, 0XD086, 0XA865, 0X9864, 0XC066, 0XD086, 0XD086, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XA865, 0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X80E5, 0X0C05, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X1B65, 0XC066, 0X8044, 0X04A6, 0X0547, 0X0547,
|
||||
0X80E5, 0XD086, 0XD086, 0X9864, 0XA865, 0XD086, 0XD086, 0X1AC4, 0X0405,
|
||||
0X0547, 0X0547, 0X4285, 0XC066, 0X9864, 0X9864, 0X9864, 0X9864, 0X8044,
|
||||
0XA865, 0XD086, 0XD086, 0XC066, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X7043, 0XC066, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0XA865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XB865, 0X8044, 0XD086, 0XA865, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XC066, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XA865, 0X59E5, 0X0BA5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0506, 0X3264, 0X98A5, 0X7145, 0X04A6, 0X0547,
|
||||
0X0547, 0X0547, 0X1BC5, 0XC066, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086,
|
||||
0X9864, 0XD086, 0X7145, 0X4984, 0X80A4, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X9864, 0X7043, 0X9864, 0X9864, 0XB865, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0X8044, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086, 0X9044, 0XA865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X8044, 0XC066, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9044, 0XA865, 0X9864,
|
||||
0X6985, 0X4285, 0X1B65, 0X0506, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0445, 0X0445, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X4A25, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0X9864, 0XC066, 0XD086, 0XD086, 0X9864, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0X9864,
|
||||
0XD086, 0XB865, 0X9864, 0X4822, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X6843, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0X9864,
|
||||
0XD086, 0XC066, 0X9864, 0X8044, 0X9864, 0X9864, 0X9864, 0X8044, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XA8C5, 0X32C5, 0X0506, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X4A25,
|
||||
0XD086, 0XD086, 0XD086, 0XA865, 0X9864, 0XB865, 0XD086, 0X9864, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X9864, 0XA865, 0XB865, 0XD086, 0X8044, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X6843, 0XD086, 0X9044, 0X9864, 0X9044, 0X9864, 0XB865,
|
||||
0X9864, 0X9864, 0XB865, 0XA865, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XA865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XC066, 0X9864, 0XA865, 0X9864, 0X9044, 0XA865, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X98A5, 0X32C5, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X32C5, 0XC066, 0XD086, 0XD086, 0XD086, 0XB865, 0X9864,
|
||||
0X8044, 0X9864, 0X8044, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X9864, 0XC066, 0XA865, 0X9864, 0X9864, 0XA865,
|
||||
0X9864, 0X9044, 0X9864, 0XD086, 0X6843, 0X9864, 0XC066, 0XA865, 0XD086,
|
||||
0XD086, 0XB865, 0X8044, 0X7043, 0XB865, 0XD086, 0X9864, 0X9864, 0X9864,
|
||||
0X9864, 0X9864, 0XA865, 0XB865, 0X9864, 0X9864, 0X9864, 0XA865, 0XD086,
|
||||
0XD086, 0XD086, 0X9044, 0XD086, 0XD086, 0XC066, 0XA865, 0XC066, 0X9864,
|
||||
0X9864, 0X9044, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X80E5,
|
||||
0X1BC5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X4285, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XB865, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086, 0X9044, 0X7043, 0XD086,
|
||||
0X8044, 0X9044, 0XD086, 0XD086, 0X9044, 0X9864, 0X6843, 0XD086, 0XD086,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XB865, 0XA865,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X6985,
|
||||
0X04A6, 0X4A25, 0X80A4, 0XA865, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0X9864, 0X8044, 0X9864, 0XC066,
|
||||
0XD086, 0XD086, 0XC066, 0X6985, 0X0C66, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X4A25,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0X9044, 0XB865, 0XA865, 0X9864, 0X9044, 0X9864,
|
||||
0XB865, 0X9044, 0XC066, 0X9864, 0XD086, 0XD086, 0X9864, 0XD086, 0XA865,
|
||||
0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0X9864, 0XC066, 0X9864,
|
||||
0XB865, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0X4A25, 0X0506, 0X0547, 0X0547, 0X1BC5, 0XA8C5, 0XD086, 0XD086, 0XB865,
|
||||
0XB865, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0X9864,
|
||||
0XD086, 0X9864, 0XB865, 0XD086, 0XD086, 0XD086, 0XB865, 0X32C5, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0506, 0X8145, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066,
|
||||
0XA865, 0XD086, 0XD086, 0XB865, 0XB865, 0XD086, 0XB865, 0X8044, 0XB865,
|
||||
0XA865, 0X8044, 0XA865, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0X9864,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0X8044, 0X7043,
|
||||
0X7043, 0XC066, 0XD086, 0XC066, 0XA865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X6985, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X04A6, 0X2305,
|
||||
0X32C5, 0X6944, 0XD086, 0XD086, 0XD086, 0X9864, 0XC066, 0XD086, 0XD086,
|
||||
0X9864, 0XD086, 0XD086, 0X9864, 0XB865, 0XB865, 0XD086, 0XC066, 0XB865,
|
||||
0XD086, 0X7145, 0X0C66, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0C66, 0XB865, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XA865, 0XC066, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0X9044, 0XB865, 0X9044, 0XD086, 0XD086, 0XD086, 0XC066, 0XA865, 0XD086,
|
||||
0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XB865, 0XA865, 0XD086, 0XB865,
|
||||
0XB865, 0XD086, 0XD086, 0XB865, 0X9864, 0X7043, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X32C5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0405, 0X2305, 0X0BA5, 0X0BA5, 0X7145,
|
||||
0X9864, 0X90A4, 0X58E3, 0XD086, 0XB865, 0XB865, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0X1A63, 0XA8C5, 0XD086, 0XA8C5, 0X0C66, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X32C5, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XA865, 0X90A4, 0X4183, 0X6985, 0X5924, 0X9044,
|
||||
0XD086, 0XB865, 0XB865, 0X9044, 0X9864, 0XD086, 0XD086, 0XD086, 0X9864,
|
||||
0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0XD086, 0XA8C5, 0X1B65, 0X0405,
|
||||
0X0405, 0X9044, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X4A25, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0405, 0X1AC4, 0XD086, 0XD086,
|
||||
0X9864, 0XD086, 0XD086, 0X4285, 0X04A6, 0X59E5, 0X9864, 0X4224, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0506, 0X98A5, 0XD086, 0XD086, 0X22C4, 0X0506, 0X0547, 0X0547, 0X0547,
|
||||
0X2305, 0XD086, 0XA865, 0X8044, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0X9864, 0XD086, 0XD086, 0X9044, 0XD086, 0XB865, 0X6985, 0X04A6,
|
||||
0X0547, 0X0547, 0X0547, 0X90A4, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XA865, 0XC066, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XB865, 0X0BA5,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X22C4, 0XA865, 0X9044, 0X9864, 0XD086, 0X6985, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X4A25, 0XD086, 0X98A5, 0X0506, 0X0547, 0X0547,
|
||||
0X0547, 0X0506, 0X4183, 0X9864, 0X9044, 0XB865, 0XD086, 0XD086, 0XD086,
|
||||
0X9864, 0XD086, 0XD086, 0X9864, 0XD086, 0X7145, 0X0BA5, 0X0405, 0X04A6,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X32C5, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0X9044, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X90A4, 0X4285, 0X04A6, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0405, 0XD086, 0XD086, 0X9864, 0XD086, 0X6985, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X1B65, 0XD086, 0X4A25, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X4A25, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086,
|
||||
0XD086, 0X8145, 0X0B64, 0XD086, 0XD086, 0XA865, 0X32C5, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X2305,
|
||||
0X98A5, 0XC066, 0X9864, 0X9864, 0X9864, 0XC066, 0X9864, 0XA865, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X80E5, 0X59E5,
|
||||
0X0C05, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0445, 0XC066, 0XD086, 0X9044, 0XD086,
|
||||
0X6985, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0405, 0X98A5,
|
||||
0X0506, 0X0547, 0X0547, 0X0547, 0X0547, 0X59E5, 0XD086, 0XB865, 0XB865,
|
||||
0XD086, 0XD086, 0XA8C5, 0X0C66, 0X0506, 0X98A5, 0XD086, 0X90A4, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0506, 0X70E4, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066,
|
||||
0X9864, 0X9864, 0X9864, 0X9044, 0X9864, 0XC066, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XC066, 0X1BC5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X68E4, 0X9044,
|
||||
0X9864, 0XD086, 0X6985, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0445, 0X1BC5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0C66, 0X90A4, 0XA865,
|
||||
0X9044, 0XD086, 0XD086, 0XA8C5, 0X0C66, 0X0547, 0X0547, 0X32C5, 0XD086,
|
||||
0X4A25, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0C66, 0X7145, 0X9864, 0X9864,
|
||||
0XA865, 0XA865, 0XD086, 0XD086, 0X9864, 0XD086, 0XD086, 0X9864, 0XD086,
|
||||
0XD086, 0X90A4, 0X80E5, 0XC066, 0XD086, 0X7145, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X9864, 0XD086, 0X9864, 0XD086, 0X6985, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X80E5,
|
||||
0XD086, 0XB865, 0XB865, 0XD086, 0XA8C5, 0X0C66, 0X0547, 0X0547, 0X0547,
|
||||
0X0506, 0X9044, 0X04A6, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X4285, 0XB865, 0XA865, 0X9864, 0XC066, 0XD086, 0XA865,
|
||||
0XC066, 0XD086, 0XC066, 0X0C05, 0X0547, 0X0445, 0X4285, 0X58E3, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X9864, 0XD086, 0X9864, 0XD086, 0X4285, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X9864, 0XD086, 0X9864, 0XD086, 0XA8C5, 0X0C66, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0405, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0405, 0X04A6, 0X2305, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0C66, 0X80E5, 0X9864, 0X9864, 0X9864,
|
||||
0X8044, 0XB865, 0XD086, 0XD086, 0X32C5, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X4285, 0XA865, 0X7043, 0XB865, 0XD086, 0X2305,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X2365, 0X9864, 0XB865, 0XB865, 0XA8C5, 0X0C66, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0506, 0X70A4, 0XA865, 0X8044, 0XD086, 0X7145, 0X0506, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X04A6, 0X3224, 0XD086, 0XD086,
|
||||
0XC066, 0X9864, 0XC066, 0XD086, 0XD086, 0X4A25, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X1B65, 0X32C5, 0X68E4, 0X2365, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X9864, 0XD086, 0X9864, 0XD086,
|
||||
0XC066, 0X0445, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X2305, 0X6985, 0X59E5, 0X22C4, 0X0445, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0C66, 0XA8C5, 0XA865, 0XA865, 0XD086, 0X2305,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0BA5, 0X0C05, 0X0C66, 0X9044, 0XD086, 0XD086, 0X8145,
|
||||
0X04A6, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0C05, 0XB865, 0XC066,
|
||||
0X9864, 0X9044, 0XA865, 0XD086, 0XD086, 0XD086, 0X4A25, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X22C4, 0X70E4, 0XB865, 0X9864, 0XC066,
|
||||
0X2365, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X5924, 0X9864,
|
||||
0XA865, 0XD086, 0X9864, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X3224, 0X22C4, 0X9864, 0XA865, 0XC066, 0X6985,
|
||||
0X0BA5, 0X0506, 0X0547, 0X0506, 0X32C5, 0XB865, 0XD086, 0XD086, 0XD086,
|
||||
0X80E5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0C05, 0X4A25,
|
||||
0X80E5, 0XD086, 0XB865, 0X4A25, 0X0BA5, 0X22C4, 0X6985, 0X90A4, 0X9864,
|
||||
0X9864, 0X9864, 0X9044, 0XD086, 0XD086, 0XD086, 0XB865, 0X2305, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X04A6, 0X0547, 0X1B04,
|
||||
0XC066, 0XD086, 0XC066, 0X4285, 0X0506, 0X0547, 0X0547, 0X0547, 0X4A25,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0X59E5, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X7043, 0XA865,
|
||||
0XD086, 0XD086, 0XB865, 0X7043, 0X6843, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X1B65, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0506, 0X32C5, 0X3264, 0X6985,
|
||||
0X59E5, 0X04A6, 0X0547, 0X4A25, 0XC066, 0X9864, 0XA865, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X6985, 0X04A6,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0C66, 0X59E5, 0X6883, 0X9864, 0X9864, 0XD086, 0X98A5, 0X4285, 0X32C5,
|
||||
0X6944, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X2305, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0506, 0X32C5, 0X6985, 0X6944,
|
||||
0XC066, 0XC066, 0X9864, 0X9864, 0XB865, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XA865, 0X0506, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0506, 0X80E5, 0X9864,
|
||||
0X9864, 0XD086, 0XD086, 0XB865, 0X6985, 0X6985, 0X9044, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XA865, 0X59E5, 0X0C05,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0506, 0X6985, 0XA865, 0XA865, 0XD086, 0XD086, 0XD086, 0X9864, 0XB865,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X6985,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X3264, 0X7145,
|
||||
0X6985, 0X9864, 0X9044, 0X9864, 0X9864, 0X9864, 0XA865, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X90A4, 0X6985, 0X4285,
|
||||
0X1BC5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0445,
|
||||
0X2305, 0X04A6, 0X90A4, 0XC066, 0X9864, 0X9044, 0X9864, 0X9864, 0X9864,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0X58E3, 0X3264,
|
||||
0X1B65, 0X0506, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X4224, 0X4224, 0X3264, 0X7043, 0X4A25, 0X32C5, 0X49C4,
|
||||
0X9864, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0X7145, 0X1B65, 0X0506, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X04A6, 0X0547, 0X0547, 0X04A6, 0X80E5, 0XD086, 0XD086, 0XD086, 0XD086,
|
||||
0XD086, 0XD086, 0XD086, 0XD086, 0XC066, 0X7145, 0X49C4, 0XB865, 0XD086,
|
||||
0XD086, 0XD086, 0X9044, 0X9864, 0X32C5, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0445, 0X5883, 0XA865, 0XD086, 0XD086,
|
||||
0XC066, 0X9864, 0X7145, 0X6985, 0X3264, 0X80E5, 0X7145, 0X32C5, 0X70E4,
|
||||
0XD086, 0XD086, 0XD086, 0X68E4, 0X4285, 0X04A6, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0405, 0X0547, 0X0547, 0X0547, 0X0506,
|
||||
0X6985, 0X9864, 0XD086, 0XD086, 0XA865, 0X9864, 0XD086, 0XD086, 0XD086,
|
||||
0XB865, 0X80E5, 0X80A4, 0XC066, 0XD086, 0XD086, 0X58E3, 0X32C5, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0C66, 0X90A4, 0XA865, 0XA865, 0XD086,
|
||||
0XD086, 0XD086, 0X6985, 0X0BA5, 0X0405, 0X22C4, 0X0C05, 0X0547, 0X0547,
|
||||
0X0C66, 0X7145, 0XC066, 0XD086, 0X70A4, 0X4285, 0X58E3, 0X0506, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X59E5, 0XA865, 0X9044,
|
||||
0X9864, 0X4A25, 0X0445, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X1B65, 0X98A5, 0XD086, 0X9044, 0X7145, 0X8044, 0X04A6,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X1BC5, 0X7145, 0X9864, 0XD086, 0X98A5, 0X2305, 0X0506, 0X0506, 0X32C5,
|
||||
0X6985, 0X32C5, 0X04A6, 0X0547, 0X0547, 0X0C05, 0X5984, 0XA865, 0X9864,
|
||||
0X9864, 0X32C5, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X49C4, 0X59E5, 0X22C4,
|
||||
0X70E4, 0X9864, 0X7145, 0X1B65, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0445, 0X0405, 0X0506, 0X0547, 0X0506,
|
||||
0X0506, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X2264,
|
||||
0X0506, 0X0506, 0X0445, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0506, 0X0405, 0X0445, 0X0547,
|
||||
0X0C66, 0X0445, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0506, 0X90A4, 0X80E5, 0X4224, 0X3224, 0X0506, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0405, 0X0547, 0X0506, 0X1A03, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0B64,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X04A6, 0X1BC5, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547, 0X0547,
|
||||
0X0547, 0X0547, 0X0547, 0X0547, 0X0547 };
|
||||
|
||||
69
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/pictureEmbed/pictureEmbed.ino
Normal file
69
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/pictureEmbed/pictureEmbed.ino
Normal file
@ -0,0 +1,69 @@
|
||||
// ILI9341 example with embedded color bitmaps in sketch.
|
||||
// WILL NOT FIT ON ARDUINO UNO OR OTHER AVR BOARDS;
|
||||
// uses large bitmap image stored in array!
|
||||
|
||||
// Options for converting images to the format used here include:
|
||||
// http://www.rinkydinkelectronics.com/t_imageconverter565.php
|
||||
// or
|
||||
// GIMP (https://www.gimp.org/) as follows:
|
||||
// 1. File -> Export As
|
||||
// 2. In Export Image dialog, use 'C source code (*.c)' as filetype.
|
||||
// 3. Press export to get the export options dialog.
|
||||
// 4. Type the desired variable name into the 'prefixed name' box.
|
||||
// 5. Uncheck 'GLIB types (guint8*)'
|
||||
// 6. Check 'Save as RGB565 (16-bit)'
|
||||
// 7. Press export to save your image.
|
||||
// Assuming 'image_name' was typed in the 'prefixed name' box of step 4,
|
||||
// you can have to include the c file, then using the image can be done with:
|
||||
// tft.drawRGBBitmap(0, 0, image_name.pixel_data, image_name.width, image_name.height);
|
||||
// See also https://forum.pjrc.com/threads/35575-Export-for-ILI9341_t3-with-GIMP
|
||||
|
||||
#include "SPI.h"
|
||||
#include <Adafruit_ILI9341.h>
|
||||
#include "dragon.h"
|
||||
|
||||
// For the Adafruit shield, these are the default.
|
||||
//#define TFT_DC 9
|
||||
//#define TFT_CS 10
|
||||
|
||||
// Feather 32u4 or M0 with TFT FeatherWing:
|
||||
#define TFT_DC 10
|
||||
#define TFT_CS 9
|
||||
// ESP8266:
|
||||
//#define TFT_DC 15
|
||||
//#define TFT_CS 0
|
||||
// Other boards (including Feather boards) may have other pinouts;
|
||||
// see learn.adafruit.com/adafruit-2-4-tft-touch-screen-featherwing/pinouts
|
||||
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
// If using the breakout, change pins as desired
|
||||
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
|
||||
|
||||
void setup() {
|
||||
tft.begin();
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
for(uint8_t r=0; r<4; r++) {
|
||||
tft.setRotation(r);
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
for(uint8_t j=0; j<20; j++) {
|
||||
tft.drawRGBBitmap(
|
||||
random(-DRAGON_WIDTH , tft.width()),
|
||||
random(-DRAGON_HEIGHT, tft.height()),
|
||||
#if defined(__AVR__) || defined(ESP8266)
|
||||
dragonBitmap,
|
||||
#else
|
||||
// Some non-AVR MCU's have a "flat" memory model and don't
|
||||
// distinguish between flash and RAM addresses. In this case,
|
||||
// the RAM-resident-optimized drawRGBBitmap in the ILI9341
|
||||
// library can be invoked by forcibly type-converting the
|
||||
// PROGMEM bitmap pointer to a non-const uint16_t *.
|
||||
(uint16_t *)dragonBitmap,
|
||||
#endif
|
||||
DRAGON_WIDTH, DRAGON_HEIGHT);
|
||||
delay(1); // Allow ESP8266 to handle watchdog & WiFi stuff
|
||||
}
|
||||
delay(3000);
|
||||
}
|
||||
}
|
||||
218
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/spitftbitmap/spitftbitmap.ino
Normal file
218
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/spitftbitmap/spitftbitmap.ino
Normal file
@ -0,0 +1,218 @@
|
||||
/***************************************************
|
||||
This is our Bitmap drawing example for the Adafruit ILI9341 Breakout and Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
|
||||
#include <Adafruit_GFX.h> // Core graphics library
|
||||
#include "Adafruit_ILI9341.h" // Hardware-specific library
|
||||
#include <SPI.h>
|
||||
#include <SD.h>
|
||||
|
||||
// TFT display and SD card will share the hardware SPI interface.
|
||||
// Hardware SPI pins are specific to the Arduino board type and
|
||||
// cannot be remapped to alternate pins. For Arduino Uno,
|
||||
// Duemilanove, etc., pin 11 = MOSI, pin 12 = MISO, pin 13 = SCK.
|
||||
|
||||
#define TFT_DC 9
|
||||
#define TFT_CS 10
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
#define SD_CS 4
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(9600);
|
||||
|
||||
tft.begin();
|
||||
|
||||
yield();
|
||||
|
||||
Serial.print("Initializing SD card...");
|
||||
if (!SD.begin(SD_CS)) {
|
||||
Serial.println("failed!");
|
||||
}
|
||||
Serial.println("OK!");
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
for(uint8_t r=0; r<4; r++) {
|
||||
tft.setRotation(r);
|
||||
tft.fillScreen(ILI9341_BLUE);
|
||||
for(int8_t i=-2; i<1; i++) {
|
||||
bmpDraw("purple.bmp",
|
||||
(tft.width() / 2) + (i * 120),
|
||||
(tft.height() / 2) + (i * 160));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This function opens a Windows Bitmap (BMP) file and
|
||||
// displays it at the given coordinates. It's sped up
|
||||
// by reading many pixels worth of data at a time
|
||||
// (rather than pixel by pixel). Increasing the buffer
|
||||
// size takes more of the Arduino's precious RAM but
|
||||
// makes loading a little faster. 20 pixels seems a
|
||||
// good balance.
|
||||
|
||||
#define BUFFPIXEL 20
|
||||
|
||||
void bmpDraw(char *filename, int16_t x, int16_t y) {
|
||||
|
||||
File bmpFile;
|
||||
int bmpWidth, bmpHeight; // W+H in pixels
|
||||
uint8_t bmpDepth; // Bit depth (currently must be 24)
|
||||
uint32_t bmpImageoffset; // Start of image data in file
|
||||
uint32_t rowSize; // Not always = bmpWidth; may have padding
|
||||
uint8_t sdbuffer[3*BUFFPIXEL]; // pixel buffer (R+G+B per pixel)
|
||||
uint8_t buffidx = sizeof(sdbuffer); // Current position in sdbuffer
|
||||
boolean goodBmp = false; // Set to true on valid header parse
|
||||
boolean flip = true; // BMP is stored bottom-to-top
|
||||
int w, h, row, col, x2, y2, bx1, by1;
|
||||
uint8_t r, g, b;
|
||||
uint32_t pos = 0, startTime = millis();
|
||||
|
||||
if((x >= tft.width()) || (y >= tft.height())) return;
|
||||
|
||||
Serial.println();
|
||||
Serial.print(F("Loading image '"));
|
||||
Serial.print(filename);
|
||||
Serial.println('\'');
|
||||
|
||||
// Open requested file on SD card
|
||||
if ((bmpFile = SD.open(filename)) == NULL) {
|
||||
Serial.print(F("File not found"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Parse BMP header
|
||||
if(read16(bmpFile) == 0x4D42) { // BMP signature
|
||||
Serial.print(F("File size: ")); Serial.println(read32(bmpFile));
|
||||
(void)read32(bmpFile); // Read & ignore creator bytes
|
||||
bmpImageoffset = read32(bmpFile); // Start of image data
|
||||
Serial.print(F("Image Offset: ")); Serial.println(bmpImageoffset, DEC);
|
||||
// Read DIB header
|
||||
Serial.print(F("Header size: ")); Serial.println(read32(bmpFile));
|
||||
bmpWidth = read32(bmpFile);
|
||||
bmpHeight = read32(bmpFile);
|
||||
if(read16(bmpFile) == 1) { // # planes -- must be '1'
|
||||
bmpDepth = read16(bmpFile); // bits per pixel
|
||||
Serial.print(F("Bit Depth: ")); Serial.println(bmpDepth);
|
||||
if((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed
|
||||
|
||||
goodBmp = true; // Supported BMP format -- proceed!
|
||||
Serial.print(F("Image size: "));
|
||||
Serial.print(bmpWidth);
|
||||
Serial.print('x');
|
||||
Serial.println(bmpHeight);
|
||||
|
||||
// BMP rows are padded (if needed) to 4-byte boundary
|
||||
rowSize = (bmpWidth * 3 + 3) & ~3;
|
||||
|
||||
// If bmpHeight is negative, image is in top-down order.
|
||||
// This is not canon but has been observed in the wild.
|
||||
if(bmpHeight < 0) {
|
||||
bmpHeight = -bmpHeight;
|
||||
flip = false;
|
||||
}
|
||||
|
||||
// Crop area to be loaded
|
||||
x2 = x + bmpWidth - 1; // Lower-right corner
|
||||
y2 = y + bmpHeight - 1;
|
||||
if((x2 >= 0) && (y2 >= 0)) { // On screen?
|
||||
w = bmpWidth; // Width/height of section to load/display
|
||||
h = bmpHeight;
|
||||
bx1 = by1 = 0; // UL coordinate in BMP file
|
||||
if(x < 0) { // Clip left
|
||||
bx1 = -x;
|
||||
x = 0;
|
||||
w = x2 + 1;
|
||||
}
|
||||
if(y < 0) { // Clip top
|
||||
by1 = -y;
|
||||
y = 0;
|
||||
h = y2 + 1;
|
||||
}
|
||||
if(x2 >= tft.width()) w = tft.width() - x; // Clip right
|
||||
if(y2 >= tft.height()) h = tft.height() - y; // Clip bottom
|
||||
|
||||
// Set TFT address window to clipped image bounds
|
||||
tft.startWrite(); // Requires start/end transaction now
|
||||
tft.setAddrWindow(x, y, w, h);
|
||||
|
||||
for (row=0; row<h; row++) { // For each scanline...
|
||||
|
||||
// Seek to start of scan line. It might seem labor-
|
||||
// intensive to be doing this on every line, but this
|
||||
// method covers a lot of gritty details like cropping
|
||||
// and scanline padding. Also, the seek only takes
|
||||
// place if the file position actually needs to change
|
||||
// (avoids a lot of cluster math in SD library).
|
||||
if(flip) // Bitmap is stored bottom-to-top order (normal BMP)
|
||||
pos = bmpImageoffset + (bmpHeight - 1 - (row + by1)) * rowSize;
|
||||
else // Bitmap is stored top-to-bottom
|
||||
pos = bmpImageoffset + (row + by1) * rowSize;
|
||||
pos += bx1 * 3; // Factor in starting column (bx1)
|
||||
if(bmpFile.position() != pos) { // Need seek?
|
||||
tft.endWrite(); // End TFT transaction
|
||||
bmpFile.seek(pos);
|
||||
buffidx = sizeof(sdbuffer); // Force buffer reload
|
||||
tft.startWrite(); // Start new TFT transaction
|
||||
}
|
||||
for (col=0; col<w; col++) { // For each pixel...
|
||||
// Time to read more pixel data?
|
||||
if (buffidx >= sizeof(sdbuffer)) { // Indeed
|
||||
tft.endWrite(); // End TFT transaction
|
||||
bmpFile.read(sdbuffer, sizeof(sdbuffer));
|
||||
buffidx = 0; // Set index to beginning
|
||||
tft.startWrite(); // Start new TFT transaction
|
||||
}
|
||||
// Convert pixel from BMP to TFT format, push to display
|
||||
b = sdbuffer[buffidx++];
|
||||
g = sdbuffer[buffidx++];
|
||||
r = sdbuffer[buffidx++];
|
||||
tft.writePixel(tft.color565(r,g,b));
|
||||
} // end pixel
|
||||
} // end scanline
|
||||
tft.endWrite(); // End last TFT transaction
|
||||
} // end onscreen
|
||||
Serial.print(F("Loaded in "));
|
||||
Serial.print(millis() - startTime);
|
||||
Serial.println(" ms");
|
||||
} // end goodBmp
|
||||
}
|
||||
}
|
||||
|
||||
bmpFile.close();
|
||||
if(!goodBmp) Serial.println(F("BMP format not recognized."));
|
||||
}
|
||||
|
||||
// These read 16- and 32-bit types from the SD card file.
|
||||
// BMP data is stored little-endian, Arduino is little-endian too.
|
||||
// May need to reverse subscript order if porting elsewhere.
|
||||
|
||||
uint16_t read16(File &f) {
|
||||
uint16_t result;
|
||||
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||
((uint8_t *)&result)[1] = f.read(); // MSB
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32_t read32(File &f) {
|
||||
uint32_t result;
|
||||
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||
((uint8_t *)&result)[1] = f.read();
|
||||
((uint8_t *)&result)[2] = f.read();
|
||||
((uint8_t *)&result)[3] = f.read(); // MSB
|
||||
return result;
|
||||
}
|
||||
146
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/touchpaint/touchpaint.ino
Normal file
146
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/touchpaint/touchpaint.ino
Normal file
@ -0,0 +1,146 @@
|
||||
/***************************************************
|
||||
This is our touchscreen painting example for the Adafruit ILI9341 Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
|
||||
#include <Adafruit_GFX.h> // Core graphics library
|
||||
#include <SPI.h>
|
||||
#include <Wire.h> // this is needed even tho we aren't using it
|
||||
#include <Adafruit_ILI9341.h>
|
||||
#include <Adafruit_STMPE610.h>
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 150
|
||||
#define TS_MINY 130
|
||||
#define TS_MAXX 3800
|
||||
#define TS_MAXY 4000
|
||||
|
||||
// The STMPE610 uses hardware SPI on the shield, and #8
|
||||
#define STMPE_CS 8
|
||||
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
|
||||
|
||||
// The display also uses hardware SPI, plus #9 & #10
|
||||
#define TFT_CS 10
|
||||
#define TFT_DC 9
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
// Size of the color selection boxes and the paintbrush size
|
||||
#define BOXSIZE 40
|
||||
#define PENRADIUS 3
|
||||
int oldcolor, currentcolor;
|
||||
|
||||
void setup(void) {
|
||||
// while (!Serial); // used for leonardo debugging
|
||||
|
||||
Serial.begin(9600);
|
||||
Serial.println(F("Touch Paint!"));
|
||||
|
||||
tft.begin();
|
||||
|
||||
if (!ts.begin()) {
|
||||
Serial.println("Couldn't start touchscreen controller");
|
||||
while (1);
|
||||
}
|
||||
Serial.println("Touchscreen started");
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
|
||||
// make the color selection boxes
|
||||
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
|
||||
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
|
||||
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
|
||||
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
|
||||
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
|
||||
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
|
||||
|
||||
// select the current color 'red'
|
||||
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
currentcolor = ILI9341_RED;
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
// See if there's any touch data for us
|
||||
if (ts.bufferEmpty()) {
|
||||
return;
|
||||
}
|
||||
/*
|
||||
// You can also wait for a touch
|
||||
if (! ts.touched()) {
|
||||
return;
|
||||
}
|
||||
*/
|
||||
|
||||
// Retrieve a point
|
||||
TS_Point p = ts.getPoint();
|
||||
|
||||
/*
|
||||
Serial.print("X = "); Serial.print(p.x);
|
||||
Serial.print("\tY = "); Serial.print(p.y);
|
||||
Serial.print("\tPressure = "); Serial.println(p.z);
|
||||
*/
|
||||
|
||||
// Scale from ~0->4000 to tft.width using the calibration #'s
|
||||
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
|
||||
/*
|
||||
Serial.print("("); Serial.print(p.x);
|
||||
Serial.print(", "); Serial.print(p.y);
|
||||
Serial.println(")");
|
||||
*/
|
||||
|
||||
if (p.y < BOXSIZE) {
|
||||
oldcolor = currentcolor;
|
||||
|
||||
if (p.x < BOXSIZE) {
|
||||
currentcolor = ILI9341_RED;
|
||||
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*2) {
|
||||
currentcolor = ILI9341_YELLOW;
|
||||
tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*3) {
|
||||
currentcolor = ILI9341_GREEN;
|
||||
tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*4) {
|
||||
currentcolor = ILI9341_CYAN;
|
||||
tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*5) {
|
||||
currentcolor = ILI9341_BLUE;
|
||||
tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*6) {
|
||||
currentcolor = ILI9341_MAGENTA;
|
||||
tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
}
|
||||
|
||||
if (oldcolor != currentcolor) {
|
||||
if (oldcolor == ILI9341_RED)
|
||||
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
|
||||
if (oldcolor == ILI9341_YELLOW)
|
||||
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
|
||||
if (oldcolor == ILI9341_GREEN)
|
||||
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
|
||||
if (oldcolor == ILI9341_CYAN)
|
||||
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
|
||||
if (oldcolor == ILI9341_BLUE)
|
||||
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
|
||||
if (oldcolor == ILI9341_MAGENTA)
|
||||
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
|
||||
}
|
||||
}
|
||||
if (((p.y-PENRADIUS) > BOXSIZE) && ((p.y+PENRADIUS) < tft.height())) {
|
||||
tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor);
|
||||
}
|
||||
}
|
||||
150
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/touchpaint_featherwing/touchpaint_featherwing.ino
Normal file
150
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/Adafruit_ILI9341/examples/touchpaint_featherwing/touchpaint_featherwing.ino
Normal file
@ -0,0 +1,150 @@
|
||||
/***************************************************
|
||||
This is our touchscreen painting example for the Adafruit TFT FeatherWing
|
||||
----> http://www.adafruit.com/products/3315
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
#include <SPI.h>
|
||||
#include <Wire.h> // this is needed even tho we aren't using it
|
||||
|
||||
#include <Adafruit_GFX.h> // Core graphics library
|
||||
#include <Adafruit_ILI9341.h> // Hardware-specific library
|
||||
#include <Adafruit_STMPE610.h>
|
||||
|
||||
#ifdef ESP8266
|
||||
#define STMPE_CS 16
|
||||
#define TFT_CS 0
|
||||
#define TFT_DC 15
|
||||
#define SD_CS 2
|
||||
#endif
|
||||
#ifdef __AVR_ATmega32U4__
|
||||
#define STMPE_CS 6
|
||||
#define TFT_CS 9
|
||||
#define TFT_DC 10
|
||||
#define SD_CS 5
|
||||
#endif
|
||||
#ifdef ARDUINO_SAMD_FEATHER_M0
|
||||
#define STMPE_CS 6
|
||||
#define TFT_CS 9
|
||||
#define TFT_DC 10
|
||||
#define SD_CS 5
|
||||
#endif
|
||||
#ifdef TEENSYDUINO
|
||||
#define TFT_DC 10
|
||||
#define TFT_CS 4
|
||||
#define STMPE_CS 3
|
||||
#define SD_CS 8
|
||||
#endif
|
||||
#ifdef ARDUINO_STM32_FEATHER
|
||||
#define TFT_DC PB4
|
||||
#define TFT_CS PA15
|
||||
#define STMPE_CS PC7
|
||||
#define SD_CS PC5
|
||||
#endif
|
||||
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
Adafruit_STMPE610 ts = Adafruit_STMPE610(STMPE_CS);
|
||||
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 3800
|
||||
#define TS_MAXX 100
|
||||
#define TS_MINY 100
|
||||
#define TS_MAXY 3750
|
||||
|
||||
// Size of the color selection boxes and the paintbrush size
|
||||
#define BOXSIZE 40
|
||||
#define PENRADIUS 3
|
||||
int oldcolor, currentcolor;
|
||||
|
||||
void setup(void) {
|
||||
Serial.begin(115200);
|
||||
|
||||
delay(10);
|
||||
Serial.println("FeatherWing TFT");
|
||||
if (!ts.begin()) {
|
||||
Serial.println("Couldn't start touchscreen controller");
|
||||
while (1);
|
||||
}
|
||||
Serial.println("Touchscreen started");
|
||||
|
||||
tft.begin();
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
|
||||
// make the color selection boxes
|
||||
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
|
||||
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
|
||||
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
|
||||
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
|
||||
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
|
||||
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
|
||||
|
||||
// select the current color 'red'
|
||||
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
currentcolor = ILI9341_RED;
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// Retrieve a point
|
||||
TS_Point p = ts.getPoint();
|
||||
|
||||
Serial.print("X = "); Serial.print(p.x);
|
||||
Serial.print("\tY = "); Serial.print(p.y);
|
||||
Serial.print("\tPressure = "); Serial.println(p.z);
|
||||
|
||||
|
||||
// Scale from ~0->4000 to tft.width using the calibration #'s
|
||||
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
|
||||
if (p.y < BOXSIZE) {
|
||||
oldcolor = currentcolor;
|
||||
|
||||
if (p.x < BOXSIZE) {
|
||||
currentcolor = ILI9341_RED;
|
||||
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*2) {
|
||||
currentcolor = ILI9341_YELLOW;
|
||||
tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*3) {
|
||||
currentcolor = ILI9341_GREEN;
|
||||
tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*4) {
|
||||
currentcolor = ILI9341_CYAN;
|
||||
tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*5) {
|
||||
currentcolor = ILI9341_BLUE;
|
||||
tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
} else if (p.x < BOXSIZE*6) {
|
||||
currentcolor = ILI9341_MAGENTA;
|
||||
tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_WHITE);
|
||||
}
|
||||
|
||||
if (oldcolor != currentcolor) {
|
||||
if (oldcolor == ILI9341_RED)
|
||||
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, ILI9341_RED);
|
||||
if (oldcolor == ILI9341_YELLOW)
|
||||
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, ILI9341_YELLOW);
|
||||
if (oldcolor == ILI9341_GREEN)
|
||||
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, ILI9341_GREEN);
|
||||
if (oldcolor == ILI9341_CYAN)
|
||||
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, ILI9341_CYAN);
|
||||
if (oldcolor == ILI9341_BLUE)
|
||||
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, ILI9341_BLUE);
|
||||
if (oldcolor == ILI9341_MAGENTA)
|
||||
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, ILI9341_MAGENTA);
|
||||
}
|
||||
}
|
||||
|
||||
if (((p.y-PENRADIUS) > 0) && ((p.y+PENRADIUS) < tft.height())) {
|
||||
tft.fillCircle(p.x, p.y, PENRADIUS, currentcolor);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
name=Adafruit ILI9341
|
||||
version=1.0.8
|
||||
author=Adafruit
|
||||
maintainer=Adafruit <info@adafruit.com>
|
||||
sentence=Library for Adafruit ILI9341 displays
|
||||
paragraph=Library for Adafruit ILI9341 displays
|
||||
category=Display
|
||||
url=https://github.com/adafruit/Adafruit_ILI9341
|
||||
architectures=*
|
||||
36
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/readme.txt
Normal file
36
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/lib/readme.txt
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
This directory is intended for the project specific (private) libraries.
|
||||
PlatformIO will compile them to static libraries and link to executable file.
|
||||
|
||||
The source code of each library should be placed in separate directory, like
|
||||
"lib/private_lib/[here are source files]".
|
||||
|
||||
For example, see how can be organized `Foo` and `Bar` libraries:
|
||||
|
||||
|--lib
|
||||
| |--Bar
|
||||
| | |--docs
|
||||
| | |--examples
|
||||
| | |--src
|
||||
| | |- Bar.c
|
||||
| | |- Bar.h
|
||||
| |--Foo
|
||||
| | |- Foo.c
|
||||
| | |- Foo.h
|
||||
| |- readme.txt --> THIS FILE
|
||||
|- platformio.ini
|
||||
|--src
|
||||
|- main.c
|
||||
|
||||
Then in `src/main.c` you should use:
|
||||
|
||||
#include <Foo.h>
|
||||
#include <Bar.h>
|
||||
|
||||
// rest H/C/CPP code
|
||||
|
||||
PlatformIO will find your libraries automatically, configure preprocessor's
|
||||
include paths and build them.
|
||||
|
||||
More information about PlatformIO Library Dependency Finder
|
||||
- http://docs.platformio.org/page/librarymanager/ldf.html
|
||||
18
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/platformio.ini
Normal file
18
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/platformio.ini
Normal file
@ -0,0 +1,18 @@
|
||||
; PlatformIO Project Configuration File
|
||||
;
|
||||
; Build options: build flags, source filter
|
||||
; Upload options: custom upload port, speed and extra flags
|
||||
; Library options: dependencies, extra library storages
|
||||
; Advanced options: extra scripting
|
||||
;
|
||||
; Please visit documentation for the other options and examples
|
||||
; http://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[env:esp32-evb]
|
||||
platform = espressif32
|
||||
board = esp32-evb
|
||||
framework = arduino
|
||||
;[env:megaatmega2560]
|
||||
;platform = atmelavr
|
||||
;board = megaatmega2560
|
||||
;framework = arduino
|
||||
238
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/src/graphicstest_olimex.ino
Normal file
238
SOFTWARE/PlatformIO/LCD2.8RTP_Demo/src/graphicstest_olimex.ino
Normal file
@ -0,0 +1,238 @@
|
||||
/***************************************************
|
||||
This is our GFX example for the Adafruit ILI9341 Breakout and Shield
|
||||
----> http://www.adafruit.com/products/1651
|
||||
|
||||
Check out the links above for our tutorials and wiring diagrams
|
||||
These displays use SPI to communicate, 4 or 5 pins are required to
|
||||
interface (RST is optional)
|
||||
Adafruit invests time and resources providing this open source code,
|
||||
please support Adafruit and open-source hardware by purchasing
|
||||
products from Adafruit!
|
||||
|
||||
Written by Limor Fried/Ladyada for Adafruit Industries.
|
||||
MIT license, all text above must be included in any redistribution
|
||||
****************************************************/
|
||||
|
||||
|
||||
#include "SPI.h"
|
||||
#include "Adafruit_GFX.h"
|
||||
#include "Adafruit_ILI9341.h"
|
||||
#include "Wire.h"
|
||||
#include <Adafruit_STMPE610.h>
|
||||
|
||||
// This is calibration data for the raw touch data to the screen coordinates
|
||||
#define TS_MINX 290
|
||||
#define TS_MINY 285
|
||||
#define TS_MAXX 7520
|
||||
#define TS_MAXY 7510
|
||||
#define TS_I2C_ADDRESS 0x4d
|
||||
|
||||
|
||||
// This is pinouts for ESP32-EVB
|
||||
#define TFT_DC 15
|
||||
#define TFT_CS 17
|
||||
#define TFT_MOSI 2
|
||||
#define TFT_MISO 15
|
||||
#define TFT_CLK 14
|
||||
//#define TFT_RST 33
|
||||
|
||||
// This is pinouts for Olimexino 2560
|
||||
//#define TFT_DC 50
|
||||
//#define TFT_CS 53
|
||||
//#define TFT_MOSI 51
|
||||
//#define TFT_MISO 50
|
||||
//#define TFT_CLK 52
|
||||
//#define TFT_RST 33
|
||||
|
||||
|
||||
Adafruit_STMPE610 ts = Adafruit_STMPE610();
|
||||
|
||||
// Size of the color selection boxes and the paintbrush size
|
||||
#define BOXSIZE 40
|
||||
|
||||
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
|
||||
|
||||
uint8_t tp[5];
|
||||
|
||||
void setup() {
|
||||
// TODO: Power Up UEXT if 32U4
|
||||
|
||||
delay(1000);
|
||||
|
||||
// TODO: Edit Adafruit_ILI9341.cpp
|
||||
/*
|
||||
--- ...Adafruit_ILI9341.cpp
|
||||
+++ ...Adafruit_ILI9341.cpp
|
||||
|
||||
@@ -256,6 +256,8 @@
|
||||
// Hardware SPI
|
||||
SPI_BEGIN();
|
||||
|
||||
+ pinMode(_dc, OUTPUT);
|
||||
+
|
||||
// toggle RST low to reset
|
||||
if (_rst >= 0) {
|
||||
pinMode(_rst, OUTPUT);
|
||||
*/
|
||||
|
||||
tft.begin();
|
||||
|
||||
// Wire.begin();
|
||||
Wire.begin();
|
||||
pinMode(TFT_DC, OUTPUT);
|
||||
// read diagnostics (optional but can help debug problems)
|
||||
//uint8_t x = tft.readcommand8(ILI9341_RDMODE);
|
||||
delay(1000);
|
||||
|
||||
ts.begin(TS_I2C_ADDRESS);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop(void) {
|
||||
|
||||
// This is just a draw some data Demo
|
||||
|
||||
// Clear Screen
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
// Set some fancy background
|
||||
testFastLines(ILI9341_DARKGREY,ILI9341_DARKCYAN);
|
||||
|
||||
// Print "current date and time"
|
||||
tft.setCursor(5,5);
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);
|
||||
tft.println("29-05-18 11:28"); //TODO: Print the real date and time
|
||||
|
||||
|
||||
// Print "room temperature"
|
||||
tft.setCursor(85,50);
|
||||
tft.setTextColor(ILI9341_GREEN); tft.setTextSize(4);
|
||||
tft.println("22");//TODO: Print the real room temperature
|
||||
tft.setCursor(148,50);
|
||||
tft.println("C");
|
||||
tft.drawCircle(138, 54, 4, ILI9341_GREEN);
|
||||
tft.drawCircle(138, 54, 5, ILI9341_GREEN);
|
||||
tft.setCursor(78,85);
|
||||
tft.setTextColor(ILI9341_GREEN); tft.setTextSize(1);
|
||||
tft.println("ROOM TEMPERATURE");
|
||||
|
||||
|
||||
// Now print Message box wit two yes/no buttons
|
||||
tft.fillRoundRect(10,120, 220, 190, 8, ILI9341_OLIVE);
|
||||
tft.drawRoundRect(10,120, 220, 190, 8, ILI9341_WHITE);
|
||||
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(2);
|
||||
tft.fillRoundRect(20,150, 200, 80,8, ILI9341_BLUE);
|
||||
tft.setCursor(90, 165);
|
||||
tft.println("Save");
|
||||
tft.setCursor(40, 190);
|
||||
tft.println("new settings?");
|
||||
tft.drawRoundRect(20,150, 200, 80, 8, ILI9341_WHITE);
|
||||
// Get the choise
|
||||
bool answer = Get_yes_no();
|
||||
|
||||
if (answer == true)
|
||||
{
|
||||
// Some animation while "write to eeprom"
|
||||
testFilledRects(ILI9341_DARKGREEN,ILI9341_DARKCYAN);
|
||||
tft.setCursor(80, 150);
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(3);
|
||||
tft.println("Done!");
|
||||
} else tft.fillScreen(ILI9341_RED);
|
||||
// fill screen red to show negative choise
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
|
||||
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start;
|
||||
int x, y, w = tft.width(), h = tft.height();
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
start = micros();
|
||||
for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
|
||||
for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);
|
||||
|
||||
return micros() - start;
|
||||
}
|
||||
|
||||
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
|
||||
unsigned long start, t = 0;
|
||||
int n, i, i2,
|
||||
cx = tft.width() / 2 - 1,
|
||||
cy = tft.height() / 2 - 1;
|
||||
|
||||
tft.fillScreen(ILI9341_BLACK);
|
||||
n = min(tft.width(), tft.height());
|
||||
for(i=n; i>0; i-=6) {
|
||||
i2 = i / 2;
|
||||
start = micros();
|
||||
tft.fillRect(cx-i2, cy-i2, i, i, color1);
|
||||
t += micros() - start;
|
||||
// Outlines are not included in timing results
|
||||
tft.drawRect(cx-i2, cy-i2, i, i, color2);
|
||||
yield();
|
||||
}
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
bool Get_yes_no(void){
|
||||
TS_Point p;
|
||||
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(3);
|
||||
|
||||
tft.fillRoundRect(20,250, 100, 50,8, ILI9341_RED);
|
||||
tft.setCursor(56, 265);
|
||||
tft.println("NO");
|
||||
tft.drawRoundRect(20,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
tft.fillRoundRect(120,250, 100, 50,8, ILI9341_GREEN);
|
||||
tft.setCursor(144, 265);
|
||||
tft.println("YES");
|
||||
tft.drawRoundRect(120,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
|
||||
while (1){
|
||||
delay(50);
|
||||
p = ts.getPoint();
|
||||
|
||||
if (p.z != 129){
|
||||
|
||||
|
||||
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
|
||||
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
|
||||
p.y = 320 - p.y;
|
||||
|
||||
// tft.fillCircle(p.x, p.y, 5, ILI9341_YELLOW);
|
||||
|
||||
|
||||
if ((p.y > 250) && (p.y<300)){
|
||||
|
||||
if ((p.x> 20) && (p.x < 220))
|
||||
if (p.x>120)
|
||||
{
|
||||
tft.fillRoundRect(120,250, 100, 50,8, ILI9341_OLIVE);
|
||||
tft.setCursor(144, 265);
|
||||
tft.println("YES");
|
||||
tft.drawRoundRect(120,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
delay(500);
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
|
||||
tft.fillRoundRect(20,250, 100, 50,8, ILI9341_OLIVE);
|
||||
tft.setCursor(56, 265);
|
||||
tft.println("NO");
|
||||
tft.drawRoundRect(20,250, 100, 50, 8, ILI9341_WHITE);
|
||||
|
||||
delay(500);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
7
SOFTWARE/README.TXT
Normal file
7
SOFTWARE/README.TXT
Normal file
@ -0,0 +1,7 @@
|
||||
Arduino example:
|
||||
|
||||
Atmega2560
|
||||
|
||||
PlatformIO example:
|
||||
|
||||
ESP32-EVB
|
||||
Loading…
Reference in New Issue
Block a user