-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
490 lines (244 loc) · 88.7 KB
/
atom.xml
File metadata and controls
490 lines (244 loc) · 88.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Lition的博客</title>
<subtitle>生活明朗万物可爱</subtitle>
<link href="https://blog.lition.love/atom.xml" rel="self"/>
<link href="https://blog.lition.love/"/>
<updated>2024-04-25T01:09:52.667Z</updated>
<id>https://blog.lition.love/</id>
<author>
<name>Lition</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>已经没事了</title>
<link href="https://blog.lition.love/posts/43415.html"/>
<id>https://blog.lition.love/posts/43415.html</id>
<published>2024-04-24T11:51:35.000Z</published>
<updated>2024-04-25T01:09:52.667Z</updated>
<content type="html"><![CDATA[<p>今天飞完飞机,收拾东西的时候,就感觉人生好像也就不过如此。</p><p>当时,风还在吹,我的生活也要继续了。</p>]]></content>
<summary type="html"><p>今天飞完飞机,收拾东西的时候,就感觉人生好像也就不过如此。</p>
<p>当时,风还在吹,我的生活也要继续了。</p>
</summary>
<category term="日常" scheme="https://blog.lition.love/tags/%E6%97%A5%E5%B8%B8/"/>
</entry>
<entry>
<title>ESP8266使用旋转编码器(二)</title>
<link href="https://blog.lition.love/posts/11071.html"/>
<id>https://blog.lition.love/posts/11071.html</id>
<published>2024-02-03T09:03:08.000Z</published>
<updated>2024-02-03T13:37:23.910Z</updated>
<content type="html"><![CDATA[<p>写完第一版的程序之后我发现按下按钮只能触发一次,按下之后电平就被拉低了,一直为LOW。</p><p><a href="https://imgse.com/i/pFQvOUJ"><img src="https://s11.ax1x.com/2024/02/03/pFQvOUJ.md.png" alt="pFQvOUJ.md.png"></a></p><p>按照上面的方法接入一个电阻之后,电平为LOW的时候用3v电压把电平拉回来。</p><p>同时我还接入了OLED显示屏显示旋转的值。</p><p><a href="https://imgse.com/i/pFQvvCR"><img src="https://s11.ax1x.com/2024/02/03/pFQvvCR.md.jpg" alt="pFQvvCR.md.jpg"></a></p><table><thead><tr><th align="center">开发板引脚</th><th align="center">元件引脚</th></tr></thead><tbody><tr><td align="center">D0</td><td align="center">编码器SW</td></tr><tr><td align="center">D0</td><td align="center">下拉电阻</td></tr><tr><td align="center">D1</td><td align="center">屏幕SCL</td></tr><tr><td align="center">D2</td><td align="center">屏幕SDA</td></tr><tr><td align="center">D5</td><td align="center">编码器CLK</td></tr><tr><td align="center">D6</td><td align="center">编码器DT</td></tr></tbody></table><p>这里把D3和D4空出来因为下拉这两个引脚会导致无法上传程序</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// Rotary Encoder Inputs</span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> CLK D5</span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> DT D6</span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> SW D0</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><Adafruit_GFX.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><Adafruit_SSD1306.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> SCREEN_WIDTH 128 <span class="comment">// OLED display width, in pixels</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> SCREEN_HEIGHT 32 <span class="comment">// OLED display height, in pixels</span></span></span><br><span class="line"></span><br><span class="line"><span class="comment">// Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);</span></span><br><span class="line">Adafruit_SSD1306 <span class="title function_">display</span><span class="params">(<span class="number">128</span>, <span class="number">64</span>, &Wire, <span class="number">-1</span>)</span>;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="type">int</span> counter = <span class="number">0</span>;</span><br><span class="line"><span class="type">int</span> currentStateCLK;</span><br><span class="line"><span class="type">int</span> lastStateCLK;</span><br><span class="line">String currentDir = <span class="string">""</span>;</span><br><span class="line"></span><br><span class="line"><span class="type">unsigned</span> <span class="type">long</span> lastButtonPress = <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">ShowText</span><span class="params">(String text)</span> {</span><br><span class="line"> display.clearDisplay();</span><br><span class="line"> display.setTextSize(<span class="number">1</span>); <span class="comment">// Draw 2X-scale text 2倍字体</span></span><br><span class="line"> display.setTextColor(SSD1306_WHITE);</span><br><span class="line"> display.setCursor(<span class="number">1</span>, <span class="number">1</span>); <span class="comment">//显示的坐标位置</span></span><br><span class="line"> display.println(text);</span><br><span class="line"> display.display(); <span class="comment">// Show text</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">ShowNum</span><span class="params">(<span class="type">int</span> num)</span> {</span><br><span class="line"> display.clearDisplay();</span><br><span class="line"> display.setTextSize(<span class="number">2</span>); <span class="comment">// Draw 2X-scale text 2倍字体</span></span><br><span class="line"> display.setTextColor(SSD1306_WHITE);</span><br><span class="line"> display.setCursor(<span class="number">10</span>, <span class="number">10</span>); <span class="comment">//显示的坐标位置</span></span><br><span class="line"> display.println(num);</span><br><span class="line"> display.display(); <span class="comment">// Show text</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">setup</span><span class="params">()</span> {</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Set encoder pins as inputs</span></span><br><span class="line"> pinMode(CLK, INPUT);</span><br><span class="line"> pinMode(DT, INPUT);</span><br><span class="line"> pinMode(SW, INPUT_PULLUP);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Setup Serial Monitor</span></span><br><span class="line"> Serial.begin(<span class="number">115200</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Read the initial state of CLK</span></span><br><span class="line"> lastStateCLK = digitalRead(CLK);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally</span></span><br><span class="line"> <span class="keyword">if</span> (!display.begin(SSD1306_SWITCHCAPVCC, <span class="number">0x3C</span>)) { <span class="comment">// Address 0x3C for 128x32</span></span><br><span class="line"> Serial.println(F(<span class="string">"SSD1306 allocation failed"</span>));</span><br><span class="line"> <span class="keyword">for</span> (;;)</span><br><span class="line"> ; <span class="comment">// Don't proceed, loop forever</span></span><br><span class="line"> }</span><br><span class="line"> Serial.println(<span class="string">"."</span>);</span><br><span class="line"> Serial.println(<span class="string">"."</span>);</span><br><span class="line"> Serial.println(<span class="string">"boot up complete"</span>);</span><br><span class="line"> <span class="comment">// 清空显示</span></span><br><span class="line"> ShowText(<span class="string">"standby...."</span>);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">loop</span><span class="params">()</span> {</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Read the current state of CLK</span></span><br><span class="line"> currentStateCLK = digitalRead(CLK);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// If last and current state of CLK are different, then pulse occurred</span></span><br><span class="line"> <span class="comment">// React to only 1 state change to avoid double count</span></span><br><span class="line"> <span class="keyword">if</span> (currentStateCLK != lastStateCLK && currentStateCLK == <span class="number">1</span>) {</span><br><span class="line"></span><br><span class="line"> <span class="comment">// If the DT state is different than the CLK state then</span></span><br><span class="line"> <span class="comment">// the encoder is rotating CCW so decrement</span></span><br><span class="line"> <span class="keyword">if</span> (digitalRead(DT) != currentStateCLK) {</span><br><span class="line"> counter--;</span><br><span class="line"> currentDir = <span class="string">"CCW"</span>;</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="comment">// Encoder is rotating CW so increment</span></span><br><span class="line"> counter++;</span><br><span class="line"> currentDir = <span class="string">"CW"</span>;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> Serial.print(<span class="string">"Direction: "</span>);</span><br><span class="line"> Serial.print(currentDir);</span><br><span class="line"> Serial.print(<span class="string">" | Counter: "</span>);</span><br><span class="line"> Serial.println(counter);</span><br><span class="line"> ShowNum(counter);</span><br><span class="line"> <span class="comment">// 清空显示</span></span><br><span class="line"> <span class="comment">// display.clearDisplay();</span></span><br><span class="line"> <span class="comment">// // 使更改的显示生效</span></span><br><span class="line"> display.display();</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Remember last CLK state</span></span><br><span class="line"> lastStateCLK = currentStateCLK;</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Read the button state</span></span><br><span class="line"> <span class="type">int</span> btnState = digitalRead(SW);</span><br><span class="line"> <span class="comment">// Serial.println(btnState);</span></span><br><span class="line"> <span class="comment">//If we detect LOW signal, button is pressed</span></span><br><span class="line"> <span class="keyword">if</span> (btnState == LOW) {</span><br><span class="line"> <span class="comment">//if 50ms have passed since last LOW pulse, it means that the</span></span><br><span class="line"> <span class="comment">//button has been pressed, released and pressed again</span></span><br><span class="line"> <span class="keyword">if</span> (millis() - lastButtonPress > <span class="number">50</span>) {</span><br><span class="line"> Serial.println(<span class="string">"Button pressed!"</span>);</span><br><span class="line"> counter = <span class="number">0</span>;</span><br><span class="line"> ShowNum(counter);</span><br><span class="line"> display.display();</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Remember last button press event</span></span><br><span class="line"> lastButtonPress = millis();</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Put in a slight delay to help debounce the reading</span></span><br><span class="line"> delay(<span class="number">1</span>);</span><br><span class="line">}</span><br><span class="line"></span><br></pre></td></tr></table></figure></div>]]></content>
<summary type="html"><p>写完第一版的程序之后我发现按下按钮只能触发一次,按下之后电平就被拉低了,一直为LOW。</p>
<p><a href="https://imgse.com/i/pFQvOUJ"><img src="https://s11.ax1x.com/2024/02/03/pFQvOU</summary>
<category term="ESP8266" scheme="https://blog.lition.love/tags/ESP8266/"/>
</entry>
<entry>
<title>ESP8266使用旋转编码器</title>
<link href="https://blog.lition.love/posts/50638.html"/>
<id>https://blog.lition.love/posts/50638.html</id>
<published>2024-02-01T14:49:47.000Z</published>
<updated>2024-02-01T14:53:40.375Z</updated>
<content type="html"><![CDATA[<p>旋转编码器从外观上来看很接近旋转电位器,但是旋转编码器没有终点,随便转多少圈。</p><p>我是淘宝上随便买了一个,一共5个端子,其中2个是电源,1个是按压开关,按下的状态为LOW,剩余两个端子是比较时序使用的。</p><p><a href="https://imgse.com/i/pFMj0v8"><img src="https://s11.ax1x.com/2024/02/01/pFMj0v8.md.jpg" alt="pFMj0v8.md.jpg"></a><br><a href="https://imgse.com/i/pFMjd8P"><img src="https://s11.ax1x.com/2024/02/01/pFMjd8P.md.jpg" alt="pFMjd8P.md.jpg"></a></p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// Rotary Encoder Inputs</span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> CLK D1</span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> DT D2</span></span><br><span class="line"><span class="meta">#<span class="keyword">define</span> SW D0</span></span><br><span class="line"></span><br><span class="line"><span class="type">int</span> counter = <span class="number">0</span>;</span><br><span class="line"><span class="type">int</span> currentStateCLK;</span><br><span class="line"><span class="type">int</span> lastStateCLK;</span><br><span class="line">String currentDir = <span class="string">""</span>;</span><br><span class="line"><span class="type">unsigned</span> <span class="type">long</span> lastButtonPress = <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">setup</span><span class="params">()</span> {</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Set encoder pins as inputs</span></span><br><span class="line"> pinMode(CLK, INPUT);</span><br><span class="line"> pinMode(DT, INPUT);</span><br><span class="line"> pinMode(SW, INPUT_PULLUP);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Setup Serial Monitor</span></span><br><span class="line"> Serial.begin(<span class="number">115200</span>);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Read the initial state of CLK</span></span><br><span class="line"> lastStateCLK = digitalRead(CLK);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="type">void</span> <span class="title function_">loop</span><span class="params">()</span> {</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Read the current state of CLK</span></span><br><span class="line"> currentStateCLK = digitalRead(CLK);</span><br><span class="line"></span><br><span class="line"> <span class="comment">// If last and current state of CLK are different, then pulse occurred</span></span><br><span class="line"> <span class="comment">// React to only 1 state change to avoid double count</span></span><br><span class="line"> <span class="keyword">if</span> (currentStateCLK != lastStateCLK && currentStateCLK == <span class="number">1</span>) {</span><br><span class="line"></span><br><span class="line"> <span class="comment">// If the DT state is different than the CLK state then</span></span><br><span class="line"> <span class="comment">// the encoder is rotating CCW so decrement</span></span><br><span class="line"> <span class="keyword">if</span> (digitalRead(DT) != currentStateCLK) {</span><br><span class="line"> counter--;</span><br><span class="line"> currentDir = <span class="string">"CCW"</span>;</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="comment">// Encoder is rotating CW so increment</span></span><br><span class="line"> counter++;</span><br><span class="line"> currentDir = <span class="string">"CW"</span>;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> Serial.print(<span class="string">"Direction: "</span>);</span><br><span class="line"> Serial.print(currentDir);</span><br><span class="line"> Serial.print(<span class="string">" | Counter: "</span>);</span><br><span class="line"> Serial.println(counter);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Remember last CLK state</span></span><br><span class="line"> lastStateCLK = currentStateCLK;</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Read the button state</span></span><br><span class="line"> <span class="type">int</span> btnState = digitalRead(SW);</span><br><span class="line"></span><br><span class="line"> <span class="comment">//If we detect LOW signal, button is pressed</span></span><br><span class="line"> <span class="keyword">if</span> (btnState == LOW) {</span><br><span class="line"> <span class="comment">//if 50ms have passed since last LOW pulse, it means that the</span></span><br><span class="line"> <span class="comment">//button has been pressed, released and pressed again</span></span><br><span class="line"> <span class="keyword">if</span> (millis() - lastButtonPress > <span class="number">50</span>) {</span><br><span class="line"> Serial.println(<span class="string">"Button pressed!"</span>);</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Remember last button press event</span></span><br><span class="line"> lastButtonPress = millis();</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// Put in a slight delay to help debounce the reading</span></span><br><span class="line"> delay(<span class="number">1</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure></div>]]></content>
<summary type="html"><p>旋转编码器从外观上来看很接近旋转电位器,但是旋转编码器没有终点,随便转多少圈。</p>
<p>我是淘宝上随便买了一个,一共5个端子,其中2个是电源,1个是按压开关,按下的状态为LOW,剩余两个端子是比较时序使用的。</p>
<p><a href="https://imgse</summary>
<category term="ESP8266" scheme="https://blog.lition.love/tags/ESP8266/"/>
</entry>
<entry>
<title>ts配置文件说明</title>
<link href="https://blog.lition.love/posts/55628.html"/>
<id>https://blog.lition.love/posts/55628.html</id>
<published>2024-01-28T07:51:43.000Z</published>
<updated>2024-02-01T14:49:24.535Z</updated>
<content type="html"><![CDATA[<p>最近在学习TypeScript,记录一下。</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="JSON"><figure class="iseeu highlight /json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"compilerOptions"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="comment">/* 访问 https://aka.ms/tsconfig.json 以阅读有关此文件的更多信息 */</span></span><br><span class="line"></span><br><span class="line"> </span><br><span class="line"> <span class="comment">/* 基本选项 */</span></span><br><span class="line"> <span class="attr">"incremental"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用增量编译 */</span></span><br><span class="line"> <span class="attr">"target"</span><span class="punctuation">:</span> <span class="string">"ESNEXT"</span><span class="punctuation">,</span> <span class="comment">/* 指定 ECMAScript 目标版本:'ES3'、'ES5'(默认)、'ES2015'、'ES2016'、'ES2017'、'ES2018'、'ES2019'、'ES2020' 或 'ESNEXT'。 */</span></span><br><span class="line"> <span class="attr">"module"</span><span class="punctuation">:</span> <span class="string">"commonjs"</span><span class="punctuation">,</span> <span class="comment">/* 指定模块代码生成:“none”、“commonjs”、“amd”、“system”、“umd”、“es2015”、“es2020”或“ESNext”。 */</span></span><br><span class="line"> <span class="attr">"lib"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span> <span class="comment">/* 指定要包含在编译中的库文件。 */</span></span><br><span class="line"> <span class="attr">"allowJs"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 允许编译 javascript 文件。 */</span></span><br><span class="line"> <span class="attr">"checkJs"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 报告 .js 文件中的错误。 */</span></span><br><span class="line"> <span class="attr">"jsx"</span><span class="punctuation">:</span> <span class="string">"preserve"</span><span class="punctuation">,</span> <span class="comment">/* 指定 JSX 代码生成:'preserve'、'react-native' 或 'react'。 */</span></span><br><span class="line"> <span class="attr">"declaration"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 生成相应的“.d.ts”文件。 */</span></span><br><span class="line"> <span class="attr">"declarationMap"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 为每个对应的“.d.ts”文件生成一个源映射。 */</span></span><br><span class="line"> <span class="attr">"sourceMap"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 生成相应的“.map”文件。 */</span></span><br><span class="line"> <span class="attr">"outFile"</span><span class="punctuation">:</span> <span class="string">"./"</span><span class="punctuation">,</span> <span class="comment">/* 连接输出到单个文件。 */</span></span><br><span class="line"> <span class="attr">"outDir"</span><span class="punctuation">:</span> <span class="string">"./"</span><span class="punctuation">,</span> <span class="comment">/* 将输出结构重定向到目录。 */</span></span><br><span class="line"> <span class="attr">"rootDir"</span><span class="punctuation">:</span> <span class="string">"./"</span><span class="punctuation">,</span> <span class="comment">/* 指定输入文件的根目录。用于通过 --outDir 控制输出目录结构。 */</span></span><br><span class="line"> <span class="attr">"composite"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用项目编译 */</span></span><br><span class="line"> <span class="attr">"tsBuildInfoFile"</span><span class="punctuation">:</span> <span class="string">"./"</span><span class="punctuation">,</span> <span class="comment">/* 指定文件存放增量编译信息 */</span></span><br><span class="line"> <span class="attr">"removeComments"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 不要向输出发出注释(删除除代码注释)。 */</span></span><br><span class="line"> <span class="attr">"noEmit"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 不发出输出(不生成编译后的文件)。 */</span></span><br><span class="line"> <span class="attr">"noEmitOnError"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 在输出js代码时,如果有错将不编译文件。 */</span></span><br><span class="line"> <span class="attr">"importHelpers"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 从 'tslib' 导入发射助手。 */</span></span><br><span class="line"> <span class="attr">"downlevelIteration"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 以“ES5”或“ES3”为目标时,为“for-of”、展开和解构中的迭代提供全面支持。 */</span></span><br><span class="line"> <span class="attr">"isolatedModules"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 将每个文件转换为一个单独的模块(类似于 'ts.transpileModule')。 */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 严格的类型检查选项 */</span></span><br><span class="line"> <span class="attr">"strict"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用所有严格的类型检查选项。 在开发中,建议将stricet这类选项都开启。 */</span></span><br><span class="line"> <span class="attr">"strictNullChecks"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用严格的空(undefined、null)检查,可以防止“未定义不是对象”。 建议开启*/</span></span><br><span class="line"> <span class="attr">"strictFunctionTypes"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用函数类型的严格检查。 */</span></span><br><span class="line"> <span class="attr">"strictBindCallApply"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 在函数上启用严格的“绑定”、“调用”、应用”方法。 */</span></span><br><span class="line"> <span class="attr">"strictPropertyInitialization"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用对类中属性初始化的严格检查。 */</span></span><br><span class="line"> <span class="attr">"noImplicitThis"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 使用隐含的“any”类型在“this”表达式上引发错误。 */</span></span><br><span class="line"> <span class="attr">"noImplicitAny"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 使用隐含的“any”类型在表达式和声明上引发错误(主要用于控制变量、参数是否必须知道它们的类型【类型检查】),如果是将JavaScript迁移到TypeScript时,可以关闭此项,但不建议这样做。 */</span></span><br><span class="line"> <span class="attr">"alwaysStrict"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 以严格模式解析并为每个源文件发出“使用严格”。 */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 额外检查 */</span></span><br><span class="line"> <span class="attr">"noUnusedLocals"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 报告未使用的本地人的错误。 */</span></span><br><span class="line"> <span class="attr">"noUnusedParameters"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 报告未使用参数的错误。 */</span></span><br><span class="line"> <span class="attr">"noImplicitReturns"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 不是函数中的所有代码路径都返回值时报告错误。 */</span></span><br><span class="line"> <span class="attr">"noFallthroughCasesInSwitch"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 在 switch 语句中报告失败情况的错误。 */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 模块分辨率选项 */</span></span><br><span class="line"> <span class="attr">"moduleResolution"</span><span class="punctuation">:</span> <span class="string">"node"</span><span class="punctuation">,</span> <span class="comment">/* 指定模块解析策略:'node' (Node.js) 或 'classic' (TypeScript pre-1.6)。 */</span></span><br><span class="line"> <span class="attr">"baseUrl"</span><span class="punctuation">:</span> <span class="string">"./"</span><span class="punctuation">,</span> <span class="comment">/* 解析非绝对模块名称的基目录。 */</span></span><br><span class="line"> <span class="attr">"paths"</span><span class="punctuation">:</span> <span class="punctuation">{</span><span class="punctuation">}</span><span class="punctuation">,</span> <span class="comment">/* 一系列将导入重新映射到相对于“baseUrl”的查找位置的条目。 */</span></span><br><span class="line"> <span class="attr">"rootDirs"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span> <span class="comment">/* 根文件夹列表,其组合内容代表运行时项目的结构。 */</span></span><br><span class="line"> <span class="attr">"typeRoots"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span> <span class="comment">/* 包含类型定义的文件夹列表。 */</span></span><br><span class="line"> <span class="attr">"types"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span> <span class="comment">/* 类型声明文件要包含在编译中。 */</span></span><br><span class="line"> <span class="attr">"allowSyntheticDefaultImports"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 允许从没有默认导出的模块中默认导入。 这不会影响代码发出,只是类型检查。 */</span></span><br><span class="line"> <span class="attr">"esModuleInterop"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 通过为所有导入创建命名空间对象,在 CommonJS 和 ES 模块之间启用发射互操作性。 暗示“allowSyntheticDefaultImports”。 */</span></span><br><span class="line"> <span class="attr">"preserveSymlinks"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 不解析符号链接的真实路径。 */</span></span><br><span class="line"> <span class="attr">"allowUmdGlobalAccess"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 允许从模块访问 UMD 全局变量。 */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 源映射选项 */</span></span><br><span class="line"> <span class="attr">"sourceRoot"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span> <span class="comment">/* 指定调试器应该定位 TypeScript 文件而不是源位置的位置。 */</span></span><br><span class="line"> <span class="attr">"mapRoot"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span> <span class="comment">/* 指定调试器应该定位映射文件而不是生成位置的位置。 */</span></span><br><span class="line"> <span class="attr">"inlineSourceMap"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 发出带有源映射的单个文件而不是单独的文件。 */</span></span><br><span class="line"> <span class="attr">"inlineSources"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 在单个文件中与源映射一起发出源; 需要设置“--inlineSourceMap”或“--sourceMap”。 */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 实验选项 */</span></span><br><span class="line"> <span class="attr">"experimentalDecorators"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 启用对 ES7 装饰器的实验性支持。 */</span></span><br><span class="line"> <span class="attr">"emitDecoratorMetadata"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 为装饰器的发射类型元数据启用实验性支持。 */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> <span class="comment">/* 高级选项 */</span></span><br><span class="line"> <span class="attr">"skipLibCheck"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">/* 跳过声明文件的类型检查。 */</span></span><br><span class="line"> <span class="attr">"forceConsistentCasingInFileNames"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span> <span class="comment">/* 禁止对同一文件的大小写不一致的引用。 */</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure></div>]]></content>
<summary type="html"><p>最近在学习TypeScript,记录一下。</p>
<div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" content</summary>
<category term="typescript" scheme="https://blog.lition.love/tags/typescript/"/>
</entry>
<entry>
<title>纵使结局不如意,相逢便是上上签</title>
<link href="https://blog.lition.love/posts/44847.html"/>
<id>https://blog.lition.love/posts/44847.html</id>
<published>2024-01-24T15:27:27.000Z</published>
<updated>2024-01-24T15:39:05.470Z</updated>
<content type="html"><![CDATA[<p>她让你知道了你有多么任性,有多么不思进取,有多么暴殄天物,她让你知道你原本可以更好的。只是你没有把握住,你没有好好珍惜条件,你没有达到你应该达到的高度。</p>]]></content>
<summary type="html"><p>她让你知道了你有多么任性,有多么不思进取,有多么暴殄天物,她让你知道你原本可以更好的。只是你没有把握住,你没有好好珍惜条件,你没有达到你应该达到的高度。</p>
</summary>
<category term="日常" scheme="https://blog.lition.love/tags/%E6%97%A5%E5%B8%B8/"/>
</entry>
<entry>
<title>释怀了</title>
<link href="https://blog.lition.love/posts/14157.html"/>
<id>https://blog.lition.love/posts/14157.html</id>
<published>2024-01-20T11:47:33.000Z</published>
<updated>2024-01-20T11:51:47.865Z</updated>
<content type="html"><![CDATA[<p>我爱的人早在18岁的时候就爱过我了。至于她25岁的时候是谁的妻子,30岁是谁的母亲,我都祝她幸福。</p><p><a href="https://imgse.com/i/pFEXXY4"><img src="https://s11.ax1x.com/2024/01/20/pFEXXY4.md.jpg" alt="pFEXXY4.md.jpg"></a></p>]]></content>
<summary type="html"><p>我爱的人早在18岁的时候就爱过我了。至于她25岁的时候是谁的妻子,30岁是谁的母亲,我都祝她幸福。</p>
<p><a href="https://imgse.com/i/pFEXXY4"><img src="https://s11.ax1x.com/2024/01/20/</summary>
<category term="日常" scheme="https://blog.lition.love/tags/%E6%97%A5%E5%B8%B8/"/>
</entry>
<entry>
<title>ESP8266针脚定义图</title>
<link href="https://blog.lition.love/posts/23983.html"/>
<id>https://blog.lition.love/posts/23983.html</id>
<published>2024-01-17T14:58:15.000Z</published>
<updated>2024-02-01T15:03:42.125Z</updated>
<content type="html"><![CDATA[<p>ESP8266针脚定义图</p><p><a href="https://imgse.com/i/pFMjDKS"><img src="https://s11.ax1x.com/2024/02/01/pFMjDKS.md.png" alt="pFMjDKS.md.png"></a></p>]]></content>
<summary type="html"><p>ESP8266针脚定义图</p>
<p><a href="https://imgse.com/i/pFMjDKS"><img src="https://s11.ax1x.com/2024/02/01/pFMjDKS.md.png" alt="pFMjDKS.md.png"></summary>
<category term="ESP8266" scheme="https://blog.lition.love/tags/ESP8266/"/>
</entry>
<entry>
<title>C语言中 各数据类型求绝对值</title>
<link href="https://blog.lition.love/posts/42263.html"/>
<id>https://blog.lition.love/posts/42263.html</id>
<published>2024-01-16T08:47:01.000Z</published>
<updated>2024-01-16T08:53:33.429Z</updated>
<content type="html"><![CDATA[<p>C语言中 各数据类型取绝对值需要的不同函数</p><p>int->abs()</p><p>long ->labs()</p><p>float ->fabsf()</p><p>double->fabs()</p><p>long double->fabsl()</p><p>举个例子</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><stdio.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><math.h></span></span></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span>{</span><br><span class="line"><span class="type">float</span> a;</span><br><span class="line"><span class="built_in">scanf</span>(<span class="string">"%f"</span>,&a);</span><br><span class="line"><span class="built_in">printf</span>(<span class="string">"%.2f"</span>,fabsf(a));</span><br><span class="line">} </span><br></pre></td></tr></table></figure></div>]]></content>
<summary type="html"><p>C语言中 各数据类型取绝对值需要的不同函数</p>
<p>int-&gt;abs()</p>
<p>long -&gt;labs()</p>
<p>float -&gt;fabsf()</p>
<p>double-&gt;fabs()</p>
<p>long double-</summary>
<category term="C语言" scheme="https://blog.lition.love/tags/C%E8%AF%AD%E8%A8%80/"/>
</entry>
<entry>
<title>Git使用出现git@github.com: Permission denied (publickey). 处理</title>
<link href="https://blog.lition.love/posts/16394.html"/>
<id>https://blog.lition.love/posts/16394.html</id>
<published>2024-01-14T18:05:05.000Z</published>
<updated>2024-04-25T01:10:44.985Z</updated>
<content type="html"><![CDATA[<p>如果你的电脑只有一个git环境,那么极大多数情况是由于 GitHub 账号没有设置 ssh 公钥信息所致。</p><h1 id="检查邮箱与用户名"><a href="#检查邮箱与用户名" class="headerlink" title="检查邮箱与用户名"></a>检查邮箱与用户名</h1><p>验证邮箱与GitHub注册时输入的是否一致</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="BASH"><figure class="iseeu highlight /bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">>> git config --global --list</span><br><span class="line">user.name=xxxxxx</span><br><span class="line">user.email=xxxxxxx@xxx.com</span><br></pre></td></tr></table></figure></div><h1 id="修改邮箱与用户名"><a href="#修改邮箱与用户名" class="headerlink" title="修改邮箱与用户名"></a>修改邮箱与用户名</h1><p>通过</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="BASH"><figure class="iseeu highlight /bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name <span class="string">"yourname"</span>,git config --global user.email <span class="string">"email@email.com"</span></span><br></pre></td></tr></table></figure></div><p>(这里得名字和邮箱都是注册github时用的)设置全局用户名和邮箱</p><h1 id="生成公钥"><a href="#生成公钥" class="headerlink" title="生成公钥"></a>生成公钥</h1><p>ssh-keygen -t rsa -C “这里换上你的邮箱”,一路回车,在出现选择时输入Y,再一路回车直到生成密钥。会在/Users/***/路径下生成一个.ssh文件夹,密钥就存储在其中。</p><p><a href="https://imgse.com/i/pFidQN6"><img src="https://s11.ax1x.com/2024/01/15/pFidQN6.md.png" alt="pFidQN6.md.png"></a></p><h1 id="添加公钥"><a href="#添加公钥" class="headerlink" title="添加公钥"></a>添加公钥</h1><p>到git仓库,添加秘钥</p><p><a href="https://imgse.com/i/pFidtud"><img src="https://s11.ax1x.com/2024/01/15/pFidtud.png" alt="pFidtud.png"></a></p><p><a href="https://imgse.com/i/pFidNDA"><img src="https://s11.ax1x.com/2024/01/15/pFidNDA.md.png" alt="pFidNDA.md.png"></a></p><p><a href="https://imgse.com/i/pFidUHI"><img src="https://s11.ax1x.com/2024/01/15/pFidUHI.md.png" alt="pFidUHI.md.png"></a></p><p><a href="https://imgse.com/i/pFiddEt"><img src="https://s11.ax1x.com/2024/01/15/pFiddEt.md.png" alt="pFiddEt.md.png"></a></p><h1 id="测试是否添加成功"><a href="#测试是否添加成功" class="headerlink" title="测试是否添加成功"></a>测试是否添加成功</h1><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="PLAINTEXT"><figure class="iseeu highlight /plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ ssh -T git@github.com</span><br><span class="line">Hi XXXX! You've successfully authenticated, but GitHub does not provide shell access.</span><br></pre></td></tr></table></figure></div><p>即可正常使用。</p>]]></content>
<summary type="html"><p>如果你的电脑只有一个git环境,那么极大多数情况是由于 GitHub 账号没有设置 ssh 公钥信息所致。</p>
<h1 id="检查邮箱与用户名"><a href="#检查邮箱与用户名" class="headerlink" title="检查邮箱与用户名"></a>检</summary>
<category term="技术" scheme="https://blog.lition.love/tags/%E6%8A%80%E6%9C%AF/"/>
</entry>
<entry>
<title>分手快乐</title>
<link href="https://blog.lition.love/posts/49387.html"/>
<id>https://blog.lition.love/posts/49387.html</id>
<published>2024-01-14T14:06:54.000Z</published>
<updated>2024-01-14T18:08:20.814Z</updated>
<content type="html"><![CDATA[<p>你总有一天要跟所有的记忆相安无事握手言和,那里面有她也有你,有她的青春也有你的年华。</p><p>那个人永远活在时间里了,你把她拉不出来,自己也回不去,就这样吧,让她安静的留在那里吧。她不会发福不会老去不会带着家长里短柴油米醋的气息,她永远年轻永远漂亮穿着鲜艳长裙站在回忆里,对着你笑靥如花。</p>]]></content>
<summary type="html"><p>你总有一天要跟所有的记忆相安无事握手言和,那里面有她也有你,有她的青春也有你的年华。</p>
<p>那个人永远活在时间里了,你把她拉不出来,自己也回不去,就这样吧,让她安静的留在那里吧。她不会发福不会老去不会带着家长里短柴油米醋的气息,她永远年轻永远漂亮穿着鲜艳长裙站在回忆</summary>
<category term="日常" scheme="https://blog.lition.love/tags/%E6%97%A5%E5%B8%B8/"/>
</entry>
<entry>
<title>C语言如何在一个.c源文件里调用另一个源文件中的函数</title>
<link href="https://blog.lition.love/posts/61897.html"/>
<id>https://blog.lition.love/posts/61897.html</id>
<published>2024-01-05T02:57:17.000Z</published>
<updated>2024-01-05T03:00:33.166Z</updated>
<content type="html"><![CDATA[<p>对于C语言来说main函数是程序的入口,当我们要开发一个比较大的程序时,可能会有很多代码,这时候想要为了方便维护通常都采取模块开发,将不同类的模块写到不同的文件中</p><p>首先定义一个.h的头文件,如function.h,在里面声明将要实现的函数,如<code>int add(int a,int b)</code>;</p><p>然后新建一个源文件为<code>function.c</code>,在<code>function.c</code>的开头添加<code>#include "function.h"</code>,然后下面写头文件中已声明的函数的实现。</p><p>这样写完了之后,main函数如果要调用这个源文件中的函数,只需要在main函数的开头部分加入<code>#include<function.h></code>,如此这般,main函数调用相应函数的时候就会自动找到程序的实现部分代码了</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><figcaption><span>function.h</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta"># <span class="keyword">include</span><span class="string"><stdio.h></span> </span></span><br><span class="line"> </span><br><span class="line"><span class="type">int</span> <span class="title function_">add</span><span class="params">(<span class="type">int</span> a,<span class="type">int</span> b)</span>;</span><br></pre></td></tr></table></figure></div><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><figcaption><span>function.c</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">"function.h"</span></span></span><br><span class="line"><span class="type">int</span> <span class="title function_">add</span><span class="params">(<span class="type">int</span> a,<span class="type">int</span> b)</span></span><br><span class="line">{</span><br><span class="line"> <span class="keyword">return</span> a+b;</span><br><span class="line">}</span><br></pre></td></tr></table></figure></div><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><figcaption><span>main.c</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta"># <span class="keyword">include</span><span class="string"><stdio.h></span></span></span><br><span class="line"><span class="meta"># <span class="keyword">include</span><span class="string"><function.h></span></span></span><br><span class="line"> </span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span></span><br><span class="line">{</span><br><span class="line"> <span class="type">int</span> a = <span class="number">1</span>,b =<span class="number">2</span>;</span><br><span class="line"> <span class="type">int</span> c = add(a,b); </span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d"</span>,c);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>; </span><br><span class="line">}</span><br></pre></td></tr></table></figure></div>]]></content>
<summary type="html"><p>对于C语言来说main函数是程序的入口,当我们要开发一个比较大的程序时,可能会有很多代码,这时候想要为了方便维护通常都采取模块开发,将不同类的模块写到不同的文件中</p>
<p>首先定义一个.h的头文件,如function.h,在里面声明将要实现的函数,如<code>int</summary>
<category term="C语言" scheme="https://blog.lition.love/tags/C%E8%AF%AD%E8%A8%80/"/>
</entry>
<entry>
<title>丹姐结婚了</title>
<link href="https://blog.lition.love/posts/51391.html"/>
<id>https://blog.lition.love/posts/51391.html</id>
<published>2024-01-02T03:01:11.000Z</published>
<updated>2024-01-02T04:12:31.225Z</updated>
<content type="html"><![CDATA[<p>十年了,终于又回老家看看了。</p><p>家里最小的姐姐也结婚了。</p><p><img src="https://s11.ax1x.com/2024/01/02/piXzwwV.md.jpg" alt="加载失败" title="漫天的星光,有一颗是你的愿望"> </p><!-- <center> <img style="border-radius: 0.3125em; box-shadow: 0 2px 4px 0 rgba(34,36,38,.12),0 2px 10px 0 rgba(34,36,38,.08);" src="https://s11.ax1x.com/2024/01/02/piXzwwV.md.jpg"> <div style="color:orange; border-bottom: 1px solid #d9d9d9; display: inline-block; color: #999; padding: 2px;">漫天的星光,有一颗是你的愿望</div></center>--><p>有很多话不知道从哪里开始说了,就这样吧。</p>]]></content>
<summary type="html"><p>十年了,终于又回老家看看了。</p>
<p>家里最小的姐姐也结婚了。</p>
<p><img src="https://s11.ax1x.com/2024/01/02/piXzwwV.md.jpg" alt="加载失败" title="漫天的星光,有一颗是你的愿望"> </</summary>
<category term="日常" scheme="https://blog.lition.love/tags/%E6%97%A5%E5%B8%B8/"/>
</entry>
<entry>
<title>SparLink开发日志(一)</title>
<link href="https://blog.lition.love/posts/64135.html"/>
<id>https://blog.lition.love/posts/64135.html</id>
<published>2023-12-30T12:40:07.000Z</published>
<updated>2023-12-30T12:59:57.907Z</updated>
<content type="html"><![CDATA[<p>收到了ESP8266开发板,开箱留念一下。</p><p><a href="https://imgse.com/i/piOaJtx"><img src="https://s11.ax1x.com/2023/12/30/piOaJtx.md.jpg" alt="piOaJtx.md.jpg"></a></p><p>买了两块CH340和一块TFT屏幕。</p><h1 id="搭建开发环境"><a href="#搭建开发环境" class="headerlink" title="搭建开发环境"></a>搭建开发环境</h1><h2 id="Arduino"><a href="#Arduino" class="headerlink" title="Arduino"></a>Arduino</h2><p>Arduino是一款JAVA开发的嵌入式开发IDE,在官网可以下载:<a href="https://www.arduino.cc/">https://www.arduino.cc/</a></p><p>点击<code>SOFTWARE</code></p><p><a href="https://imgse.com/i/piOaoEn"><img src="https://s11.ax1x.com/2023/12/30/piOaoEn.md.png" alt="piOaoEn.md.png"></a></p><p>选择你的操作系统,点击</p><p><a href="https://imgse.com/i/piOaOvF"><img src="https://s11.ax1x.com/2023/12/30/piOaOvF.md.png" alt="piOaOvF.md.png"></a></p><p>下载完后双击安装就可以。在安装过程中会弹出安装COM设备驱动,安装即可。</p>]]></content>
<summary type="html"><p>收到了ESP8266开发板,开箱留念一下。</p>
<p><a href="https://imgse.com/i/piOaJtx"><img src="https://s11.ax1x.com/2023/12/30/piOaJtx.md.jpg" alt="piOaJtx</summary>
<category term="SparLink" scheme="https://blog.lition.love/tags/SparLink/"/>
</entry>
<entry>
<title>解决执行npm命令报错:命令语法不正确</title>
<link href="https://blog.lition.love/posts/42779.html"/>
<id>https://blog.lition.love/posts/42779.html</id>
<published>2023-12-30T12:22:09.000Z</published>
<updated>2023-12-30T12:33:21.403Z</updated>
<content type="html"><![CDATA[<p>问题:执行npm命令报错:命令语法不正确</p><p>分析:由于更改了npm prefix文件中的全局安装路径,导致config混乱</p><p>解决办法:删除C盘中的.npmrc文件,路径为<code>C:\用户名\.npmrc</code></p>]]></content>
<summary type="html"><p>问题:执行npm命令报错:命令语法不正确</p>
<p>分析:由于更改了npm prefix文件中的全局安装路径,导致config混乱</p>
<p>解决办法:删除C盘中的.npmrc文件,路径为<code>C:\用户名\.npmrc</code></p>
</summary>
<category term="技术" scheme="https://blog.lition.love/tags/%E6%8A%80%E6%9C%AF/"/>
</entry>
<entry>
<title>Program File没有写权限的问题</title>
<link href="https://blog.lition.love/posts/32380.html"/>
<id>https://blog.lition.love/posts/32380.html</id>
<published>2023-12-29T12:33:02.000Z</published>
<updated>2023-12-29T12:34:01.557Z</updated>
<content type="html"><![CDATA[<p>按Windows+R键,打开“运行”,然后输入“gpedit.msc”,就是打开组策略,这个在控制面板中也可以打开。</p><p>在组策略里找到“计算机配置”-“Windows设置”-“安全设置”-“本地策略”-“安全选项”,在“安全选项”里认真查找“用户帐户控制-以管理员模式批准运行所有管理员”这项,将这项禁用掉。</p><p>作为一个开发人员,使用Win10时,感觉每次都是在跟弱智的MS斗争,而且是每次都感觉自己被MS摁在地上无情摩擦的那种,算了,不吐槽了。</p>]]></content>
<summary type="html"><p>按Windows+R键,打开“运行”,然后输入“gpedit.msc”,就是打开组策略,这个在控制面板中也可以打开。</p>
<p>在组策略里找到“计算机配置”-“Windows设置”-“安全设置”-“本地策略”-“安全选项”,在“安全选项”里认真查找“用户帐户控制-以管理</summary>
<category term="技术" scheme="https://blog.lition.love/tags/%E6%8A%80%E6%9C%AF/"/>
</entry>
<entry>
<title>SparLink正式立项</title>
<link href="https://blog.lition.love/posts/14022.html"/>
<id>https://blog.lition.love/posts/14022.html</id>
<published>2023-12-27T11:46:18.000Z</published>
<updated>2023-12-30T12:41:54.862Z</updated>
<content type="html"><![CDATA[<p>假期想做一个正经的项目,把这么多年学的知识一点点沉淀一下。</p><p>基本上底层用的是C语言,配合ESP8266,使用场景可以配合<a href="https://www.home-assistant.io/">home assistant</a>,接入家庭生态。</p><p>不过暂时没想好具体的开发方向。ESP8266有websocket模块,或许能用来跟电脑交互。</p>]]></content>
<summary type="html"><p>假期想做一个正经的项目,把这么多年学的知识一点点沉淀一下。</p>
<p>基本上底层用的是C语言,配合ESP8266,使用场景可以配合<a href="https://www.home-assistant.io/">home assistant</a>,接入家庭生态。</p</summary>
<category term="SparLink" scheme="https://blog.lition.love/tags/SparLink/"/>
</entry>
<entry>
<title>C语言求阶乘</title>
<link href="https://blog.lition.love/posts/4928.html"/>
<id>https://blog.lition.love/posts/4928.html</id>
<published>2023-12-26T16:13:38.000Z</published>
<updated>2023-12-26T16:18:29.780Z</updated>
<content type="html"><![CDATA[<p>一大早晨马上要考试了被问到阶乘这个问题,突然间懵了,思考了一会儿才想出来。</p><p>以下是在C语言的main函数中求一个数字的阶乘的代码:</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><stdio.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span> {</span><br><span class="line"> <span class="type">int</span> num, factorial = <span class="number">1</span>;</span><br><span class="line"></span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"请输入一个数字:"</span>);</span><br><span class="line"> <span class="built_in">scanf</span>(<span class="string">"%d"</span>, &num);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> (num < <span class="number">0</span>) {</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"输入的数字必须大于等于0!\n"</span>);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> i = <span class="number">1</span>; i <= num; i++) {</span><br><span class="line"> factorial *= i;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d的阶乘为:%d\n"</span>, num, factorial);</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure></div><p>代码解释:</p><ol><li><p>首先,定义了两个变量<code>num</code>和<code>factorial</code>,其中<code>num</code>表示输入的数字,<code>factorial</code>表示阶乘的结果。</p></li><li><p>使用<code>printf</code>函数提示用户输入一个数字,并使用<code>scanf</code>函数将用户输入的数字赋值给<code>num</code>变量。</p></li><li><p>使用<code>if</code>语句判断用户输入的数字是否小于0,如果小于0,则输出错误信息并返回。</p></li><li><p>使用<code>for</code>循环计算阶乘的结果,循环从1开始,每次乘以当前的循环变量<code>i</code>,并将结果赋值给<code>factorial</code>变量。</p></li><li><p>循环结束后,使用<code>printf</code>函数输出计算出的阶乘结果。</p></li><li><p>最后,返回0表示程序执行成功结束。</p></li></ol>]]></content>
<summary type="html"><p>一大早晨马上要考试了被问到阶乘这个问题,突然间懵了,思考了一会儿才想出来。</p>
<p>以下是在C语言的main函数中求一个数字的阶乘的代码:</p>
<div class="highlight-wrap"autocomplete="off" autocorrect="o</summary>
<category term="C语言" scheme="https://blog.lition.love/tags/C%E8%AF%AD%E8%A8%80/"/>
</entry>
<entry>
<title>C语言取数字的每一位</title>
<link href="https://blog.lition.love/posts/59073.html"/>
<id>https://blog.lition.love/posts/59073.html</id>
<published>2023-12-10T05:20:56.000Z</published>
<updated>2023-12-10T05:45:24.466Z</updated>
<content type="html"><![CDATA[<p>常常有将一个正整数各位数字倒序排列或是统计各数字数目的题目,难点就在于如何分离出正整数中的每一位数字,本次以C语言为模板尝试一下。</p><h1 id="递归法"><a href="#递归法" class="headerlink" title="递归法"></a>递归法</h1><p>步骤:</p><ol><li>获得该正整数的第一位数字或最后一位数字(考虑到分离出首位数字后接下来的可能为零,因此选择首先分离末位数字)</li><li>对分离出一位数字的剩下数字组成的正整数重复上步操作。</li></ol><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><stdio.h></span></span></span><br><span class="line"><span class="type">void</span> <span class="title function_">getNum</span><span class="params">(<span class="type">int</span> n)</span></span><br><span class="line">{</span><br><span class="line"> <span class="type">int</span> s=<span class="number">0</span>;</span><br><span class="line"> <span class="keyword">if</span>(n><span class="number">0</span>){</span><br><span class="line"> s=n%<span class="number">10</span>; <span class="comment">//分离末位数字</span></span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d "</span>,s);</span><br><span class="line"> getNum(n/<span class="number">10</span>); <span class="comment">//对剩下数字递归</span></span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span></span><br><span class="line">{</span><br><span class="line"> <span class="type">int</span> n;</span><br><span class="line"> <span class="built_in">scanf</span>(<span class="string">"%d"</span>,&n);</span><br><span class="line"> getNum(n);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure></div><h1 id="迭代法"><a href="#迭代法" class="headerlink" title="迭代法"></a>迭代法</h1><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><stdio.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span><span class="string"><math.h></span></span></span><br><span class="line"><span class="type">void</span> <span class="title function_">getNum</span><span class="params">(<span class="type">int</span> n)</span></span><br><span class="line">{</span><br><span class="line"> <span class="type">int</span> s;</span><br><span class="line"> <span class="type">int</span> len=(<span class="type">int</span>)<span class="built_in">log10</span>(n)+<span class="number">1</span>; <span class="comment">//获得n的位数 </span></span><br><span class="line"> <span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">0</span>;i<len;i++)</span><br><span class="line"> {</span><br><span class="line"> s=n%<span class="number">10</span>;</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"%d "</span>,s);</span><br><span class="line"> n=n/<span class="number">10</span>;</span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"><span class="type">int</span> <span class="title function_">main</span><span class="params">()</span></span><br><span class="line">{</span><br><span class="line"> <span class="type">int</span> n;</span><br><span class="line"> <span class="built_in">scanf</span>(<span class="string">"%d"</span>,&n);</span><br><span class="line"> getNum(n);</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure></div><p>while循环形式:</p><div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="C"><figure class="iseeu highlight /c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="type">int</span> j=<span class="number">0</span>;</span><br><span class="line"><span class="keyword">while</span>(n><span class="number">0</span>)</span><br><span class="line">{</span><br><span class="line"> j++;</span><br><span class="line"> n/=<span class="number">10</span>;</span><br><span class="line">} </span><br></pre></td></tr></table></figure></div>]]></content>
<summary type="html"><p>常常有将一个正整数各位数字倒序排列或是统计各数字数目的题目,难点就在于如何分离出正整数中的每一位数字,本次以C语言为模板尝试一下。</p>
<h1 id="递归法"><a href="#递归法" class="headerlink" title="递归法"></a>递归法<</summary>
<category term="C语言" scheme="https://blog.lition.love/tags/C%E8%AF%AD%E8%A8%80/"/>
</entry>
<entry>
<title>OSI七层模型</title>
<link href="https://blog.lition.love/posts/60596.html"/>
<id>https://blog.lition.love/posts/60596.html</id>
<published>2023-12-02T05:15:45.000Z</published>
<updated>2023-12-02T05:35:33.246Z</updated>
<content type="html"><![CDATA[<p>马上要竞赛了,正好在这里复习一下OSI模型。</p><p><a href="https://imgse.com/i/pissZpF"><img src="https://z1.ax1x.com/2023/12/02/pissZpF.png" alt="pissZpF.png"></a></p><h2 id="物理层"><a href="#物理层" class="headerlink" title="物理层"></a>物理层</h2><p>解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。</p><p>它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。</p><p>设备:网卡、网线、集线器、中继器、调制解调器。</p><!-- 设备用:网桥(网桥的功能在延长网络跨度上类似于中继器,然而它能提供智能化连接服务,即根据帧的终点地址处于哪一网段来进行转发和滤除。网桥对站点所处网段的了解是靠**“自学习”**实现的)、交换机 --><h2 id="数据链路层"><a href="#数据链路层" class="headerlink" title="数据链路层"></a>数据链路层</h2><p>在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。</p><p>它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。</p><p>设备:网桥、交换机。</p><h2 id="网络层"><a href="#网络层" class="headerlink" title="网络层"></a>网络层</h2><p>计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。</p><p>该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。</p><p>设备:路由器。</p><h2 id="传输层"><a href="#传输层" class="headerlink" title="传输层"></a>传输层</h2><p>当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。</p><p>简单来说,传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。</p><p>设备:网关。</p><h2 id="会话层"><a href="#会话层" class="headerlink" title="会话层"></a>会话层</h2><p>虽然已经可以实现给正确的计算机,发送正确的封装过后的信息了。但我们总不可能每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以我们要建立一个自动收发包,自动寻址的功能。于是会话层出现了:它的作用就是建立和管理应用程序之间的通信。</p><h2 id="表示层"><a href="#表示层" class="headerlink" title="表示层"></a>表示层</h2><p>表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。</p><h2 id="应用层"><a href="#应用层" class="headerlink" title="应用层"></a>应用层</h2><p>应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。前端同学对应用层肯定是最熟悉的。</p><h2 id="TCP-IP4层模型、5层模型和OSI七层模型的差别"><a href="#TCP-IP4层模型、5层模型和OSI七层模型的差别" class="headerlink" title="TCP/IP4层模型、5层模型和OSI七层模型的差别"></a>TCP/IP4层模型、5层模型和OSI七层模型的差别</h2><p><a href="https://imgse.com/i/pissKmR"><img src="https://z1.ax1x.com/2023/12/02/pissKmR.png" alt="pissKmR.png"></a></p>]]></content>
<summary type="html"><p>马上要竞赛了,正好在这里复习一下OSI模型。</p>
<p><a href="https://imgse.com/i/pissZpF"><img src="https://z1.ax1x.com/2023/12/02/pissZpF.png" alt="pissZpF.pn</summary>
<category term="技术" scheme="https://blog.lition.love/tags/%E6%8A%80%E6%9C%AF/"/>
</entry>
<entry>
<title>素质都是人给的</title>
<link href="https://blog.lition.love/posts/18348.html"/>
<id>https://blog.lition.love/posts/18348.html</id>
<published>2023-12-01T16:35:33.000Z</published>
<updated>2023-12-01T16:43:28.989Z</updated>
<content type="html"><![CDATA[<p>都12点35了,还没睡着。</p><p>被同学吵的受不了了,拿起手机刷了刷知乎,搜索一下,大学宿舍太吵睡不着觉,居然发现了500多个回答。其中称完全不顾别人感受的室友比比皆是,一团和气的寝室终究是少数。</p><p>我感觉实在不行我也要搬出去住了,天天晚上至少要1点才能睡觉,一个外放爱奇艺一个连麦打游戏。我很诧异为什么除了我自己所在的寝室,都是和和睦睦的相处。</p><p>晚上用金山打字通敲了一个小时,英文输入的话大概速度是110/分钟。算中等水平吧,打字员入门水平。感觉这个水平很难再往上提升了,再就是练练盲打和五笔。五笔的话一直找不到合适的时间去练习。</p>]]></content>
<summary type="html"><p>都12点35了,还没睡着。</p>
<p>被同学吵的受不了了,拿起手机刷了刷知乎,搜索一下,大学宿舍太吵睡不着觉,居然发现了500多个回答。其中称完全不顾别人感受的室友比比皆是,一团和气的寝室终究是少数。</p>
<p>我感觉实在不行我也要搬出去住了,天天晚上至少要1点才能</summary>
<category term="日常" scheme="https://blog.lition.love/tags/%E6%97%A5%E5%B8%B8/"/>
</entry>
</feed>