├── .gitignore
├── .idea
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── README.md
├── Robot
├── .gitignore
├── build.gradle
├── libs
│ └── nanoHttpd.jar
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── magc.html
│ └── wscontrol.html
│ ├── java
│ └── com
│ │ └── samgol
│ │ └── robot
│ │ ├── Inputs
│ │ ├── InputData.java
│ │ ├── InputDataObserver.java
│ │ ├── InputKb.java
│ │ ├── InputSource.java
│ │ ├── InputType.java
│ │ └── command
│ │ │ ├── Command.java
│ │ │ └── CommandSource.java
│ │ ├── RobotActivity.java
│ │ ├── button
│ │ ├── AlarmButton.java
│ │ └── AlarmData.java
│ │ ├── camera
│ │ ├── CamInputType.java
│ │ ├── CameraInputData.java
│ │ ├── RobotCamera.java
│ │ └── ServoCamera.java
│ │ ├── chassis
│ │ ├── DcMotorMock.java
│ │ ├── DcMotorOnOff.java
│ │ ├── DcMotorWithSpeed.java
│ │ ├── RobotChassisMotorBased.java
│ │ ├── RobotChassisPid.java
│ │ ├── RobotChassisSimple.java
│ │ ├── RobotMotor.java
│ │ └── RobotСhassis.java
│ │ ├── compass
│ │ ├── HMC5883L.java
│ │ └── RotationSensor.java
│ │ ├── controller
│ │ └── FinalStateMachine.java
│ │ ├── lcd
│ │ ├── Font.java
│ │ ├── Fonts.java
│ │ └── RobotLcd.java
│ │ ├── ledrgb
│ │ └── LedRGB.java
│ │ ├── obstacle
│ │ ├── Hcsr04.java
│ │ ├── ObstacleInput.java
│ │ ├── ObstacleInputDataType.java
│ │ └── ObstacleSensor.java
│ │ └── remoteControl
│ │ ├── CommandListener.java
│ │ ├── ImageConsumer.java
│ │ ├── Server.java
│ │ └── Ws.java
│ └── res
│ ├── layout
│ └── activity_robot.xml
│ ├── values-w820dp
│ └── dimens.xml
│ └── values
│ ├── colors.xml
│ ├── dimens.xml
│ └── strings.xml
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── img
├── btn.jpg
├── h-bridge.jpg
├── hc-sr04-02.jpg
├── motor.jpg
├── raspberry_pi_3.jpg
├── rgb.jpg
├── robot.jpg
├── servo.jpg
└── ssd1306.jpg
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # Intellij
36 | *.iml
37 | .idea/workspace.xml
38 | .idea/tasks.xml
39 | .idea/gradle.xml
40 | .idea/libraries
41 |
42 | # Keystore files
43 | *.jks
44 |
45 | # External native build folder generated in Android Studio 2.2 and later
46 | .externalNativeBuild
47 |
48 | # Google Services (e.g. APIs or Firebase)
49 | google-services.json
50 |
51 | # Freeline
52 | freeline.py
53 | freeline/
54 | freeline_project_description.json
55 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
25 | * http://jared.geek.nz/2014/jan/custom-fonts-for-microcontrollers
26 | * Author : Jared Sanson (jared@jared.geek.nz)
27 | */
28 | public class Fonts {
29 | public static int CHAR_WIDTH = 6;
30 | public static int CHAR_HEIGHT = 8;
31 |
32 | public enum Type {
33 | font5x5, fontAcme5Outlines, fontAztech, fontCrackers, fontSuperDig, fontZxpix
34 | }
35 |
36 | public static char[][] font5x5 = {
37 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
38 | {0x5c, 0x00, 0x00, 0x00, 0x00, 0x00}, // !
39 | {0x06, 0x00, 0x06, 0x00, 0x00, 0x00}, // "
40 | {0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00}, // #
41 | {0x5c, 0x54, 0xfe, 0x54, 0x74, 0x00}, // $
42 | {0x44, 0x20, 0x10, 0x08, 0x44, 0x00}, // %
43 | {0x28, 0x54, 0x54, 0x20, 0x50, 0x00}, // &
44 | {0x06, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
45 | {0x38, 0x44, 0x00, 0x00, 0x00, 0x00}, // (
46 | {0x44, 0x38, 0x00, 0x00, 0x00, 0x00}, // )
47 | {0x02, 0x07, 0x02, 0x00, 0x00, 0x00}, // *
48 | {0x10, 0x10, 0x7c, 0x10, 0x10, 0x00}, // +
49 | {0xc0, 0x00, 0x00, 0x00, 0x00, 0x00}, // ,
50 | {0x10, 0x10, 0x10, 0x10, 0x10, 0x00}, // -
51 | {0x40, 0x00, 0x00, 0x00, 0x00, 0x00}, // .
52 | {0x60, 0x10, 0x0c, 0x00, 0x00, 0x00}, // /
53 | {0x7c, 0x64, 0x54, 0x4c, 0x7c, 0x00}, // 0
54 | {0x48, 0x7c, 0x40, 0x00, 0x00, 0x00}, // 1
55 | {0x64, 0x54, 0x54, 0x54, 0x48, 0x00}, // 2
56 | {0x44, 0x54, 0x54, 0x54, 0x6c, 0x00}, // 3
57 | {0x3c, 0x20, 0x70, 0x20, 0x20, 0x00}, // 4
58 | {0x5c, 0x54, 0x54, 0x54, 0x24, 0x00}, // 5
59 | {0x7c, 0x54, 0x54, 0x54, 0x74, 0x00}, // 6
60 | {0x04, 0x04, 0x64, 0x14, 0x0c, 0x00}, // 7
61 | {0x7c, 0x54, 0x54, 0x54, 0x7c, 0x00}, // 8
62 | {0x5c, 0x54, 0x54, 0x54, 0x7c, 0x00}, // 9
63 | {0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, // :
64 | {0xc4, 0x00, 0x00, 0x00, 0x00, 0x00}, // ;
65 | {0x10, 0x28, 0x44, 0x00, 0x00, 0x00}, // <
66 | {0x28, 0x28, 0x28, 0x28, 0x28, 0x00}, // =
67 | {0x44, 0x28, 0x10, 0x00, 0x00, 0x00}, // >
68 | {0x08, 0x04, 0x54, 0x08, 0x00, 0x00}, // ?
69 | {0x7c, 0x44, 0x54, 0x54, 0x5c, 0x00}, // @
70 | {0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00}, // A
71 | {0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00}, // B
72 | {0x7c, 0x44, 0x44, 0x44, 0x44, 0x00}, // C
73 | {0x7c, 0x44, 0x44, 0x44, 0x38, 0x00}, // D
74 | {0x7c, 0x54, 0x54, 0x54, 0x44, 0x00}, // E
75 | {0x7c, 0x14, 0x14, 0x14, 0x04, 0x00}, // F
76 | {0x7c, 0x44, 0x44, 0x54, 0x74, 0x00}, // G
77 | {0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00}, // H
78 | {0x44, 0x44, 0x7c, 0x44, 0x44, 0x00}, // I
79 | {0x60, 0x40, 0x40, 0x44, 0x7c, 0x00}, // J
80 | {0x7c, 0x10, 0x10, 0x28, 0x44, 0x00}, // K
81 | {0x7c, 0x40, 0x40, 0x40, 0x40, 0x00}, // L
82 | {0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00}, // M
83 | {0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00}, // N
84 | {0x38, 0x44, 0x44, 0x44, 0x38, 0x00}, // O
85 | {0x7c, 0x14, 0x14, 0x14, 0x08, 0x00}, // P
86 | {0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00}, // Q
87 | {0x7c, 0x14, 0x14, 0x14, 0x68, 0x00}, // R
88 | {0x5c, 0x54, 0x54, 0x54, 0x74, 0x00}, // S
89 | {0x04, 0x04, 0x7c, 0x04, 0x04, 0x00}, // T
90 | {0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00}, // U
91 | {0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00}, // V
92 | {0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00}, // W
93 | {0x44, 0x28, 0x10, 0x28, 0x44, 0x00}, // X
94 | {0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00}, // Y
95 | {0x44, 0x64, 0x54, 0x4c, 0x44, 0x00}, // Z
96 | {0x7c, 0x44, 0x00, 0x00, 0x00, 0x00}, // [
97 | {0x0c, 0x10, 0x60, 0x00, 0x00, 0x00}, // "\"
98 | {0x44, 0x7c, 0x00, 0x00, 0x00, 0x00}, // ]
99 | {0x00, 0x01, 0x00, 0x01, 0x00, 0x00}, // ^
100 | {0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // _
101 | {0x00, 0x01, 0x00, 0x00, 0x00, 0x00}, // `
102 | {0x7c, 0x24, 0x24, 0x24, 0x7c, 0x00}, // a
103 | {0x7c, 0x54, 0x54, 0x54, 0x6c, 0x00}, // b
104 | {0x7c, 0x44, 0x44, 0x44, 0x44, 0x00}, // c
105 | {0x7c, 0x44, 0x44, 0x44, 0x38, 0x00}, // d
106 | {0x7c, 0x54, 0x54, 0x54, 0x44, 0x00}, // e
107 | {0x7c, 0x14, 0x14, 0x14, 0x04, 0x00}, // f
108 | {0x7c, 0x44, 0x44, 0x54, 0x74, 0x00}, // g
109 | {0x7c, 0x10, 0x10, 0x10, 0x7c, 0x00}, // h
110 | {0x44, 0x44, 0x7c, 0x44, 0x44, 0x00}, // i
111 | {0x60, 0x40, 0x40, 0x44, 0x7c, 0x00}, // j
112 | {0x7c, 0x10, 0x10, 0x28, 0x44, 0x00}, // k
113 | {0x7c, 0x40, 0x40, 0x40, 0x40, 0x00}, // l
114 | {0x7c, 0x08, 0x10, 0x08, 0x7c, 0x00}, // m
115 | {0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00}, // n
116 | {0x38, 0x44, 0x44, 0x44, 0x38, 0x00}, // o
117 | {0x7c, 0x14, 0x14, 0x14, 0x08, 0x00}, // p
118 | {0x3c, 0x24, 0x64, 0x24, 0x3c, 0x00}, // q
119 | {0x7c, 0x14, 0x14, 0x14, 0x68, 0x00}, // r
120 | {0x5c, 0x54, 0x54, 0x54, 0x74, 0x00}, // s
121 | {0x04, 0x04, 0x7c, 0x04, 0x04, 0x00}, // t
122 | {0x7c, 0x40, 0x40, 0x40, 0x7c, 0x00}, // u
123 | {0x0c, 0x30, 0x40, 0x30, 0x0c, 0x00}, // v
124 | {0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00}, // w
125 | {0x44, 0x28, 0x10, 0x28, 0x44, 0x00}, // x
126 | {0x0c, 0x10, 0x60, 0x10, 0x0c, 0x00}, // y
127 | {0x44, 0x64, 0x54, 0x4c, 0x44, 0x00}, // z
128 | {0x10, 0x7c, 0x44, 0x00, 0x00, 0x00}, // {
129 | {0x6c, 0x00, 0x00, 0x00, 0x00, 0x00}, // |
130 | {0x44, 0x7c, 0x10, 0x00, 0x00, 0x00}, // }
131 | {0x02, 0x01, 0x02, 0x01, 0x00, 0x00}, // ~
132 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
133 | };
134 |
135 | public static char[][] fontAcme5Outlines = {
136 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
137 | {0x7f, 0x51, 0x7f, 0x00, 0x00, 0x00}, // !
138 | {0x0f, 0x09, 0x0f, 0x09, 0x0f, 0x00}, // "
139 | {0x3e, 0x6b, 0x41, 0x6b, 0x41, 0x6b}, // #
140 | {0x7f, 0xd1, 0x94, 0xc5, 0x7f, 0x00}, // $
141 | {0x77, 0x4d, 0x77, 0x59, 0x77, 0x00}, // %
142 | {0x7f, 0x49, 0x55, 0x49, 0x6f, 0x54}, // &
143 | {0x0f, 0x09, 0x0f, 0x00, 0x00, 0x00}, // '
144 | {0x7f, 0xc1, 0xbe, 0xe3, 0x00, 0x00}, // (
145 | {0xe3, 0xbe, 0xc1, 0x7f, 0x00, 0x00}, // )
146 | {0x3e, 0x2a, 0x77, 0x41, 0x77, 0x2a}, // *
147 | {0x1c, 0x14, 0x77, 0x41, 0x77, 0x14}, // +
148 | {0xe0, 0xb0, 0xd0, 0x70, 0x00, 0x00}, // ,
149 | {0x1c, 0x14, 0x14, 0x14, 0x1c, 0x00}, // -
150 | {0x70, 0x50, 0x70, 0x00, 0x00, 0x00}, // .
151 | {0x78, 0x4c, 0x77, 0x19, 0x0f, 0x00}, // /
152 | {0x7f, 0x41, 0x5d, 0x41, 0x7f, 0x00}, // 0
153 | {0x7f, 0x41, 0x7f, 0x00, 0x00, 0x00}, // 1
154 | {0x7f, 0x45, 0x55, 0x51, 0x7f, 0x00}, // 2
155 | {0x7f, 0x55, 0x55, 0x41, 0x7f, 0x00}, // 3
156 | {0x1f, 0x11, 0x77, 0x41, 0x7f, 0x00}, // 4
157 | {0x7f, 0x51, 0x55, 0x45, 0x7f, 0x00}, // 5
158 | {0x7f, 0x41, 0x55, 0x45, 0x7f, 0x00}, // 6
159 | {0x07, 0x7d, 0x45, 0x79, 0x0f, 0x00}, // 7
160 | {0x7f, 0x49, 0x55, 0x49, 0x7f, 0x00}, // 8
161 | {0x7f, 0x51, 0x55, 0x41, 0x7f, 0x00}, // 9
162 | {0x3e, 0x2a, 0x3e, 0x00, 0x00, 0x00}, // :
163 | {0xe0, 0xbe, 0xda, 0x7e, 0x00, 0x00}, // ;
164 | {0x1c, 0x36, 0x6b, 0x5d, 0x77, 0x00}, // <
165 | {0x3e, 0x2a, 0x2a, 0x2a, 0x2a, 0x3e}, // =
166 | {0x77, 0x5d, 0x6b, 0x36, 0x1c, 0x00}, // >
167 | {0x07, 0x7d, 0x55, 0x71, 0x1f, 0x00}, // ?
168 | {0x7f, 0x41, 0x5d, 0x55, 0x51, 0x7f}, // @
169 | {0x7f, 0x41, 0x75, 0x41, 0x7f, 0x00}, // A
170 | {0x7f, 0x41, 0x55, 0x41, 0x7f, 0x00}, // B
171 | {0x7f, 0x41, 0x5d, 0x55, 0x77, 0x00}, // C
172 | {0x7f, 0x41, 0x5d, 0x63, 0x3e, 0x00}, // D
173 | {0x7f, 0x41, 0x55, 0x55, 0x7f, 0x00}, // E
174 | {0x7f, 0x41, 0x75, 0x15, 0x1f, 0x00}, // F
175 | {0x7f, 0x41, 0x5d, 0x45, 0x7f, 0x00}, // G
176 | {0x7f, 0x41, 0x77, 0x41, 0x7f, 0x00}, // H
177 | {0x7f, 0x41, 0x7f, 0x00, 0x00, 0x00}, // I
178 | {0x78, 0x48, 0x5f, 0x41, 0x7f, 0x00}, // J
179 | {0x7f, 0x41, 0x77, 0x49, 0x7f, 0x00}, // K
180 | {0x7f, 0x41, 0x5f, 0x50, 0x70, 0x00}, // L
181 | {0x7f, 0x41, 0x3b, 0x3b, 0x41, 0x7f}, // M
182 | {0x7f, 0x41, 0x3b, 0x76, 0x41, 0x7f}, // N
183 | {0x7f, 0x41, 0x5d, 0x41, 0x7f, 0x00}, // O
184 | {0x7f, 0x41, 0x75, 0x11, 0x1f, 0x00}, // P
185 | {0x7f, 0x41, 0x1d, 0x41, 0x7f, 0x00}, // Q
186 | {0x7f, 0x41, 0x6d, 0x51, 0x6f, 0x00}, // R
187 | {0x7f, 0x51, 0x55, 0x45, 0x7f, 0x00}, // S
188 | {0x07, 0x7d, 0x41, 0x7d, 0x07, 0x00}, // T
189 | {0x7f, 0x41, 0x5f, 0x41, 0x7f, 0x00}, // U
190 | {0x3f, 0x61, 0x5f, 0x61, 0x3f, 0x00}, // V
191 | {0x7f, 0x41, 0x6e, 0x6e, 0x41, 0x7f}, // W
192 | {0x7f, 0x49, 0x77, 0x49, 0x7f, 0x00}, // X
193 | {0x1f, 0x71, 0x47, 0x71, 0x1f, 0x00}, // Y
194 | {0x7b, 0x4d, 0x55, 0x59, 0x6f, 0x00}, // Z
195 | {0xff, 0x80, 0xbe, 0xe3, 0x00, 0x00}, // [
196 | {0x0f, 0x19, 0x77, 0x4c, 0x78, 0x00}, // "\"
197 | {0xe3, 0xbe, 0x80, 0xff, 0x00, 0x00}, // ]
198 | {0x0e, 0x0b, 0x0d, 0x0b, 0x0e, 0x00}, // ^
199 | {0xe0, 0xa0, 0xa0, 0xa0, 0xa0, 0xe0}, // _
200 | {0x07, 0x0d, 0x0b, 0x0e, 0x00, 0x00}, // `
201 | {0x7f, 0x41, 0x75, 0x41, 0x7f, 0x00}, // a
202 | {0x7f, 0x41, 0x55, 0x41, 0x7f, 0x00}, // b
203 | {0x7f, 0x41, 0x5d, 0x55, 0x77, 0x00}, // c
204 | {0x7f, 0x41, 0x5d, 0x63, 0x3e, 0x00}, // d
205 | {0x7f, 0x41, 0x55, 0x55, 0x7f, 0x00}, // e
206 | {0x7f, 0x41, 0x75, 0x15, 0x1f, 0x00}, // f
207 | {0x7f, 0x41, 0x5d, 0x45, 0x7f, 0x00}, // g
208 | {0x7f, 0x41, 0x77, 0x41, 0x7f, 0x00}, // h
209 | {0x7f, 0x41, 0x7f, 0x00, 0x00, 0x00}, // i
210 | {0x78, 0x48, 0x5f, 0x41, 0x7f, 0x00}, // j
211 | {0x7f, 0x41, 0x77, 0x49, 0x7f, 0x00}, // k
212 | {0x7f, 0x41, 0x5f, 0x50, 0x70, 0x00}, // l
213 | {0x7f, 0x41, 0x3b, 0x3b, 0x41, 0x7f}, // m
214 | {0x7f, 0x41, 0x3b, 0x76, 0x41, 0x7f}, // n
215 | {0x7f, 0x41, 0x5d, 0x41, 0x7f, 0x00}, // o
216 | {0x7f, 0x41, 0x75, 0x11, 0x1f, 0x00}, // p
217 | {0x7f, 0x41, 0x1d, 0x41, 0x7f, 0x00}, // q
218 | {0x7f, 0x41, 0x6d, 0x51, 0x6f, 0x00}, // r
219 | {0x7f, 0x51, 0x55, 0x45, 0x7f, 0x00}, // s
220 | {0x07, 0x7d, 0x41, 0x7d, 0x07, 0x00}, // t
221 | {0x7f, 0x41, 0x5f, 0x41, 0x7f, 0x00}, // u
222 | {0x3f, 0x61, 0x5f, 0x61, 0x3f, 0x00}, // v
223 | {0x7f, 0x41, 0x6e, 0x6e, 0x41, 0x7f}, // w
224 | {0x7f, 0x49, 0x77, 0x49, 0x7f, 0x00}, // x
225 | {0x1f, 0x71, 0x47, 0x71, 0x1f, 0x00}, // y
226 | {0x7b, 0x4d, 0x55, 0x59, 0x6f, 0x00}, // z
227 | {0x1c, 0xf7, 0x88, 0xbe, 0xe3, 0x00}, // {
228 | {0xff, 0x80, 0xff, 0x00, 0x00, 0x00}, // |
229 | {0xe3, 0xbe, 0x88, 0xf7, 0x1c, 0x00}, // }
230 | {0x0f, 0x09, 0x0d, 0x09, 0x0b, 0x09}, // ~
231 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
232 | };
233 |
234 | public static char[][] fontAztech = {
235 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
236 | {0x00, 0x2e, 0x00, 0x00, 0x00, 0x00}, // !
237 | {0x00, 0x02, 0x00, 0x02, 0x00, 0x00}, // "
238 | {0x00, 0x0a, 0x1e, 0x0a, 0x1e, 0x00}, // #
239 | {0x00, 0x0e, 0x2a, 0x6b, 0x2a, 0x3a}, // $
240 | {0x00, 0x06, 0x06, 0x26, 0x18, 0x06}, // %
241 | {0x38, 0x3e, 0x2a, 0x2a, 0x28, 0x38}, // &
242 | {0x18, 0x02, 0x00, 0x00, 0x00, 0x00}, // '
243 | {0x00, 0x3e, 0x22, 0x00, 0x00, 0x00}, // (
244 | {0x00, 0x22, 0x3e, 0x00, 0x00, 0x00}, // )
245 | {0x00, 0x0e, 0x0e, 0x0e, 0x04, 0x00}, // *
246 | {0x00, 0x08, 0x1c, 0x08, 0x00, 0x00}, // +
247 | {0x00, 0x20, 0x00, 0x00, 0x00, 0x00}, // ,
248 | {0x00, 0x08, 0x08, 0x08, 0x00, 0x00}, // -
249 | {0x00, 0x20, 0x00, 0x00, 0x00, 0x00}, // .
250 | {0x00, 0x20, 0x18, 0x06, 0x00, 0x00}, // /
251 | {0x00, 0x3e, 0x22, 0x2a, 0x22, 0x3e}, // 0
252 | {0x02, 0x3e, 0x00, 0x00, 0x00, 0x00}, // 1
253 | {0x00, 0x38, 0x28, 0x2a, 0x2a, 0x2e}, // 2
254 | {0x00, 0x22, 0x2a, 0x2e, 0x38, 0x00}, // 3
255 | {0x00, 0x0e, 0x08, 0x08, 0x3e, 0x08}, // 4
256 | {0x00, 0x2e, 0x2a, 0x2a, 0x28, 0x38}, // 5
257 | {0x00, 0x3e, 0x2a, 0x2a, 0x28, 0x38}, // 6
258 | {0x00, 0x06, 0x02, 0x02, 0x0a, 0x3e}, // 7
259 | {0x00, 0x38, 0x2e, 0x2a, 0x2e, 0x38}, // 8
260 | {0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3e}, // 9
261 | {0x00, 0x28, 0x00, 0x00, 0x00, 0x00}, // :
262 | {0x00, 0x28, 0x00, 0x00, 0x00, 0x00}, // ;
263 | {0x00, 0x08, 0x14, 0x22, 0x00, 0x00}, // <
264 | {0x00, 0x14, 0x14, 0x14, 0x14, 0x00}, // =
265 | {0x00, 0x22, 0x14, 0x08, 0x00, 0x00}, // >
266 | {0x00, 0x06, 0x02, 0x2a, 0x0a, 0x06}, // ?
267 | {0x00, 0x3e, 0x02, 0x3a, 0x2a, 0x0a}, // @
268 | {0x22, 0x3e, 0x02, 0x0a, 0x0a, 0x3e}, // A
269 | {0x00, 0x3e, 0x22, 0x2a, 0x2e, 0x38}, // B
270 | {0x00, 0x3e, 0x22, 0x22, 0x20, 0x30}, // C
271 | {0x00, 0x3e, 0x22, 0x22, 0x22, 0x3c}, // D
272 | {0x00, 0x3e, 0x2a, 0x22, 0x20, 0x30}, // E
273 | {0x00, 0x3e, 0x0a, 0x0a, 0x06, 0x02}, // F
274 | {0x00, 0x3e, 0x22, 0x2a, 0x28, 0x38}, // G
275 | {0x00, 0x3e, 0x08, 0x08, 0x08, 0x3e}, // H
276 | {0x00, 0x22, 0x3e, 0x22, 0x00, 0x00}, // I
277 | {0x00, 0x30, 0x20, 0x20, 0x22, 0x3e}, // J
278 | {0x00, 0x3e, 0x08, 0x08, 0x0e, 0x38}, // K
279 | {0x00, 0x3e, 0x20, 0x20, 0x20, 0x30}, // L
280 | {0x00, 0x3e, 0x02, 0x3e, 0x20, 0x3e}, // M
281 | {0x3e, 0x3e, 0x02, 0x3e, 0x20, 0x3e}, // N
282 | {0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e}, // O
283 | {0x00, 0x3e, 0x02, 0x0a, 0x0a, 0x0e}, // P
284 | {0x00, 0x3e, 0x22, 0x22, 0x22, 0x3e}, // Q
285 | {0x00, 0x3e, 0x02, 0x0a, 0x0e, 0x38}, // R
286 | {0x00, 0x0e, 0x0a, 0x2a, 0x2a, 0x3a}, // S
287 | {0x00, 0x06, 0x02, 0x3e, 0x02, 0x06}, // T
288 | {0x00, 0x3e, 0x20, 0x20, 0x20, 0x3e}, // U
289 | {0x00, 0x3e, 0x20, 0x20, 0x3e, 0x00}, // V
290 | {0x00, 0x3e, 0x20, 0x3e, 0x02, 0x3e}, // W
291 | {0x3e, 0x3a, 0x0e, 0x08, 0x0e, 0x3a}, // X
292 | {0x00, 0x0e, 0x08, 0x08, 0x28, 0x3e}, // Y
293 | {0x00, 0x3a, 0x2a, 0x2a, 0x0a, 0x0e}, // Z
294 | {0x00, 0x3e, 0x22, 0x00, 0x00, 0x00}, // [
295 | {0x00, 0x02, 0x0c, 0x30, 0x00, 0x00}, // "\"
296 | {0x22, 0x3e, 0x00, 0x00, 0x00, 0x00}, // ]
297 | {0x00, 0x01, 0x00, 0x01, 0x00, 0x00}, // ^
298 | {0x00, 0x20, 0x20, 0x20, 0x00, 0x00}, // _
299 | {0x00, 0x01, 0x00, 0x00, 0x00, 0x00}, // `
300 | {0x00, 0x38, 0x28, 0x28, 0x08, 0x38}, // a
301 | {0x00, 0x3e, 0x20, 0x28, 0x28, 0x38}, // b
302 | {0x00, 0x38, 0x28, 0x28, 0x20, 0x30}, // c
303 | {0x00, 0x38, 0x28, 0x28, 0x20, 0x3e}, // d
304 | {0x00, 0xf8, 0x88, 0x28, 0x28, 0x38}, // e
305 | {0x00, 0xf8, 0x28, 0x28, 0x18, 0x08}, // f
306 | {0x00, 0x38, 0x28, 0xa8, 0x88, 0xf8}, // g
307 | {0x00, 0x3c, 0x08, 0x08, 0x08, 0x38}, // h
308 | {0x00, 0x3a, 0x00, 0x00, 0x00, 0x00}, // i
309 | {0x80, 0xfa, 0x00, 0x00, 0x00, 0x00}, // j
310 | {0x00, 0x3e, 0x08, 0x08, 0x38, 0x2c}, // k
311 | {0x00, 0x3e, 0x20, 0x00, 0x00, 0x00}, // l
312 | {0x00, 0x38, 0x08, 0x38, 0x20, 0x38}, // m
313 | {0x38, 0x38, 0x08, 0x38, 0x20, 0x38}, // n
314 | {0x00, 0x38, 0x28, 0x28, 0x28, 0x38}, // o
315 | {0x00, 0xf8, 0x08, 0x28, 0x28, 0x38}, // p
316 | {0x00, 0x38, 0x28, 0x28, 0x08, 0xf8}, // q
317 | {0x00, 0x38, 0x08, 0x08, 0x18, 0x08}, // r
318 | {0x00, 0x38, 0x28, 0xa8, 0xa8, 0xe8}, // s
319 | {0x00, 0x3e, 0x28, 0x28, 0x20, 0x30}, // t
320 | {0x00, 0x38, 0x20, 0x20, 0x20, 0x38}, // u
321 | {0x00, 0x38, 0x20, 0x38, 0x00, 0x00}, // v
322 | {0x00, 0x38, 0x20, 0x38, 0x08, 0x38}, // w
323 | {0x38, 0x28, 0x38, 0x10, 0x38, 0x28}, // x
324 | {0x00, 0x38, 0x20, 0xa0, 0xa0, 0xf8}, // y
325 | {0x00, 0xe8, 0xa8, 0xa8, 0x28, 0x38}, // z
326 | {0x08, 0x3e, 0x22, 0x00, 0x00, 0x00}, // {
327 | {0x00, 0x3f, 0x00, 0x00, 0x00, 0x00}, // |
328 | {0x22, 0x3e, 0x08, 0x00, 0x00, 0x00}, // }
329 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ~
330 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
331 | };
332 |
333 | public static char[][] fontBlokus = {
334 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
335 | {0x00, 0x00, 0x5e, 0x00, 0x00, 0x00}, // !
336 | {0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00}, // "
337 | {0xd0, 0x70, 0xdc, 0x70, 0x58, 0x00}, // #
338 | {0x26, 0x4a, 0xff, 0x52, 0x22, 0x00}, // $
339 | {0x00, 0x46, 0x2a, 0x1a, 0x0e, 0x04}, // %
340 | {0x7e, 0x76, 0x42, 0x45, 0x6b, 0x51}, // &
341 | {0x00, 0x00, 0x0e, 0x02, 0x00, 0x00}, // '
342 | {0x00, 0x7e, 0x81, 0x00, 0x00, 0x00}, // (
343 | {0x00, 0x81, 0x7e, 0x00, 0x00, 0x00}, // )
344 | {0x00, 0x1c, 0x00, 0x00, 0x00, 0x00}, // *
345 | {0x00, 0x20, 0x7c, 0x20, 0x00, 0x00}, // +
346 | {0x00, 0x00, 0x80, 0x60, 0x00, 0x00}, // ,
347 | {0x00, 0x10, 0x10, 0x10, 0x00, 0x00}, // -
348 | {0x00, 0x40, 0x00, 0x00, 0x00, 0x00}, // .
349 | {0x00, 0xfe, 0x00, 0x00, 0x00, 0x00}, // /
350 | {0x00, 0x30, 0x48, 0x48, 0x30, 0x00}, // 0
351 | {0x10, 0x48, 0x78, 0x40, 0x00, 0x00}, // 1
352 | {0x00, 0x42, 0x62, 0x52, 0x4a, 0x46}, // 2
353 | {0x00, 0x88, 0x28, 0x38, 0xc0, 0x00}, // 3
354 | {0x00, 0x20, 0x50, 0x48, 0x48, 0xe0}, // 4
355 | {0xf0, 0x28, 0x28, 0xc8, 0x48, 0x00}, // 5
356 | {0x00, 0x38, 0x4c, 0x46, 0x26, 0x1a}, // 6
357 | {0x08, 0x88, 0x48, 0x28, 0x18, 0x08}, // 7
358 | {0x14, 0x2a, 0x46, 0x2a, 0x14, 0x00}, // 8
359 | {0x00, 0x30, 0x48, 0x48, 0xa8, 0x78}, // 9
360 | {0x00, 0x00, 0x48, 0x00, 0x00, 0x00}, // :
361 | {0x00, 0x00, 0x80, 0x68, 0x00, 0x00}, // ;
362 | {0x08, 0x14, 0x22, 0x41, 0x00, 0x00}, // <
363 | {0x00, 0x30, 0x30, 0x30, 0x30, 0x00}, // =
364 | {0x41, 0x22, 0x14, 0x08, 0x00, 0x00}, // >
365 | {0x00, 0x02, 0x52, 0x0a, 0x06, 0x00}, // ?
366 | {0x00, 0x38, 0x44, 0x42, 0xa2, 0xbc}, // @
367 | {0x20, 0x40, 0x62, 0x14, 0x12, 0x14}, // A
368 | {0x62, 0x7e, 0x4a, 0x4a, 0x34, 0x00}, // B
369 | {0x1c, 0x22, 0x42, 0x42, 0x42, 0x24}, // C
370 | {0x42, 0x7e, 0x42, 0x42, 0x24, 0x18}, // D
371 | {0x42, 0x7e, 0x4a, 0x4a, 0x42, 0x00}, // E
372 | {0x00, 0x42, 0x7e, 0x0a, 0x02, 0x00}, // F
373 | {0x1c, 0x22, 0x42, 0x52, 0xe4, 0x00}, // G
374 | {0x00, 0x42, 0x7e, 0x08, 0x7e, 0x42}, // H
375 | {0x00, 0x42, 0x7e, 0x42, 0x00, 0x00}, // I
376 | {0x02, 0x82, 0x7e, 0x02, 0x00, 0x00}, // J
377 | {0x00, 0x42, 0x7e, 0x08, 0x08, 0x16}, // K
378 | {0x00, 0x42, 0x7e, 0x40, 0x60, 0x00}, // L
379 | {0x00, 0x7e, 0x44, 0x08, 0x10, 0x08}, // M
380 | {0x00, 0x7e, 0x42, 0x04, 0x08, 0x08}, // N
381 | {0x7e, 0x24, 0x42, 0x42, 0x24, 0x18}, // O
382 | {0x02, 0x7e, 0x52, 0x12, 0x0c, 0x00}, // P
383 | {0x18, 0x24, 0x42, 0x42, 0xa4, 0x18}, // Q
384 | {0x42, 0x7e, 0x46, 0x0e, 0x16, 0x20}, // R
385 | {0xf3, 0xc6, 0x46, 0x4a, 0x37, 0x00}, // S
386 | {0x02, 0x02, 0x7e, 0x02, 0x02, 0x00}, // T
387 | {0x00, 0x02, 0x3e, 0x40, 0x3e, 0x02}, // U
388 | {0x02, 0x1e, 0x20, 0x40, 0x20, 0x12}, // V
389 | {0x02, 0x0e, 0x20, 0x40, 0x22, 0x1e}, // W
390 | {0x42, 0x66, 0x1a, 0x1e, 0x66, 0x42}, // X
391 | {0x02, 0x0a, 0x50, 0x60, 0x50, 0x0a}, // Y
392 | {0x02, 0x42, 0x62, 0x4a, 0x42, 0x20}, // Z
393 | {0x00, 0x00, 0xfe, 0x82, 0x00, 0x00}, // [
394 | {0x00, 0xfe, 0x00, 0x00, 0x00, 0x00}, // "\"
395 | {0x00, 0x82, 0xfe, 0x00, 0x00, 0x00}, // ]
396 | {0x00, 0x1c, 0x06, 0x18, 0x00, 0x00}, // ^
397 | {0x80, 0x80, 0x80, 0x80, 0x80, 0x00}, // _
398 | {0x00, 0x00, 0x02, 0x00, 0x00, 0x00}, // `
399 | {0x28, 0x58, 0x58, 0x78, 0x40, 0x00}, // a
400 | {0x40, 0x3f, 0x48, 0x48, 0x38, 0x00}, // b
401 | {0x30, 0x48, 0x48, 0x30, 0x00, 0x00}, // c
402 | {0x38, 0x48, 0x48, 0x3f, 0x40, 0x00}, // d
403 | {0x30, 0x68, 0x68, 0x30, 0x00, 0x00}, // e
404 | {0x48, 0x7f, 0x09, 0x02, 0x00, 0x00}, // f
405 | {0x98, 0x68, 0x68, 0x58, 0x84, 0x00}, // g
406 | {0x40, 0x7f, 0x08, 0x48, 0x78, 0x40}, // h
407 | {0x00, 0x78, 0x40, 0x00, 0x00, 0x00}, // i
408 | {0x08, 0xfa, 0x08, 0x00, 0x00, 0x00}, // j
409 | {0x40, 0x7f, 0x08, 0x14, 0x28, 0x48}, // k
410 | {0x7e, 0x40, 0x00, 0x00, 0x00, 0x00}, // l
411 | {0x48, 0x78, 0x48, 0x78, 0x48, 0x78}, // m
412 | {0x48, 0x78, 0x08, 0x48, 0x78, 0x40}, // n
413 | {0x30, 0x48, 0x48, 0x30, 0x00, 0x00}, // o
414 | {0x08, 0xf0, 0x48, 0x48, 0x30, 0x00}, // p
415 | {0x30, 0x48, 0x48, 0xf0, 0x08, 0x00}, // q
416 | {0x40, 0x78, 0x00, 0x08, 0x00, 0x00}, // r
417 | {0x30, 0x68, 0x68, 0x10, 0x00, 0x00}, // s
418 | {0x08, 0x3e, 0x48, 0x48, 0x20, 0x00}, // t
419 | {0x08, 0x78, 0x38, 0x48, 0x00, 0x00}, // u
420 | {0x18, 0x40, 0x20, 0x18, 0x08, 0x00}, // v
421 | {0x38, 0x40, 0x38, 0x40, 0x38, 0x40}, // w
422 | {0x48, 0x28, 0x10, 0x28, 0x48, 0x00}, // x
423 | {0x08, 0x38, 0x48, 0xf8, 0x00, 0x00}, // y
424 | {0x48, 0x68, 0x58, 0x48, 0x00, 0x00}, // z
425 | {0x00, 0x00, 0x10, 0x6c, 0x82, 0x00}, // {
426 | {0x00, 0x00, 0x7e, 0x00, 0x00, 0x00}, // |
427 | {0x00, 0x00, 0x82, 0x6c, 0x10, 0x00}, // }
428 | {0x00, 0x20, 0x10, 0x20, 0x10, 0x00}, // ~
429 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
430 | };
431 |
432 | public static char[][] fontBMplain = {
433 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
434 | {0x2e, 0x00, 0x00, 0x00, 0x00, 0x00}, // !
435 | {0x03, 0x00, 0x03, 0x00, 0x00, 0x00}, // "
436 | {0x0a, 0x1f, 0x0a, 0x1f, 0x0a, 0x00}, // #
437 | {0x2e, 0x2a, 0x6b, 0x2a, 0x3a, 0x00}, // $
438 | {0x0e, 0x2a, 0x1e, 0x08, 0x3c, 0x2a}, // %
439 | {0x3e, 0x2a, 0x2a, 0x22, 0x38, 0x08}, // &
440 | {0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
441 | {0x1c, 0x22, 0x00, 0x00, 0x00, 0x00}, // (
442 | {0x22, 0x1c, 0x00, 0x00, 0x00, 0x00}, // )
443 | {0x15, 0x0e, 0x04, 0x0e, 0x15, 0x00}, // *
444 | {0x08, 0x08, 0x3e, 0x08, 0x08, 0x00}, // +
445 | {0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, // ,
446 | {0x08, 0x08, 0x08, 0x08, 0x08, 0x00}, // -
447 | {0x20, 0x00, 0x00, 0x00, 0x00, 0x00}, // .
448 | {0x20, 0x10, 0x08, 0x04, 0x02, 0x00}, // /
449 | {0x3e, 0x22, 0x2a, 0x22, 0x3e, 0x00}, // 0
450 | {0x04, 0x3e, 0x00, 0x00, 0x00, 0x00}, // 1
451 | {0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00}, // 2
452 | {0x2a, 0x2a, 0x2a, 0x2a, 0x3e, 0x00}, // 3
453 | {0x0e, 0x08, 0x08, 0x08, 0x3e, 0x00}, // 4
454 | {0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00}, // 5
455 | {0x3e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00}, // 6
456 | {0x02, 0x02, 0x02, 0x02, 0x3e, 0x00}, // 7
457 | {0x3e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00}, // 8
458 | {0x2e, 0x2a, 0x2a, 0x2a, 0x3e, 0x00}, // 9
459 | {0x14, 0x00, 0x00, 0x00, 0x00, 0x00}, // :
460 | {0x34, 0x00, 0x00, 0x00, 0x00, 0x00}, // ;
461 | {0x08, 0x14, 0x22, 0x00, 0x00, 0x00}, // <
462 | {0x14, 0x14, 0x14, 0x14, 0x14, 0x00}, // =
463 | {0x22, 0x14, 0x08, 0x00, 0x00, 0x00}, // >
464 | {0x06, 0x02, 0x2a, 0x0a, 0x0e, 0x00}, // ?
465 | {0x3e, 0x02, 0x3a, 0x2a, 0x3e, 0x00}, // @
466 | {0x3e, 0x12, 0x12, 0x12, 0x3e, 0x00}, // A
467 | {0x3e, 0x2a, 0x2a, 0x2a, 0x36, 0x00}, // B
468 | {0x3e, 0x22, 0x22, 0x22, 0x22, 0x00}, // C
469 | {0x3e, 0x22, 0x22, 0x22, 0x1c, 0x00}, // D
470 | {0x3e, 0x2a, 0x2a, 0x2a, 0x22, 0x00}, // E
471 | {0x3e, 0x0a, 0x0a, 0x0a, 0x02, 0x00}, // F
472 | {0x3e, 0x22, 0x2a, 0x2a, 0x3a, 0x00}, // G
473 | {0x3e, 0x08, 0x08, 0x08, 0x3e, 0x00}, // H
474 | {0x22, 0x3e, 0x22, 0x00, 0x00, 0x00}, // I
475 | {0x38, 0x20, 0x20, 0x20, 0x3e, 0x00}, // J
476 | {0x3e, 0x08, 0x08, 0x14, 0x22, 0x00}, // K
477 | {0x3e, 0x20, 0x20, 0x20, 0x20, 0x00}, // L
478 | {0x3e, 0x04, 0x38, 0x04, 0x3e, 0x00}, // M
479 | {0x3e, 0x04, 0x08, 0x10, 0x3e, 0x00}, // N
480 | {0x3e, 0x22, 0x22, 0x22, 0x3e, 0x00}, // O
481 | {0x3e, 0x0a, 0x0a, 0x0a, 0x0e, 0x00}, // P
482 | {0x3e, 0x22, 0x72, 0x22, 0x3e, 0x00}, // Q
483 | {0x3e, 0x0a, 0x0a, 0x1a, 0x2e, 0x00}, // R
484 | {0x2e, 0x2a, 0x2a, 0x2a, 0x3a, 0x00}, // S
485 | {0x02, 0x02, 0x3e, 0x02, 0x02, 0x00}, // T
486 | {0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00}, // U
487 | {0x0e, 0x10, 0x20, 0x10, 0x0e, 0x00}, // V
488 | {0x3e, 0x10, 0x0e, 0x10, 0x3e, 0x00}, // W
489 | {0x22, 0x14, 0x08, 0x14, 0x22, 0x00}, // X
490 | {0x02, 0x04, 0x38, 0x04, 0x02, 0x00}, // Y
491 | {0x3a, 0x2a, 0x2a, 0x2a, 0x2e, 0x00}, // Z
492 | {0x3e, 0x22, 0x00, 0x00, 0x00, 0x00}, // [
493 | {0x3f, 0x21, 0x3f, 0x00, 0x00, 0x00}, // "\"
494 | {0x22, 0x3e, 0x00, 0x00, 0x00, 0x00}, // ]
495 | {0x0c, 0x1e, 0x3c, 0x1e, 0x0c, 0x00}, // ^
496 | {0x20, 0x20, 0x20, 0x20, 0x20, 0x00}, // _
497 | {0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x00}, // `
498 | {0x3c, 0x24, 0x24, 0x24, 0x3c, 0x20}, // a
499 | {0x3e, 0x24, 0x24, 0x24, 0x3c, 0x00}, // b
500 | {0x3c, 0x24, 0x24, 0x24, 0x24, 0x00}, // c
501 | {0x3c, 0x24, 0x24, 0x24, 0x3e, 0x00}, // d
502 | {0x3c, 0x24, 0x34, 0x2c, 0x24, 0x00}, // e
503 | {0x08, 0x3e, 0x0a, 0x0a, 0x00, 0x00}, // f
504 | {0x1c, 0x54, 0x54, 0x54, 0x7c, 0x00}, // g
505 | {0x3e, 0x04, 0x04, 0x04, 0x3c, 0x00}, // h
506 | {0x3a, 0x00, 0x00, 0x00, 0x00, 0x00}, // i
507 | {0x7a, 0x00, 0x00, 0x00, 0x00, 0x00}, // j
508 | {0x3e, 0x08, 0x14, 0x22, 0x00, 0x00}, // k
509 | {0x02, 0x3e, 0x00, 0x00, 0x00, 0x00}, // l
510 | {0x3c, 0x04, 0x3c, 0x04, 0x3c, 0x00}, // m
511 | {0x3c, 0x04, 0x04, 0x04, 0x3c, 0x00}, // n
512 | {0x3c, 0x24, 0x24, 0x24, 0x3c, 0x00}, // o
513 | {0x7c, 0x24, 0x24, 0x24, 0x3c, 0x00}, // p
514 | {0x3c, 0x24, 0x24, 0x24, 0x7c, 0x00}, // q
515 | {0x3c, 0x04, 0x04, 0x04, 0x00, 0x00}, // r
516 | {0x24, 0x2c, 0x34, 0x24, 0x00, 0x00}, // s
517 | {0x04, 0x3e, 0x24, 0x24, 0x00, 0x00}, // t
518 | {0x3c, 0x20, 0x20, 0x20, 0x3c, 0x00}, // u
519 | {0x0c, 0x10, 0x20, 0x10, 0x0c, 0x00}, // v
520 | {0x3c, 0x20, 0x3c, 0x20, 0x3c, 0x00}, // w
521 | {0x24, 0x24, 0x18, 0x24, 0x24, 0x00}, // x
522 | {0x1c, 0x50, 0x50, 0x50, 0x7c, 0x00}, // y
523 | {0x24, 0x34, 0x2c, 0x24, 0x00, 0x00}, // z
524 | {0x08, 0x3e, 0x22, 0x00, 0x00, 0x00}, // {
525 | {0x1c, 0x22, 0x22, 0x22, 0x1c, 0x00}, // |
526 | {0x22, 0x3e, 0x08, 0x00, 0x00, 0x00}, // }
527 | {0x01, 0x01, 0x01, 0x00, 0x00, 0x00}, // ~
528 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
529 | };
530 |
531 | public static char[][] fontCrackers = {
532 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
533 | {0x5e, 0x06, 0x06, 0x00, 0x00, 0x00}, // !
534 | {0x1e, 0x00, 0x00, 0x1e, 0x00, 0x00}, // "
535 | {0x20, 0x7c, 0x38, 0x38, 0x7c, 0x08}, // #
536 | {0x48, 0xfe, 0x64, 0x64, 0x00, 0x00}, // $
537 | {0x64, 0x60, 0x60, 0x18, 0x0c, 0x0c}, // %
538 | {0x74, 0x4a, 0x4a, 0x7e, 0x48, 0x00}, // &
539 | {0x1e, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
540 | {0x3c, 0x7e, 0x7e, 0x42, 0x00, 0x00}, // (
541 | {0x42, 0x7e, 0x7e, 0x3c, 0x00, 0x00}, // )
542 | {0x04, 0x0c, 0x04, 0x06, 0x0c, 0x04}, // *
543 | {0x10, 0x3c, 0x3c, 0x3c, 0x10, 0x00}, // +
544 | {0x00, 0x60, 0xe0, 0x00, 0x00, 0x00}, // ,
545 | {0x08, 0x08, 0x08, 0x00, 0x00, 0x00}, // -
546 | {0x60, 0x60, 0x60, 0x00, 0x00, 0x00}, // .
547 | {0x60, 0x78, 0x78, 0x1e, 0x06, 0x00}, // /
548 | {0x3c, 0x3c, 0x7e, 0x42, 0x7e, 0x7e}, // 0
549 | {0x04, 0x7e, 0x7e, 0x7e, 0x00, 0x00}, // 1
550 | {0x76, 0x7a, 0x7e, 0x7e, 0x4c, 0x00}, // 2
551 | {0x4a, 0x7e, 0x7e, 0x7c, 0x00, 0x00}, // 3
552 | {0x0e, 0x08, 0x7e, 0x7e, 0x7e, 0x00}, // 4
553 | {0x4e, 0x4e, 0x4e, 0x7a, 0x1a, 0x00}, // 5
554 | {0x3c, 0x7e, 0x7e, 0x4a, 0x7a, 0x00}, // 6
555 | {0x02, 0x02, 0x0a, 0x7e, 0x7e, 0x7e}, // 7
556 | {0x7e, 0x7e, 0x7e, 0x4a, 0x7e, 0x00}, // 8
557 | {0x0c, 0x4a, 0x7e, 0x7e, 0x3c, 0x00}, // 9
558 | {0x66, 0x66, 0x66, 0x00, 0x00, 0x00}, // :
559 | {0x66, 0xe6, 0x00, 0x00, 0x00, 0x00}, // ;
560 | {0x08, 0x3c, 0x7e, 0x7e, 0x62, 0x00}, // <
561 | {0x14, 0x14, 0x14, 0x00, 0x00, 0x00}, // =
562 | {0x62, 0x7e, 0x7e, 0x3c, 0x08, 0x00}, // >
563 | {0x02, 0x4a, 0x0e, 0x0e, 0x0c, 0x00}, // ?
564 | {0x3c, 0x7e, 0x7e, 0x4a, 0x72, 0x30}, // @
565 | {0x7a, 0x4a, 0x7e, 0x7e, 0x7c, 0x00}, // A
566 | {0x7e, 0x7e, 0x7e, 0x4a, 0x24, 0x00}, // B
567 | {0x3c, 0x7e, 0x7e, 0x7e, 0x46, 0x00}, // C
568 | {0x7e, 0x7e, 0x7e, 0x62, 0x3c, 0x00}, // D
569 | {0x7e, 0x7e, 0x7e, 0x4a, 0x00, 0x00}, // E
570 | {0x7e, 0x7e, 0x7e, 0x0a, 0x00, 0x00}, // F
571 | {0x3c, 0x7e, 0x7e, 0x42, 0x62, 0x00}, // G
572 | {0x7e, 0x7e, 0x7e, 0x18, 0x7e, 0x00}, // H
573 | {0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00}, // I
574 | {0x40, 0x7e, 0x7e, 0x7e, 0x00, 0x00}, // J
575 | {0x7e, 0x7e, 0x7e, 0x3c, 0x66, 0x00}, // K
576 | {0x7e, 0x7e, 0x7e, 0x40, 0x00, 0x00}, // L
577 | {0x7e, 0x3e, 0x3e, 0x7c, 0x3e, 0x3e}, // M
578 | {0x7e, 0x3e, 0x7e, 0x7c, 0x7e, 0x00}, // N
579 | {0x3c, 0x3c, 0x7e, 0x62, 0x7e, 0x7e}, // O
580 | {0x7e, 0x7e, 0x7e, 0x22, 0x0c, 0x00}, // P
581 | {0x3c, 0x7e, 0x7e, 0x62, 0x7e, 0x7c}, // Q
582 | {0x7e, 0x7e, 0x7e, 0x0a, 0x64, 0x00}, // R
583 | {0x4c, 0x4e, 0x4e, 0x7a, 0x1a, 0x00}, // S
584 | {0x02, 0x7e, 0x7e, 0x7e, 0x02, 0x00}, // T
585 | {0x7e, 0x60, 0x7e, 0x7e, 0x7e, 0x00}, // U
586 | {0x3e, 0x60, 0x7e, 0x7e, 0x3e, 0x00}, // V
587 | {0x7e, 0x7c, 0x7c, 0x3e, 0x7c, 0x7c}, // W
588 | {0x46, 0x7e, 0x08, 0x7e, 0x62, 0x62}, // X
589 | {0x5e, 0x5e, 0x5e, 0x70, 0x3e, 0x00}, // Y
590 | {0x66, 0x7a, 0x7a, 0x5e, 0x66, 0x00}, // Z
591 | {0x7e, 0x7e, 0x7e, 0x42, 0x00, 0x00}, // [
592 | {0x06, 0x1e, 0x1e, 0x78, 0x60, 0x00}, // "\"
593 | {0x42, 0x7e, 0x7e, 0x7e, 0x00, 0x00}, // ]
594 | {0x0c, 0x06, 0x0c, 0x00, 0x00, 0x00}, // ^
595 | {0x40, 0x40, 0x40, 0x40, 0x40, 0x00}, // _
596 | {0x02, 0x06, 0x06, 0x04, 0x00, 0x00}, // `
597 | {0x78, 0x24, 0x7c, 0x7c, 0x78, 0x00}, // a
598 | {0x7c, 0x7c, 0x7c, 0x48, 0x20, 0x00}, // b
599 | {0x18, 0x7c, 0x7c, 0x7c, 0x4c, 0x00}, // c
600 | {0x20, 0x48, 0x7c, 0x7c, 0x7c, 0x00}, // d
601 | {0x18, 0x7c, 0x7c, 0x74, 0x4c, 0x00}, // e
602 | {0x78, 0x7c, 0x7c, 0x24, 0x00, 0x00}, // f
603 | {0x18, 0x7c, 0x7c, 0x44, 0x74, 0x00}, // g
604 | {0x7c, 0x7c, 0x7c, 0x08, 0x60, 0x00}, // h
605 | {0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00}, // i
606 | {0x40, 0x7c, 0x7c, 0x7c, 0x00, 0x00}, // j
607 | {0x7c, 0x7c, 0x7c, 0x20, 0x48, 0x00}, // k
608 | {0x7c, 0x7c, 0x7c, 0x40, 0x00, 0x00}, // l
609 | {0x7c, 0x3c, 0x3c, 0x78, 0x3c, 0x3c}, // m
610 | {0x7c, 0x7c, 0x7c, 0x04, 0x78, 0x00}, // n
611 | {0x18, 0x18, 0x7c, 0x44, 0x7c, 0x7c}, // o
612 | {0x7c, 0x7c, 0x7c, 0x24, 0x08, 0x00}, // p
613 | {0x18, 0x18, 0x7c, 0x44, 0x7c, 0x7c}, // q
614 | {0x7c, 0x7c, 0x7c, 0x04, 0x00, 0x00}, // r
615 | {0x5c, 0x7c, 0x7c, 0x74, 0x00, 0x00}, // s
616 | {0x08, 0x7c, 0x7c, 0x7c, 0x48, 0x00}, // t
617 | {0x7c, 0x60, 0x7c, 0x7c, 0x7c, 0x00}, // u
618 | {0x3c, 0x60, 0x7c, 0x7c, 0x3c, 0x00}, // v
619 | {0x7c, 0x78, 0x78, 0x3c, 0x78, 0x78}, // w
620 | {0x4c, 0x3c, 0x3c, 0x78, 0x64, 0x00}, // x
621 | {0x4c, 0x4c, 0x4c, 0x78, 0x3c, 0x00}, // y
622 | {0x5c, 0x74, 0x44, 0x5c, 0x74, 0x00}, // z
623 | {0x24, 0x7e, 0x42, 0x42, 0x00, 0x00}, // {
624 | {0x7e, 0x00, 0x00, 0x00, 0x00, 0x00}, // |
625 | {0x42, 0x7e, 0x24, 0x00, 0x00, 0x00}, // }
626 | {0x04, 0x06, 0x06, 0x02, 0x04, 0x06}, // ~
627 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
628 | };
629 |
630 | public static char[][] fontSuperDig = {
631 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
632 | {0x58, 0x5c, 0x00, 0x00, 0x00, 0x00}, // !
633 | {0x00, 0x01, 0x00, 0x00, 0x01, 0x00}, // "
634 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // #
635 | {0x5c, 0xfe, 0x54, 0xfe, 0x74, 0x00}, // $
636 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // %
637 | {0x70, 0x5c, 0x54, 0x74, 0x7c, 0x50}, // &
638 | {0x00, 0x01, 0x00, 0x00, 0x00, 0x00}, // '
639 | {0x70, 0x7c, 0x44, 0x00, 0x00, 0x00}, // (
640 | {0x44, 0x7c, 0x70, 0x00, 0x00, 0x00}, // )
641 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // *
642 | {0x10, 0x10, 0x70, 0x7c, 0x10, 0x00}, // +
643 | {0x40, 0xc0, 0x00, 0x00, 0x00, 0x00}, // ,
644 | {0x10, 0x10, 0x10, 0x10, 0x00, 0x00}, // -
645 | {0x40, 0x40, 0x00, 0x00, 0x00, 0x00}, // .
646 | {0x70, 0x7c, 0x03, 0x00, 0x00, 0x00}, // /
647 | {0x7c, 0x44, 0x44, 0x44, 0x7c, 0x1c}, // 0
648 | {0x04, 0x04, 0x7c, 0x1c, 0x00, 0x00}, // 1
649 | {0x74, 0x74, 0x54, 0x54, 0x5c, 0x00}, // 2
650 | {0x44, 0x54, 0x54, 0x54, 0x7c, 0x70}, // 3
651 | {0x1c, 0x10, 0x10, 0x7c, 0x7c, 0x00}, // 4
652 | {0x5c, 0x5c, 0x54, 0x54, 0x74, 0x00}, // 5
653 | {0x70, 0x7c, 0x54, 0x54, 0x74, 0x00}, // 6
654 | {0x04, 0x14, 0x14, 0x14, 0x7c, 0x70}, // 7
655 | {0x70, 0x5c, 0x54, 0x74, 0x7c, 0x00}, // 8
656 | {0x5c, 0x54, 0x54, 0x54, 0x7c, 0x1c}, // 9
657 | {0x50, 0x50, 0x00, 0x00, 0x00, 0x00}, // :
658 | {0x50, 0xd0, 0x00, 0x00, 0x00, 0x00}, // ;
659 | {0x18, 0x18, 0x24, 0x42, 0x00, 0x00}, // <
660 | {0x28, 0x28, 0x28, 0x28, 0x00, 0x00}, // =
661 | {0x42, 0x24, 0x18, 0x18, 0x00, 0x00}, // >
662 | {0x04, 0x14, 0x54, 0x54, 0x1c, 0x1c}, // ?
663 | {0xf8, 0x04, 0x74, 0x74, 0x54, 0x54}, // @
664 | {0x70, 0x7c, 0x14, 0x14, 0x3c, 0x00}, // A
665 | {0x7c, 0x74, 0x54, 0x54, 0x7c, 0x00}, // B
666 | {0x70, 0x7c, 0x44, 0x44, 0x44, 0x44}, // C
667 | {0x70, 0x7c, 0x44, 0x44, 0x48, 0x70}, // D
668 | {0x70, 0x7c, 0x54, 0x54, 0x54, 0x44}, // E
669 | {0x70, 0x7c, 0x14, 0x14, 0x14, 0x04}, // F
670 | {0x70, 0x7c, 0x44, 0x44, 0x54, 0x74}, // G
671 | {0x70, 0x7c, 0x10, 0x10, 0x7c, 0x00}, // H
672 | {0x70, 0x7c, 0x00, 0x00, 0x00, 0x00}, // I
673 | {0x60, 0x40, 0x40, 0x40, 0x7c, 0x70}, // J
674 | {0x7c, 0x70, 0x10, 0x1c, 0x70, 0x00}, // K
675 | {0x70, 0x7c, 0x40, 0x40, 0x40, 0x60}, // L
676 | {0x70, 0x7c, 0x04, 0x04, 0x7c, 0x04}, // M
677 | {0x70, 0x7c, 0x04, 0x04, 0x04, 0x7c}, // N
678 | {0x70, 0x7c, 0x44, 0x44, 0x44, 0x7c}, // O
679 | {0x70, 0x7c, 0x24, 0x24, 0x3c, 0x00}, // P
680 | {0x7c, 0x44, 0x44, 0x44, 0x7c, 0x00}, // Q
681 | {0x7c, 0x74, 0x14, 0x14, 0x3c, 0x00}, // R
682 | {0x5c, 0x5c, 0x54, 0x54, 0x74, 0x00}, // S
683 | {0x04, 0x04, 0x7c, 0x74, 0x04, 0x00}, // T
684 | {0x70, 0x7c, 0x40, 0x40, 0x40, 0x7c}, // U
685 | {0x70, 0x7c, 0x40, 0x40, 0x20, 0x1c}, // V
686 | {0x70, 0x7c, 0x40, 0x40, 0x7c, 0x40}, // W
687 | {0x70, 0x7c, 0x10, 0x10, 0x3c, 0x00}, // X
688 | {0x1c, 0x10, 0x70, 0x70, 0x1c, 0x00}, // Y
689 | {0x74, 0x74, 0x54, 0x54, 0x5c, 0x00}, // Z
690 | {0xf0, 0xfe, 0x82, 0x00, 0x00, 0x00}, // [
691 | {0x03, 0x7c, 0x70, 0x00, 0x00, 0x00}, // "\"
692 | {0x82, 0xfe, 0xf0, 0x00, 0x00, 0x00}, // ]
693 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ^
694 | {0x40, 0x40, 0x40, 0x40, 0x00, 0x00}, // _
695 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // `
696 | {0x70, 0x7c, 0x14, 0x14, 0x3c, 0x00}, // a
697 | {0x7c, 0x74, 0x54, 0x54, 0x7c, 0x00}, // b
698 | {0x70, 0x7c, 0x44, 0x44, 0x44, 0x44}, // c
699 | {0x70, 0x7c, 0x44, 0x44, 0x48, 0x70}, // d
700 | {0x70, 0x7c, 0x54, 0x54, 0x54, 0x44}, // e
701 | {0x70, 0x7c, 0x14, 0x14, 0x14, 0x04}, // f
702 | {0x70, 0x7c, 0x44, 0x44, 0x54, 0x74}, // g
703 | {0x70, 0x7c, 0x10, 0x10, 0x7c, 0x00}, // h
704 | {0x70, 0x7c, 0x00, 0x00, 0x00, 0x00}, // i
705 | {0x60, 0x40, 0x40, 0x40, 0x7c, 0x70}, // j
706 | {0x7c, 0x70, 0x10, 0x1c, 0x70, 0x00}, // k
707 | {0x70, 0x7c, 0x40, 0x40, 0x40, 0x60}, // l
708 | {0x70, 0x7c, 0x04, 0x04, 0x7c, 0x04}, // m
709 | {0x70, 0x7c, 0x04, 0x04, 0x04, 0x7c}, // n
710 | {0x70, 0x7c, 0x44, 0x44, 0x44, 0x7c}, // o
711 | {0x70, 0x7c, 0x24, 0x24, 0x3c, 0x00}, // p
712 | {0x7c, 0x44, 0x44, 0x44, 0x7c, 0x00}, // q
713 | {0x7c, 0x74, 0x14, 0x14, 0x3c, 0x00}, // r
714 | {0x5c, 0x5c, 0x54, 0x54, 0x74, 0x00}, // s
715 | {0x04, 0x04, 0x7c, 0x74, 0x04, 0x00}, // t
716 | {0x70, 0x7c, 0x40, 0x40, 0x40, 0x7c}, // u
717 | {0x70, 0x7c, 0x40, 0x40, 0x20, 0x1c}, // v
718 | {0x70, 0x7c, 0x40, 0x40, 0x7c, 0x40}, // w
719 | {0x70, 0x7c, 0x10, 0x10, 0x3c, 0x00}, // x
720 | {0x1c, 0x10, 0x70, 0x70, 0x1c, 0x00}, // y
721 | {0x74, 0x74, 0x54, 0x54, 0x5c, 0x00}, // z
722 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // {
723 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // |
724 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // }
725 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ~
726 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
727 | };
728 |
729 | public static char[][] fontZxpix = {
730 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //
731 | {0x2f, 0x00, 0x00, 0x00, 0x00, 0x00}, // !
732 | {0x03, 0x00, 0x03, 0x00, 0x00, 0x00}, // "
733 | {0x12, 0x3f, 0x12, 0x12, 0x3f, 0x12}, // #
734 | {0x2e, 0x2a, 0x7f, 0x2a, 0x3a, 0x00}, // $
735 | {0x23, 0x13, 0x08, 0x04, 0x32, 0x31}, // %
736 | {0x10, 0x2a, 0x25, 0x2a, 0x10, 0x20}, // &
737 | {0x02, 0x01, 0x00, 0x00, 0x00, 0x00}, // '
738 | {0x1e, 0x21, 0x00, 0x00, 0x00, 0x00}, // (
739 | {0x21, 0x1e, 0x00, 0x00, 0x00, 0x00}, // )
740 | {0x08, 0x2a, 0x1c, 0x2a, 0x08, 0x08}, // *
741 | {0x08, 0x08, 0x3e, 0x08, 0x08, 0x08}, // +
742 | {0x80, 0x60, 0x00, 0x00, 0x00, 0x00}, // ,
743 | {0x08, 0x08, 0x08, 0x08, 0x08, 0x00}, // -
744 | {0x30, 0x30, 0x00, 0x00, 0x00, 0x00}, // .
745 | {0x20, 0x10, 0x08, 0x04, 0x02, 0x00}, // /
746 | {0x1e, 0x31, 0x29, 0x25, 0x23, 0x1e}, // 0
747 | {0x22, 0x21, 0x3f, 0x20, 0x20, 0x20}, // 1
748 | {0x32, 0x29, 0x29, 0x29, 0x29, 0x26}, // 2
749 | {0x12, 0x21, 0x21, 0x25, 0x25, 0x1a}, // 3
750 | {0x18, 0x14, 0x12, 0x3f, 0x10, 0x10}, // 4
751 | {0x17, 0x25, 0x25, 0x25, 0x25, 0x19}, // 5
752 | {0x1e, 0x25, 0x25, 0x25, 0x25, 0x18}, // 6
753 | {0x01, 0x01, 0x31, 0x09, 0x05, 0x03}, // 7
754 | {0x1a, 0x25, 0x25, 0x25, 0x25, 0x1a}, // 8
755 | {0x06, 0x29, 0x29, 0x29, 0x29, 0x1e}, // 9
756 | {0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, // :
757 | {0x80, 0x64, 0x00, 0x00, 0x00, 0x00}, // ;
758 | {0x08, 0x14, 0x22, 0x00, 0x00, 0x00}, // <
759 | {0x14, 0x14, 0x14, 0x14, 0x14, 0x00}, // =
760 | {0x22, 0x14, 0x08, 0x00, 0x00, 0x00}, // >
761 | {0x02, 0x01, 0x01, 0x29, 0x05, 0x02}, // ?
762 | {0x1e, 0x21, 0x2d, 0x2b, 0x2d, 0x0e}, // @
763 | {0x3e, 0x09, 0x09, 0x09, 0x09, 0x3e}, // A
764 | {0x3f, 0x25, 0x25, 0x25, 0x25, 0x1a}, // B
765 | {0x1e, 0x21, 0x21, 0x21, 0x21, 0x12}, // C
766 | {0x3f, 0x21, 0x21, 0x21, 0x12, 0x0c}, // D
767 | {0x3f, 0x25, 0x25, 0x25, 0x25, 0x21}, // E
768 | {0x3f, 0x05, 0x05, 0x05, 0x05, 0x01}, // F
769 | {0x1e, 0x21, 0x21, 0x21, 0x29, 0x1a}, // G
770 | {0x3f, 0x04, 0x04, 0x04, 0x04, 0x3f}, // H
771 | {0x21, 0x21, 0x3f, 0x21, 0x21, 0x21}, // I
772 | {0x10, 0x20, 0x20, 0x20, 0x20, 0x1f}, // J
773 | {0x3f, 0x04, 0x0c, 0x0a, 0x11, 0x20}, // K
774 | {0x3f, 0x20, 0x20, 0x20, 0x20, 0x20}, // L
775 | {0x3f, 0x02, 0x04, 0x04, 0x02, 0x3f}, // M
776 | {0x3f, 0x02, 0x04, 0x08, 0x10, 0x3f}, // N
777 | {0x1e, 0x21, 0x21, 0x21, 0x21, 0x1e}, // O
778 | {0x3f, 0x09, 0x09, 0x09, 0x09, 0x06}, // P
779 | {0x1e, 0x21, 0x29, 0x31, 0x21, 0x1e}, // Q
780 | {0x3f, 0x09, 0x09, 0x09, 0x19, 0x26}, // R
781 | {0x12, 0x25, 0x25, 0x25, 0x25, 0x18}, // S
782 | {0x01, 0x01, 0x01, 0x3f, 0x01, 0x01}, // T
783 | {0x1f, 0x20, 0x20, 0x20, 0x20, 0x1f}, // U
784 | {0x0f, 0x10, 0x20, 0x20, 0x10, 0x0f}, // V
785 | {0x1f, 0x20, 0x10, 0x10, 0x20, 0x1f}, // W
786 | {0x21, 0x12, 0x0c, 0x0c, 0x12, 0x21}, // X
787 | {0x01, 0x02, 0x0c, 0x38, 0x04, 0x02}, // Y
788 | {0x21, 0x31, 0x29, 0x25, 0x23, 0x21}, // Z
789 | {0x3f, 0x21, 0x00, 0x00, 0x00, 0x00}, // [
790 | {0x02, 0x04, 0x08, 0x10, 0x20, 0x00}, // "\"
791 | {0x21, 0x3f, 0x00, 0x00, 0x00, 0x00}, // ]
792 | {0x04, 0x02, 0x3f, 0x02, 0x04, 0x00}, // ^
793 | {0x40, 0x40, 0x40, 0x40, 0x40, 0x40}, // _
794 | {0x01, 0x02, 0x00, 0x00, 0x00, 0x00}, // `
795 | {0x10, 0x30, 0x2a, 0x2a, 0x3c, 0x00}, // a
796 | {0x3f, 0x24, 0x24, 0x24, 0x18, 0x00}, // b
797 | {0x0c, 0x14, 0x22, 0x22, 0x00, 0x00}, // c
798 | {0x18, 0x24, 0x24, 0x24, 0x3f, 0x00}, // d
799 | {0x1c, 0x2c, 0x2a, 0x2a, 0x24, 0x00}, // e
800 | {0x3e, 0x05, 0x01, 0x00, 0x00, 0x00}, // f
801 | {0x18, 0x28, 0xa4, 0xa4, 0x7c, 0x00}, // g
802 | {0x3f, 0x04, 0x04, 0x0c, 0x30, 0x00}, // h
803 | {0x24, 0x3d, 0x20, 0x00, 0x00, 0x00}, // i
804 | {0x20, 0x40, 0x40, 0x3d, 0x00, 0x00}, // j
805 | {0x3f, 0x0c, 0x12, 0x20, 0x00, 0x00}, // k
806 | {0x1f, 0x20, 0x20, 0x00, 0x00, 0x00}, // l
807 | {0x3e, 0x02, 0x3c, 0x02, 0x3c, 0x00}, // m
808 | {0x3e, 0x02, 0x02, 0x02, 0x3c, 0x00}, // n
809 | {0x0c, 0x14, 0x22, 0x32, 0x0c, 0x00}, // o
810 | {0xfc, 0x24, 0x24, 0x24, 0x18, 0x00}, // p
811 | {0x18, 0x24, 0x24, 0x24, 0xfc, 0x80}, // q
812 | {0x3c, 0x04, 0x02, 0x02, 0x00, 0x00}, // r
813 | {0x24, 0x2c, 0x2a, 0x2a, 0x10, 0x00}, // s
814 | {0x02, 0x1f, 0x22, 0x20, 0x00, 0x00}, // t
815 | {0x1e, 0x20, 0x20, 0x20, 0x1e, 0x00}, // u
816 | {0x06, 0x18, 0x20, 0x18, 0x06, 0x00}, // v
817 | {0x1e, 0x30, 0x1c, 0x30, 0x0e, 0x00}, // w
818 | {0x22, 0x14, 0x08, 0x14, 0x22, 0x00}, // x
819 | {0x0c, 0x10, 0xa0, 0xa0, 0x7c, 0x00}, // y
820 | {0x22, 0x32, 0x2a, 0x26, 0x22, 0x22}, // z
821 | {0x0c, 0x3f, 0x21, 0x00, 0x00, 0x00}, // {
822 | {0x3f, 0x00, 0x00, 0x00, 0x00, 0x00}, // |
823 | {0x21, 0x3f, 0x0c, 0x00, 0x00, 0x00}, // }
824 | {0x02, 0x01, 0x02, 0x01, 0x00, 0x00}, // ~
825 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
826 | };
827 |
828 | private static void setPexel(Ssd1306 ssd1306, int x, int y, boolean on) {
829 | if (x < 0 || y < 0 || x >= ssd1306.getLcdWidth() || y >= ssd1306.getLcdHeight()) {
830 | // Ignore the out of bound at this point
831 | return;
832 | }
833 | ssd1306.setPixel(x, y, on);
834 | }
835 |
836 | static void drawString(Ssd1306 ssd1306, int x, int y, String text, Fonts.Type type) {
837 | byte[] characters = text.getBytes();
838 |
839 | for (byte character : characters) {
840 | int code = (int) character;
841 | int index = code - 32;
842 |
843 | if (index >= 0 && index < 96) {
844 | char[] pixel = Fonts.font5x5[index];
845 |
846 | if (type == Fonts.Type.font5x5)
847 | pixel = Fonts.font5x5[index];
848 | else if (type == Fonts.Type.fontAcme5Outlines)
849 | pixel = Fonts.fontAcme5Outlines[index];
850 | else if (type == Fonts.Type.fontAztech)
851 | pixel = Fonts.fontAztech[index];
852 | else if (type == Fonts.Type.fontCrackers)
853 | pixel = Fonts.fontCrackers[index];
854 | else if (type == Fonts.Type.fontSuperDig)
855 | pixel = Fonts.fontSuperDig[index];
856 | else if (type == Fonts.Type.fontZxpix)
857 | pixel = Fonts.fontZxpix[index];
858 |
859 | // Draw pixels
860 | for (int j = 0; j < Fonts.CHAR_WIDTH; j++) {
861 | String binary = Integer.toBinaryString(pixel[j]);
862 | while (binary.length() < Fonts.CHAR_HEIGHT) {
863 | binary = "0" + binary;
864 | }
865 |
866 | // Reverse it
867 | binary = new StringBuilder(binary).reverse().toString();
868 |
869 | for (int i = 0; i < Fonts.CHAR_HEIGHT; i++) {
870 | if (binary.substring(i, i + 1).equals("1"))
871 | setPexel(ssd1306,(x + j), (y + i), true);
872 | else
873 | setPexel(ssd1306,(x + j), (y + i), false);
874 | }
875 | }
876 |
877 | x = x + Fonts.CHAR_WIDTH;
878 | }
879 | }
880 | }
881 | }
--------------------------------------------------------------------------------
/Robot/src/main/java/com/samgol/robot/lcd/RobotLcd.java:
--------------------------------------------------------------------------------
1 | package com.samgol.robot.lcd;
2 |
3 | import android.content.Context;
4 | import android.net.wifi.WifiManager;
5 | import android.os.Handler;
6 | import android.os.HandlerThread;
7 | import android.util.Log;
8 |
9 | import com.google.android.things.contrib.driver.ssd1306.Ssd1306;
10 |
11 | import java.io.IOException;
12 | import java.math.BigInteger;
13 | import java.net.InetAddress;
14 | import java.net.UnknownHostException;
15 | import java.nio.ByteOrder;
16 |
17 | import static android.content.Context.WIFI_SERVICE;
18 |
19 | /**
20 | * Created by x on 1/31/17.
21 | */
22 |
23 | public class RobotLcd implements AutoCloseable {
24 | private static final String TAG = RobotLcd.class.getSimpleName();
25 | private Handler mLcdHandler;
26 | private HandlerThread mLcdHandlerThread;
27 | private Ssd1306 mScreen;
28 | private Context context;
29 | private String cur_ip = " ";
30 |
31 | public RobotLcd(Context context, String i2cBusAddress) throws IOException {
32 | Log.d(TAG, "RobotLcd() called with: context, i2cBusAddress = [" + i2cBusAddress + "]");
33 | mLcdHandlerThread = new HandlerThread("Lcd thread");
34 | mLcdHandlerThread.start();
35 | mLcdHandler = new Handler(mLcdHandlerThread.getLooper());
36 | mScreen = new Ssd1306(i2cBusAddress);
37 | this.context = context.getApplicationContext();
38 |
39 | drawStringCentered("STARTED", Font.FONT_5X8, 10, true);
40 | try {
41 | mScreen.show();
42 | } catch (IOException e) {
43 | e.printStackTrace();
44 | }
45 | showWifiInfo();
46 | }
47 |
48 |
49 | @Override
50 | public void close() throws Exception {
51 | mLcdHandlerThread.quitSafely();
52 | mScreen.close();
53 | }
54 |
55 | private void showWifiInfo() {
56 | mLcdHandler.post(
57 | new Runnable() {
58 | @Override
59 | public void run() {
60 | String ip = wifiIpAddress(context);
61 |
62 | if (ip != null && !cur_ip.equalsIgnoreCase(ip)) {
63 | cur_ip = ip;
64 | Log.d(TAG, "run() called ip: " + ip);
65 | mScreen.clearPixels();
66 | drawStringCentered("ANDROID THINGS", Font.FONT_5X8, 0, true);
67 | drawStringCentered("ROBOT", Font.FONT_5X8, 10, true);
68 | // Fonts.drawString(mScreen, 0, 0, "Android Things", Fonts.Type.fontAcme5Outlines);
69 | // Fonts.drawString(mScreen, 0, 20, "ROBOT " + ip, Fonts.Type.fontAcme5Outlines);
70 | // drawString("ip: ", Font.FONT_5X8, 10, 30, true);
71 | // drawString(ip, Font.FONT_4X5, 35, 32, true);
72 | Fonts.drawString(mScreen, 10, 30, "IP: " + ip, Fonts.Type.font5x5);
73 | Fonts.drawString(mScreen, 25, 50, " :(){ :|:& };:", Fonts.Type.font5x5);
74 | // drawStringCentered(ip, Font.FONT_5X8, 40, true);
75 | try {
76 | mScreen.show();
77 | // mScreen.startScroll(0, 50, Ssd1306.ScrollMode.RightHorizontal);
78 | } catch (IOException e) {
79 | e.printStackTrace();
80 | }
81 | } else if (ip == null) {
82 | Log.d(TAG, "run() called ip is null");
83 | mScreen.clearPixels();
84 |
85 | drawStringCentered("ANDROID THINGS", Font.FONT_5X8, 0, true);
86 | drawStringCentered("ROBOT", Font.FONT_5X8, 10, true);
87 | drawStringCentered("no ip address", Font.FONT_5X8, 30, true);
88 | try {
89 | mScreen.show();
90 | } catch (IOException e) {
91 | e.printStackTrace();
92 | }
93 | }
94 | mLcdHandler.postDelayed(this, 10000);
95 | }
96 | });
97 | }
98 |
99 |
100 | private String wifiIpAddress(Context context) {
101 | WifiManager wifiManager = (WifiManager) context.getSystemService(WIFI_SERVICE);
102 | int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
103 |
104 | if (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) {
105 | ipAddress = Integer.reverseBytes(ipAddress);
106 | }
107 |
108 | byte[] ipByteArray = BigInteger.valueOf(ipAddress).toByteArray();
109 |
110 | String ipAddressString;
111 | try {
112 | ipAddressString = InetAddress.getByAddress(ipByteArray).getHostAddress();
113 | } catch (UnknownHostException ex) {
114 | Log.e(TAG, "Unable to get host address.");
115 | ipAddressString = null;
116 | }
117 |
118 | return ipAddressString;
119 | }
120 |
121 | private synchronized void drawString(String string, Font font, int x, int y, boolean on) {
122 | int posX = x;
123 | int posY = y;
124 | for (char c : string.toCharArray()) {
125 | if (c == '\n') {
126 | posY += font.getOutterHeight();
127 | posX = x;
128 | } else {
129 | if (posX >= 0 && posX + font.getWidth() < mScreen.getLcdWidth()
130 | && posY >= 0 && posY + font.getHeight() < mScreen.getLcdHeight()) {
131 | font.drawChar(mScreen, c, posX, posY, on);
132 | }
133 | posX += font.getOutterWidth();
134 | }
135 | }
136 | }
137 |
138 | private synchronized void drawStringCentered(String string, Font font, int y, boolean on) {
139 | final int strSizeX = string.length() * font.getOutterWidth();
140 | final int x = (mScreen.getLcdWidth() - strSizeX) / 2;
141 | drawString(string, font, x, y, on);
142 |
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/Robot/src/main/java/com/samgol/robot/ledrgb/LedRGB.java:
--------------------------------------------------------------------------------
1 | package com.samgol.robot.ledrgb;
2 |
3 | import android.util.Log;
4 |
5 | import com.google.android.things.pio.Gpio;
6 | import com.google.android.things.pio.PeripheralManagerService;
7 |
8 | import java.io.IOException;
9 |
10 | import static com.google.android.things.pio.Gpio.DIRECTION_OUT_INITIALLY_LOW;
11 |
12 | /**
13 | * Created by x on 1/31/17.
14 | */
15 |
16 | public class LedRGB implements AutoCloseable {
17 | private static final String TAG = LedRGB.class.getSimpleName();
18 | private Gpio mLedRed;
19 | private Gpio mLedGreen;
20 | private Gpio mLedBlue;
21 | private PeripheralManagerService service;
22 |
23 | public LedRGB(String gpioR, String gpioG, String gpioB, PeripheralManagerService service) throws IOException {
24 | this.service = service;
25 |
26 | mLedRed = service.openGpio(gpioR);
27 | mLedRed.setDirection(DIRECTION_OUT_INITIALLY_LOW);
28 | mLedGreen = service.openGpio(gpioG);
29 | mLedGreen.setDirection(DIRECTION_OUT_INITIALLY_LOW);
30 | mLedBlue = service.openGpio(gpioB);
31 | mLedBlue.setDirection(DIRECTION_OUT_INITIALLY_LOW);
32 | }
33 |
34 | public void turnRed(boolean on) {
35 | try {
36 | mLedRed.setValue(on);
37 | } catch (IOException e) {
38 | Log.e(TAG, "turnRed: ", e);
39 | }
40 | }
41 |
42 | public void turnBlue(boolean on) {
43 | try {
44 | mLedBlue.setValue(on);
45 | } catch (IOException e) {
46 | Log.e(TAG, "turnBlue: ", e);
47 | }
48 | }
49 |
50 | public void turnGreen(boolean on) {
51 | try {
52 | mLedGreen.setValue(on);
53 | } catch (IOException e) {
54 | Log.e(TAG, "turnGreen: ", e);
55 | }
56 | }
57 |
58 | public void turnAll(boolean on) {
59 | try {
60 | mLedRed.setValue(on);
61 | mLedGreen.setValue(on);
62 | mLedBlue.setValue(on);
63 | } catch (IOException e) {
64 | Log.e(TAG, "turnAll: ", e);
65 | }
66 | }
67 |
68 | @Override
69 | public void close() throws Exception {
70 | mLedRed.close();
71 | mLedBlue.close();
72 | mLedGreen.close();
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/Robot/src/main/java/com/samgol/robot/obstacle/Hcsr04.java:
--------------------------------------------------------------------------------
1 | package com.samgol.robot.obstacle;
2 |
3 |
4 | import com.google.android.things.pio.Gpio;
5 |
6 | import java.io.IOException;
7 |
8 | /**
9 | * DistanceMonitor class to monitor distance measured by sensor
10 | *
11 | * @author Rutger Claes