BOM-DAT/CONN-DAT/CONN-dat.md
... ...
@@ -33,7 +33,6 @@
33 33
- [[FPC-dat]]
34 34
35 35
36
-
37 36
- [[CONN-Banana-plug-dat]] - [[CONN-Alligator-clip-dat]] - [[PCG1012-dat]] - [[CONN-dat]]
38 37
39 38
Tech-dat/Interface-dat/HUB75-DAT/HUB75-DAT.md
... ...
@@ -58,6 +58,7 @@ The LATCH / STB pin on a HUB75 RGB matrix display is used to latch (store) the r
58 58
59 59
## customized connection
60 60
61
+- [[cable-ribbon-dat]]
61 62
62 63
you can ingnore the cables, and just focuse on the pin to pin, it wont match
63 64
Tech-dat/cable-dat/cable-dat.md
... ...
@@ -7,6 +7,10 @@
7 7
8 8
- [[PTO1021-dat]] - wire cutter tool
9 9
10
+- [[cable-ribbon-dat]]
11
+
12
+
13
+
10 14
## data cable
11 15
12 16
## Weight Comparison
Tech-dat/cable-dat/cable-ribbon-dat/2025-12-17-17-39-14.png
... ...
Binary files /dev/null and b/Tech-dat/cable-dat/cable-ribbon-dat/2025-12-17-17-39-14.png differ
Tech-dat/cable-dat/cable-ribbon-dat/2025-12-17-17-47-31.png
... ...
Binary files /dev/null and b/Tech-dat/cable-dat/cable-ribbon-dat/2025-12-17-17-47-31.png differ
Tech-dat/cable-dat/cable-ribbon-dat/cable-ribbon-dat.md
... ...
@@ -0,0 +1,24 @@
1
+
2
+# cable-ribbon-dat
3
+
4
+
5
+
6
+## 2-row 2*8 pins
7
+
8
+- [[hub75-dat]]
9
+
10
+made for same direction
11
+
12
+![](2025-12-17-17-39-14.png)
13
+
14
+
15
+## install methods
16
+
17
+![](2025-12-17-17-47-31.png)
18
+
19
+
20
+
21
+
22
+## ref
23
+
24
+- [[cable-dat]]
... ...
\ No newline at end of file
Tech-dat/waterproof-dat/waterproof-container-dat/2025-12-17-17-49-46.png
... ...
Binary files /dev/null and b/Tech-dat/waterproof-dat/waterproof-container-dat/2025-12-17-17-49-46.png differ
Tech-dat/waterproof-dat/waterproof-container-dat/waterproof-container-dat.md
... ...
@@ -16,6 +16,7 @@
16 16
17 17
![](2025-12-06-14-37-54.png)
18 18
19
+![](2025-12-17-17-49-46.png)
19 20
20 21
inside
21 22
code-dat/motor-driver-code-dat/PWM-motor-esp-webserver-ap-2.ino
... ...
@@ -19,18 +19,154 @@ ESP8266WebServer server(80);
19 19
// ===== HTML Web 控制界面 =====
20 20
const char html_page[] PROGMEM = R"rawliteral(
21 21
<!DOCTYPE html><html>
22
-<head><title>ESP8266 Motor Control</title></head>
22
+<head>
23
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
24
+<title>ESP8266 Motor Control</title>
25
+<style>
26
+body {
27
+ font-family: Arial, sans-serif;
28
+ max-width: 600px;
29
+ margin: 0 auto;
30
+ padding: 20px;
31
+ background-color: #f0f0f0;
32
+}
33
+h2 {
34
+ text-align: center;
35
+ color: #333;
36
+}
37
+.control-panel {
38
+ background: white;
39
+ padding: 20px;
40
+ border-radius: 10px;
41
+ box-shadow: 0 2px 10px rgba(0,0,0,0.1);
42
+}
43
+.section {
44
+ margin-bottom: 25px;
45
+}
46
+.section-title {
47
+ font-weight: bold;
48
+ margin-bottom: 10px;
49
+ font-size: 18px;
50
+ color: #555;
51
+}
52
+.speed-buttons {
53
+ display: grid;
54
+ grid-template-columns: repeat(6, 1fr);
55
+ gap: 8px;
56
+ margin-bottom: 10px;
57
+}
58
+.speed-btn {
59
+ padding: 15px 10px;
60
+ font-size: 16px;
61
+ font-weight: bold;
62
+ border: 2px solid #4CAF50;
63
+ background-color: white;
64
+ color: #4CAF50;
65
+ border-radius: 8px;
66
+ cursor: pointer;
67
+ transition: all 0.2s;
68
+}
69
+.speed-btn:active {
70
+ background-color: #4CAF50;
71
+ color: white;
72
+ transform: scale(0.95);
73
+}
74
+.dir-buttons {
75
+ display: grid;
76
+ grid-template-columns: 1fr 1fr;
77
+ gap: 10px;
78
+}
79
+.dir-btn {
80
+ padding: 20px;
81
+ font-size: 18px;
82
+ font-weight: bold;
83
+ border: none;
84
+ border-radius: 8px;
85
+ cursor: pointer;
86
+ transition: all 0.2s;
87
+}
88
+.forward-btn {
89
+ background-color: #2196F3;
90
+ color: white;
91
+}
92
+.reverse-btn {
93
+ background-color: #FF9800;
94
+ color: white;
95
+}
96
+.dir-btn:active {
97
+ transform: scale(0.95);
98
+ opacity: 0.8;
99
+}
100
+.stop-btn {
101
+ width: 100%;
102
+ padding: 20px;
103
+ font-size: 20px;
104
+ font-weight: bold;
105
+ background-color: #f44336;
106
+ color: white;
107
+ border: none;
108
+ border-radius: 8px;
109
+ cursor: pointer;
110
+ margin-top: 20px;
111
+}
112
+.stop-btn:active {
113
+ transform: scale(0.98);
114
+ opacity: 0.8;
115
+}
116
+</style>
117
+</head>
23 118
<body>
24 119
<h2>Motor Control</h2>
25
-<form action="/control">
26
-Speed: <input type="range" name="speed" min="0" max="1023"><br>
27
-Direction:
28
-<select name="dir">
29
- <option value="fw">Forward</option>
30
- <option value="rv">Reverse</option>
31
-</select><br>
32
-<input type="submit" value="Apply">
33
-</form>
120
+<div class="control-panel">
121
+ <div class="section">
122
+ <div class="section-title">Speed Control (0-10)</div>
123
+ <div class="speed-buttons">
124
+ <button class="speed-btn" onclick="setSpeed(0)">0</button>
125
+ <button class="speed-btn" onclick="setSpeed(1)">1</button>
126
+ <button class="speed-btn" onclick="setSpeed(2)">2</button>
127
+ <button class="speed-btn" onclick="setSpeed(3)">3</button>
128
+ <button class="speed-btn" onclick="setSpeed(4)">4</button>
129
+ <button class="speed-btn" onclick="setSpeed(5)">5</button>
130
+ <button class="speed-btn" onclick="setSpeed(6)">6</button>
131
+ <button class="speed-btn" onclick="setSpeed(7)">7</button>
132
+ <button class="speed-btn" onclick="setSpeed(8)">8</button>
133
+ <button class="speed-btn" onclick="setSpeed(9)">9</button>
134
+ <button class="speed-btn" onclick="setSpeed(10)">10</button>
135
+ </div>
136
+ </div>
137
+ <div class="section">
138
+ <div class="section-title">Direction Control</div>
139
+ <div class="dir-buttons">
140
+ <button class="dir-btn forward-btn" onclick="setDirection('fw')">Forward</button>
141
+ <button class="dir-btn reverse-btn" onclick="setDirection('rv')">Reverse</button>
142
+ </div>
143
+ </div>
144
+ <button class="stop-btn" onclick="stopMotor()">STOP</button>
145
+</div>
146
+<script>
147
+let currentSpeed = 0;
148
+let currentDir = 'fw';
149
+function setSpeed(speed) {
150
+ currentSpeed = speed;
151
+ sendControl();
152
+}
153
+function setDirection(dir) {
154
+ currentDir = dir;
155
+ sendControl();
156
+}
157
+function sendControl() {
158
+ let pwmValue = Math.round((currentSpeed / 10) * 1023);
159
+ fetch('/control?speed=' + pwmValue + '&dir=' + currentDir)
160
+ .then(response => response.text())
161
+ .catch(error => console.error('Error:', error));
162
+}
163
+function stopMotor() {
164
+ currentSpeed = 0;
165
+ fetch('/control?speed=0&dir=' + currentDir)
166
+ .then(response => response.text())
167
+ .catch(error => console.error('Error:', error));
168
+}
169
+</script>
34 170
</body></html>
35 171
)rawliteral";
36 172