(596,-593,'',596,0,0,'','','html1','[Arduino] Code for ESP32 Web Server using Server-Sent Events (SSE)','<pre class=\" language-c\" data-slot-rendered-content=\"true\" style=\"border: 0px; margin-top: 0.5em; margin-bottom: 20px; padding: 1em; background: rgb(245, 242, 240); font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; font-size: 18px; line-height: 1.5; overflow: auto; max-width: 100%; text-shadow: rgb(255, 255, 255) 0px 1px; word-break: normal; overflow-wrap: normal; tab-size: 4; hyphens: none; max-height: 40em;\">\r\n   <code class=\" language-c\" style=\"border: 0px; margin: 0px; padding: 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 1em; line-height: 1.5; font-family: Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace; background: 0px 0px; text-shadow: rgb(255, 255, 255) 0px 1px; word-spacing: normal; word-break: normal; overflow-wrap: normal; tab-size: 4; hyphens: none;\"><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Create AsyncWebServer object on port 80</span>\r\nAsyncWebServer <span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">server</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">80</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Create an Event Source on /events</span>\r\nAsyncEventSource <span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">events</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"/events\"</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Timer variables</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">unsigned</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">long</span> lastTime <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">0</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">unsigned</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">long</span> timerDelay <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">30000</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Create a sensor object</span>\r\nAdafruit_BME280 bme<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// BME280 connect to ESP32 I2C (GPIO 21 = SDA, GPIO 22 = SCL)</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">float</span> temperature<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">float</span> humidity<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">float</span> pressure<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Init BME280</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">void</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">initBME</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">if</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">!</span>bme<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">begin</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">0x76</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span>\r\n    Serial<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">println</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"Could not find a valid BME280 sensor, check wiring!\"</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">while</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">void</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">getSensorReadings</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span>\r\n  temperature <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span> bme<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">readTemperature</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Convert temperature to Fahrenheit</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">//temperature = 1.8 * bme.readTemperature() + 32;</span>\r\n  humidity <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span> bme<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">readHumidity</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span>\r\n  pressure <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span> bme<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">readPressure</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">100.0F</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">// Initialize WiFi</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">void</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">initWiFi</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span>\r\n    WiFi<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">mode</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>WIFI_STA<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span>\r\n    WiFi<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">begin</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>ssid<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">,</span> password<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span>\r\n    Serial<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">print</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"Connecting to WiFi ..\"</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">while</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>WiFi<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">status</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">!=</span> WL_CONNECTED<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span>\r\n        Serial<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">print</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\'.\'</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">delay</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1000</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span>\r\n    Serial<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">println</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>WiFi<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">localIP</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span>\r\nString <span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">processor</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">const</span> String<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&amp;</span> var<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">getSensorReadings</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token comment\" style=\"border: 0px; margin: 0px; padding: 0px; list-style-type: none; color: #708090;\">//Serial.println(var);</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">if</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>var <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">==</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"TEMPERATURE\"</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">return</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">String</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>temperature<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">else</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">if</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>var <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">==</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"HUMIDITY\"</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">return</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">String</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>humidity<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">else</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">if</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>var <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">==</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"PRESSURE\"</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">return</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">String</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>pressure<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">return</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">String</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">const</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">char</span> index_html<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">[</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">]</span> PROGMEM <span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span> R\"<span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">rawliteral</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">!</span>DOCTYPE HTML<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>html<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>head<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>title<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span>ESP Web Server<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>title<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>meta name<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"viewport\"</span> content<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"width=device-width, initial-scale=1\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>link rel<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"stylesheet\"</span> href<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"https://use.fontawesome.com/releases/v5.7.2/css/all.css\"</span> integrity<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr\"</span> crossorigin<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"anonymous\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>link rel<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"icon\"</span> href<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"data:,\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>style<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span>\r\n    html <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span>font<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>family<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> Arial<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> display<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">inline</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>block<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> text<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>align<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> center<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span>\r\n    p <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span> font<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>size<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1.2</span>rem<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span>\r\n    body <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span>  margin<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">0</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span>topnav <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span> overflow<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> hidden<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> background<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>color<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> #<span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">50</span>B8B4<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> color<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> white<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> font<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>size<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1</span>rem<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span>content <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span> padding<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">20</span>px<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span>card <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span> background<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>color<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> white<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> box<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>shadow<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">2</span>px <span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">2</span>px <span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">12</span>px <span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1</span>px <span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">rgba</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">140</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">,</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">140</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">,</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">140</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">,</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">.5</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span>cards <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span> max<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>width<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">800</span>px<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> margin<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">0</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">auto</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> display<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span> grid<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> grid<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>gap<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">2</span>rem<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span> grid<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>template<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>columns<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">repeat</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token keyword\" style=\"border: 0px; margin: 0px; padding: 0px; color: #0077aa;\">auto</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>fit<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">,</span><span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">minmax</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">200</span>px<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">,</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1f</span>r<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">.</span>reading <span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">{</span> font<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">-</span>size<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">:</span><span class=\"token number\" style=\"border: 0px; margin: 0px; padding: 0px; color: #990055;\">1.4</span>rem<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">}</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>style<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>head<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>body<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>div class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"topnav\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>h1<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span>BME280 WEB <span class=\"token function\" style=\"border: 0px; margin: 0px; padding: 0px; color: #dd4a68;\">SERVER</span><span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">(</span>SSE<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">)</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>h1<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>div<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>div class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"content\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>div class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"cards\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>div class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"card\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>i class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"fas fa-thermometer-half\"</span> style<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"color:#059e8a;\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>i<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span> TEMPERATURE<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>span class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"reading\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>span id<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"temp\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">%</span>TEMPERATURE<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">%</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>span<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&amp;</span>deg<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span>C<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>span<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>div<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>div class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"card\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>i class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"fas fa-tint\"</span> style<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"color:#00add6;\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>i<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span> HUMIDITY<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>span class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"reading\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>span id<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"hum\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">%</span>HUMIDITY<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">%</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>span<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&amp;</span>percnt<span class=\"token punctuation\" style=\"border: 0px; margin: 0px; padding: 0px; color: #999999;\">;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>span<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>div<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>div class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"card\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>i class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"fas fa-angle-double-down\"</span> style<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"color:#e1e437;\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>i<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span> PRESSURE<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>span class<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"reading\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span>span id<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">=</span><span class=\"token string\" style=\"border: 0px; margin: 0px; padding: 0px; color: #669900;\">\"pres\"</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">%</span>PRESSURE<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">%</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>span<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span> hPa<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>span<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>p<span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&gt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">&lt;</span><span class=\"token operator\" style=\"border: 0px; margin: 0px; padding: 0px; color: #9a6e3a; background: rgba(255, 255, 255, 0.5);\">/</span>div</code>\r\n   </pre>','https://randomnerdtutorials.com/esp32-web-server-sent-events-sse/','',4,0,5,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-02-28 13:41:48',0,'2023-02-28 13:41:48','112.222.138.202','','','','','','','','','','','',''),(597,-594,'',597,0,0,'','','html1','[Arduino] ESP32 analogWrite 예제','<p>const int led_g = 18;</p>\r\n<p>const int led_r = 19;</p>\r\n<p>const int led_b = 22;</p>\r\n<p><br /></p>\r\n<p>int input_value = 0;</p>\r\n<p><br /></p>\r\n<p>void setup() {</p>\r\n<p>&nbsp; Serial.begin(115200);</p>\r\n<p>&nbsp; ledcAttachPin(led_g, 0);</p>\r\n<p>&nbsp; ledcAttachPin(led_r, 1);</p>\r\n<p>&nbsp; ledcAttachPin(led_b, 2);</p>\r\n<p><br /></p>\r\n<p>&nbsp; ledcSetup(0, 5000, 8);</p>\r\n<p>&nbsp; ledcSetup(1, 5000, 8);</p>\r\n<p>&nbsp; ledcSetup(2, 5000, 8);</p>\r\n<p>}</p>\r\n<p><br /></p>\r\n<p>void loop() {</p>\r\n<p>&nbsp; if(Serial.available()) {</p>\r\n<p>&nbsp; &nbsp; input_value = Serial.parseInt();</p>\r\n<p>&nbsp; &nbsp; ledcWrite(0, input_value);</p>\r\n<p>&nbsp; &nbsp; ledcWrite(1, input_value);</p>\r\n<p>&nbsp; &nbsp; ledcWrite(2, input_value);</p>\r\n<p>&nbsp; &nbsp; Serial.println(\"&gt;input_value=\" + (String)input_value);</p>\r\n<p>&nbsp; &nbsp; delay(3000);</p>\r\n<p>&nbsp; }</p>\r\n<p><br /></p>\r\n<p>&nbsp; for(int i=0; i&lt;=255; i++) {</p>\r\n<p>&nbsp; &nbsp; ledcWrite(2, i);</p>\r\n<p>&nbsp; &nbsp; Serial.println((String)i);</p>\r\n<p>&nbsp; &nbsp; delay(5);</p>\r\n<p><br /></p>\r\n<p>&nbsp; &nbsp; if(i==255) {</p>\r\n<p>&nbsp; &nbsp; &nbsp; i = 0;</p>\r\n<p>&nbsp; &nbsp; &nbsp; Serial.println(\"*****\");</p>\r\n<p>&nbsp; &nbsp; }</p>\r\n<p>&nbsp; }</p>\r\n<p>}</p>','','',0,0,6,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-03-16 09:04:56',0,'2023-03-16 09:04:56','112.222.138.202','','','','','','','','','','','',''),(598,-595,'',598,0,0,'','','html1','[ETC] Soil Moisture Sensor','<header style=\"box-sizing: border-box; color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">\r\n   <h1 style=\"box-sizing: border-box; color: var(--ifm-heading-color); font-family: var(--ifm-heading-font-family); font-weight: var(--ifm-heading-font-weight); line-height: var(--ifm-heading-line-height); margin-bottom: calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading)); font-size: var(--ifm-h1-font-size); --ifm-h1-font-size:3rem;\">Grove - Capacitive Moisture Sensor (Corrosion Resistant)</h1>\r\n   </header>\r\n<div align=\"center\" style=\"box-sizing: border-box; margin-top: 0px; color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\"><img loading=\"lazy\" width=\"{1000}\" src=\"https://files.seeedstudio.com/wiki/Grove-Capacitive_Moisture_Sensor_Corrosion_Resistant/img/main.jpg\" class=\"img_ev3q medium-zoom-image\" style=\"box-sizing: border-box; max-width: 100%; height: auto; cursor: zoom-in; transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1) 0s !important;\" /></div>\r\n<p style=\"box-sizing: border-box; margin-bottom: var(--ifm-leading); color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">The Grove - Capacitive Moisture Sensor (Corrosion Resistant) is a soil moisture sensor based on capacitance changes. Compared with resistive sensors, capacitive sensors do not require direct exposure of the metal electrodes, which can significantly reduce the erosion of the electrodes. Hence, we call it&nbsp;<span style=\"box-sizing: border-box; font-weight: var(--ifm-font-weight-bold);\">Corrosion Resistant</span>.</p>\r\n<p style=\"box-sizing: border-box; margin-bottom: var(--ifm-leading); color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">It is important to note that this sensor can only qualitatively test the humidity of the soil and cannot measure quantitatively. Which means when the humidity of the soil rises, the value of the output decreases; conversely, when the humidity decreases, the output value becomes higher.</p>','https://wiki.seeedstudio.com/Grove-Capacitive_Moisture_Sensor-Corrosion-Resistant/','',2,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-03-17 08:54:25',1,'2023-03-17 08:54:25','112.222.138.202','','','','','','','','','','','',''),(599,-596,'',599,0,0,'','','html1','[Arduino] ESP32 wifi 접속을 스마트폰으로 설정하는 방법 wifi manager','<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">ESP32 를 사용하는 이유는 보통 IoT 제품을 개발하거나<br />WIFI로 인터넷 접속이 필요하기 때문이다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">그런데 문제는 개발이 끝난후 미리 설정한 WiFi 정보가 아니면 WiFi 를 접속할 수 없어서<br />코드를 다시 열고 WiFi 정보를 수정한 뒤에 다시 업로드를 했어야 했다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\"><span style=\"font-size: 0.9375em;\">이런 방식을 하드코딩 방식이라고 한다.</span><span style=\"font-size: 11.25px;\"><br /></span><span style=\"font-size: 0.9375em;\">개발이 쉽지만 사용성이 너무 떨어지는 장단점이 있는 것이다.</span></p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">이번에 소개할 것은<br />ESP32 에서 코딩을 따로 수정할 필요 없이<br />스마트폰으로 ESP32의 wifi 접속 정보를 수정해서 wifi접속을 할 수 있는 기능이다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; line-height: 2; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\"><font color=\"#555555\"><span style=\"font-size: 0.9375em;\">필자도 아래의 글을 통해 참고한 내용으로</span></font><br /><font color=\"#555555\"><span style=\"font-size: 0.9375em;\">원문으로 읽어볼 수 있다면 읽어보는 것을 추천한다.</span><span style=\"font-size: 11.25px;\"><br /></span></font><a href=\"https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/\" target=\"_blank\" rel=\"noopener\" style=\"color: #ff0000; font-size: 0.9375em; text-decoration-line: none;\">https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/</a></p>\r\n<figure id=\"og_1663880561204\" contenteditable=\"false\" data-ke-type=\"opengraph\" data-ke-align=\"alignCenter\" data-og-type=\"article\" data-og-title=\"ESP32: Create a Wi-Fi Manager (AsyncWebServer library) | Random Nerd Tutorials\" data-og-description=\"The Wi-Fi Manager allows you to connect the ESP32 board to different Access Points (networks) without hard-coding network credentials (SSID and password) and upload new code to your board.\" data-og-host=\"randomnerdtutorials.com\" data-og-source-url=\"https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/\" data-og-url=\"https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/\" data-og-image=\"https://scrap.kakaocdn.net/dn/rW12W/hyPS2NqL5X/uYSwqlBQ6qqbNwjz0gtTv0/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/banunk/hyPSTXiSSi/2HNuohRvitIxG7c8KOLt3k/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/ld8Y8/hyPSRecNWa/AedfsXQcQ9w8EgmA1YxK21/img.png?width=714&amp;height=643&amp;face=0_0_714_643\" style=\"margin: 30px 0px; max-width: 100%; clear: both; padding: 0px; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/\" target=\"_blank\" rel=\"noopener\" data-source-url=\"https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/\" style=\"text-decoration-line: none; color: #000000; position: relative; box-sizing: border-box; display: block; height: 200px; border: 1px solid rgb(217, 217, 217); z-index: 1;\">\r\n      <div class=\"og-image\" style=\"margin: 0px; padding: 0px; position: absolute; top: 0px; bottom: 0px; left: 0px; width: 200px; border-right: 1px solid rgb(217, 217, 217); background-size: cover; background-position: center center; background-image: url(&quot;https://scrap.kakaocdn.net/dn/rW12W/hyPS2NqL5X/uYSwqlBQ6qqbNwjz0gtTv0/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/banunk/hyPSTXiSSi/2HNuohRvitIxG7c8KOLt3k/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/ld8Y8/hyPSRecNWa/AedfsXQcQ9w8EgmA1YxK21/img.png?width=714&amp;height=643&amp;face=0_0_714_643&quot;);\">&nbsp;</div>\r\n      <div class=\"og-text\" style=\"margin: 0px; padding: 33px 46px 0px 39px; position: absolute; inset: 0px 0px 0px 201px; box-sizing: border-box;\">\r\n         <p class=\"og-title\" data-ke-size=\"size16\" style=\"padding: 0px; word-break: break-all; font-size: 22px; line-height: 28px; max-width: 467px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; margin-bottom: 10px !important;\">ESP32: Create a Wi-Fi Manager (AsyncWebServer library) | Random Nerd Tutorials</p>\r\n         <p class=\"og-desc\" data-ke-size=\"size16\" style=\"padding: 0px; word-break: break-all; font-size: 14px; line-height: normal; color: #909090; text-overflow: ellipsis; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; font-stretch: normal; max-height: 42px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box;\">The Wi-Fi Manager allows you to connect the ESP32 board to different Access Points (networks) without hard-coding network credentials (SSID and password) and upload new code to your board.</p>\r\n         <p class=\"og-host\" data-ke-size=\"size16\" style=\"padding: 0px; word-break: break-all; font-size: 14px; line-height: 2; color: #909090; position: absolute; bottom: 24px; font-family: AvenirNext, sans-serif;\">randomnerdtutorials.com</p>\r\n         </div>\r\n      </a></figure>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;<span style=\"font-size: 0.9375em;\">- 작동 원리</span></p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"774\" data-origin-height=\"849\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/xoJrk/btrMQCRMnUu/wf58PFZTWV1jAG4fTn3Rq0/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/xoJrk/btrMQCRMnUu/wf58PFZTWV1jAG4fTn3Rq0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxoJrk%2FbtrMQCRMnUu%2Fwf58PFZTWV1jAG4fTn3Rq0%2Fimg.png\" data-origin-width=\"774\" data-origin-height=\"849\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 740px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">공식 홈페이지에서 설명하는 WiFi manager 라는 기능의 원리는 위의 순서도와 같다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">1. ESP32 내부에 ssid.txt , pass.txt, ip.txt 파일이 존재하는 경우와 존재하지 않은 경우로 나눈다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">2. 위의 세 파일이 존재하지 않으면 자체적으로 ESP32 가 공유기가 되면서 스마트폰으로 ESP32 wifi에 접속할 수 있게된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">3. ESP32 wifi 에 연결되었다면 스마트폰에서 웹주소 192.168.4.1 로 접속하여 ESP32 설정페이지를 연다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">4-5. SSID와 PASSWORD 와 IP ADDRESS 를 입력해주고 데이터를 제출(저장)하면 ESP32 내부에 ssid.txt , pass.txt , ip.txt 세 파일이 생성되게 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">6. 재부팅을 하고 1번으로 돌아간다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">7. 재부팅하면 이제는 세 txt 파일이 있기 때문에, 해당 정보로 wifi에 접속을 시도한다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">8. wifi 정보가 올바르게 입력되었다면 해당 wifi에 접속을 하고, 아니면 다시 스마트폰에서 정보를 입력하는 모드로 들어가게 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">위의 순서에 따라서 작동되기 때문에<br />문제가 생기면 위의 경우에서 내가 어느 단계에 있고, 어떤 문제가 있을지 찾아보면 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">이제 위의 기능을 실제로 ESP32에 넣어보도록 하자.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">우선 관련 라이브러리를 다 설치해주어야 한다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">아래의 라이브러리를 설치하면 된다.</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"fileblock\" data-ke-align=\"alignCenter\" style=\"margin: 28px auto 20px; max-width: 100%; clear: both; padding: 0px; width: 470px; height: 71px; border: 1px solid rgb(233, 233, 233); position: relative; border-radius: 1px; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://blog.kakaocdn.net/dn/cTJNkS/btrMQOLogaG/7qeydJ5KwUDpV7VfHfkS41/AsyncTCP-master.zip?attach=1&amp;knm=tfile.zip\" class=\"\" style=\"text-decoration-line: none; color: #ff0000; display: block; height: 71px;\" target=\"_blank\">\r\n      <div class=\"image\" style=\"margin: 21px 17px 20px 22px; padding: 0px; position: absolute; left: 0px; top: 0px; width: 30px; height: 30px; background-image: url(&quot;https://t1.daumcdn.net/tistory_admin/static/manage/post-editor/img_editor_content.svg&quot;); background-position: 0px 0px;\">&nbsp;</div>\r\n      <div class=\"desc\" style=\"margin: 0px; padding: 0px; position: absolute; inset: 0px 60px 0px 70px;\">\r\n         <div class=\"filename\" style=\"margin: 17px 0px 0px; padding: 0px; color: #333333; font-size: 14px; text-overflow: ellipsis; height: 20px;\"><span class=\"name\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 272px; height: 20px; display: block;\">AsyncTCP-master.zip</span></div>\r\n         <div class=\"size\" style=\"margin: 2px 0px 0px; padding: 0px; font-family: &quot;Avenir Next&quot;, sans-serif; font-size: 12px; color: #777777; height: 16px;\">0.02MB</div>\r\n         </div>\r\n      </a></figure>\r\n<figure class=\"fileblock\" data-ke-align=\"alignCenter\" style=\"margin: 28px auto 20px; max-width: 100%; clear: both; padding: 0px; width: 470px; height: 71px; border: 1px solid rgb(233, 233, 233); position: relative; border-radius: 1px; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://blog.kakaocdn.net/dn/OE1B8/btrMPVDYzL4/0mLekU4lrmISUFZP6Bv2e1/ESPAsyncWebServer-master.zip?attach=1&amp;knm=tfile.zip\" class=\"\" style=\"text-decoration-line: none; color: #ff0000; display: block; height: 71px;\" target=\"_blank\">\r\n      <div class=\"image\" style=\"margin: 21px 17px 20px 22px; padding: 0px; position: absolute; left: 0px; top: 0px; width: 30px; height: 30px; background-image: url(&quot;https://t1.daumcdn.net/tistory_admin/static/manage/post-editor/img_editor_content.svg&quot;); background-position: 0px 0px;\">&nbsp;</div>\r\n      <div class=\"desc\" style=\"margin: 0px; padding: 0px; position: absolute; inset: 0px 60px 0px 70px;\">\r\n         <div class=\"filename\" style=\"margin: 17px 0px 0px; padding: 0px; color: #333333; font-size: 14px; text-overflow: ellipsis; height: 20px;\"><span class=\"name\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 272px; height: 20px; display: block;\">ESPAsyncWebServer-master.zip</span></div>\r\n         <div class=\"size\" style=\"margin: 2px 0px 0px; padding: 0px; font-family: &quot;Avenir Next&quot;, sans-serif; font-size: 12px; color: #777777; height: 16px;\">0.27MB</div>\r\n         </div>\r\n      </a></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">그리고 여기에 추가로 필요한게 있다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\"><a href=\"https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #ff0000;\">https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/</a></p>\r\n<figure id=\"og_1663881149911\" contenteditable=\"false\" data-ke-type=\"opengraph\" data-ke-align=\"alignCenter\" data-og-type=\"article\" data-og-title=\"Install ESP32 Filesystem Uploader in Arduino IDE | Random Nerd Tutorials\" data-og-description=\"In this article we’\'ll show you how to upload files to ESP32 filesystem (SPIFFS) using a plugin for the Arduino IDE: the ESP32 filesystem uploader.\" data-og-host=\"randomnerdtutorials.com\" data-og-source-url=\"https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/\" data-og-url=\"https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/\" data-og-image=\"https://scrap.kakaocdn.net/dn/baZvYa/hyPSR6h8gX/UK5SeQka9r07OJFkwCHf8K/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cGYW2b/hyPSRec1Yz/AkPB4pucNtRPgseKMTkW71/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/kp4iK/hyPSYEhmb6/bnGlY59lwhw2rwXI2uB6C1/img.jpg?width=828&amp;height=466&amp;face=0_0_828_466\" style=\"margin: 30px 0px; max-width: 100%; clear: both; padding: 0px; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/\" target=\"_blank\" rel=\"noopener\" data-source-url=\"https://randomnerdtutorials.com/install-esp32-filesystem-uploader-arduino-ide/\" style=\"text-decoration-line: none; color: #000000; position: relative; box-sizing: border-box; display: block; height: 200px; border: 1px solid rgb(217, 217, 217); z-index: 1;\">\r\n      <div class=\"og-image\" style=\"margin: 0px; padding: 0px; position: absolute; top: 0px; bottom: 0px; left: 0px; width: 200px; border-right: 1px solid rgb(217, 217, 217); background-size: cover; background-position: center center; background-image: url(&quot;https://scrap.kakaocdn.net/dn/baZvYa/hyPSR6h8gX/UK5SeQka9r07OJFkwCHf8K/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cGYW2b/hyPSRec1Yz/AkPB4pucNtRPgseKMTkW71/img.jpg?width=1280&amp;height=720&amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/kp4iK/hyPSYEhmb6/bnGlY59lwhw2rwXI2uB6C1/img.jpg?width=828&amp;height=466&amp;face=0_0_828_466&quot;);\">&nbsp;</div>\r\n      <div class=\"og-text\" style=\"margin: 0px; padding: 33px 46px 0px 39px; position: absolute; inset: 0px 0px 0px 201px; box-sizing: border-box;\">\r\n         <p class=\"og-title\" data-ke-size=\"size16\" style=\"padding: 0px; word-break: break-all; font-size: 22px; line-height: 28px; max-width: 467px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; margin-bottom: 10px !important;\">Install ESP32 Filesystem Uploader in Arduino IDE | Random Nerd Tutorials</p>\r\n         <p class=\"og-desc\" data-ke-size=\"size16\" style=\"padding: 0px; word-break: break-all; font-size: 14px; line-height: normal; color: #909090; text-overflow: ellipsis; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; font-stretch: normal; max-height: 42px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box;\">In this article we’\'ll show you how to upload files to ESP32 filesystem (SPIFFS) using a plugin for the Arduino IDE: the ESP32 filesystem uploader.</p>\r\n         <p class=\"og-host\" data-ke-size=\"size16\" style=\"padding: 0px; word-break: break-all; font-size: 14px; line-height: 2; color: #909090; position: absolute; bottom: 24px; font-family: AvenirNext, sans-serif;\">randomnerdtutorials.com</p>\r\n         </div>\r\n      </a></figure>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">바로&nbsp;<span style=\"background-color: #ffffff; color: #3a3a3a;\">Serial Peripheral Interface Flash File System (SPIFFS)</span>관련 세팅을 해주어야 한다는 것이다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">아마 이미 되어있으신 분들도 계실 것이고, 아닌 분들도 계실것인데,<br />잘 모르겠다면 그냥 위의 링크로 들어가서 하라는 대로 세팅을 따라하면 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">SPIFFS 가 뭐냐면 아두이노 코드 뿐만이 아니라 기타 파일들을 ESP32 플래시 메모리에 옮겨 써주게 하는 기능이다.<br />이게 왜 필요하냐면 WiFi manager 로 데이터를 받아올 페이지 화면이 html 과 css로 구성되어 있는데,<br />그 파일을 같이 ESP32에 넣어주어야 하기 때문이다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"fileblock\" data-ke-align=\"alignCenter\" style=\"margin: 28px auto 20px; max-width: 100%; clear: both; padding: 0px; width: 470px; height: 71px; border: 1px solid rgb(233, 233, 233); position: relative; border-radius: 1px; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://blog.kakaocdn.net/dn/dar5Jl/btrMNcgxohd/Gk8mtapvH4zoKPb59KkN0k/ESP32FS-1.0.zip?attach=1&amp;knm=tfile.zip\" class=\"\" style=\"text-decoration-line: none; color: #ff0000; display: block; height: 71px;\" target=\"_blank\">\r\n      <div class=\"image\" style=\"margin: 21px 17px 20px 22px; padding: 0px; position: absolute; left: 0px; top: 0px; width: 30px; height: 30px; background-image: url(&quot;https://t1.daumcdn.net/tistory_admin/static/manage/post-editor/img_editor_content.svg&quot;); background-position: 0px 0px;\">&nbsp;</div>\r\n      <div class=\"desc\" style=\"margin: 0px; padding: 0px; position: absolute; inset: 0px 60px 0px 70px;\">\r\n         <div class=\"filename\" style=\"margin: 17px 0px 0px; padding: 0px; color: #333333; font-size: 14px; text-overflow: ellipsis; height: 20px;\"><span class=\"name\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 272px; height: 20px; display: block;\">ESP32FS-1.0.zip</span></div>\r\n         <div class=\"size\" style=\"margin: 2px 0px 0px; padding: 0px; font-family: &quot;Avenir Next&quot;, sans-serif; font-size: 12px; color: #777777; height: 16px;\">0.01MB</div>\r\n         </div>\r\n      </a></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">위의 링크조차 들어가서 원문으로 보기 싫어하실 분들을 위해 진짜 간단하게 설명해보겠다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">위의 파일을 받고,</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">컴퓨터에 아두이노가 설치된 폴더위치로 들어가서 tools 폴더에 ESP32FS 폴더를 압축해제해주면 된다.</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"934\" data-origin-height=\"167\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/cOluvn/btrMRrbp4T9/gWHLypfwiyou78SQv5Xpa0/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/cOluvn/btrMRrbp4T9/gWHLypfwiyou78SQv5Xpa0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOluvn%2FbtrMRrbp4T9%2FgWHLypfwiyou78SQv5Xpa0%2Fimg.png\" data-origin-width=\"934\" data-origin-height=\"167\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 740px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">그리고 아두이노IDE를 재시작하면 적용이 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"fileblock\" data-ke-align=\"alignCenter\" style=\"margin: 28px auto 20px; max-width: 100%; clear: both; padding: 0px; width: 470px; height: 71px; border: 1px solid rgb(233, 233, 233); position: relative; border-radius: 1px; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://blog.kakaocdn.net/dn/KDgpa/btrMN7ZL1Pl/m4Cicq5JK3O36Zpubhcym0/ESP32_WiFi_Manager.zip?attach=1&amp;knm=tfile.zip\" class=\"\" style=\"text-decoration-line: none; color: #ff0000; display: block; height: 71px;\" target=\"_blank\">\r\n      <div class=\"image\" style=\"margin: 21px 17px 20px 22px; padding: 0px; position: absolute; left: 0px; top: 0px; width: 30px; height: 30px; background-image: url(&quot;https://t1.daumcdn.net/tistory_admin/static/manage/post-editor/img_editor_content.svg&quot;); background-position: 0px 0px;\">&nbsp;</div>\r\n      <div class=\"desc\" style=\"margin: 0px; padding: 0px; position: absolute; inset: 0px 60px 0px 70px;\">\r\n         <div class=\"filename\" style=\"margin: 17px 0px 0px; padding: 0px; color: #333333; font-size: 14px; text-overflow: ellipsis; height: 20px;\"><span class=\"name\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 272px; height: 20px; display: block;\">ESP32_WiFi_Manager.zip</span></div>\r\n         <div class=\"size\" style=\"margin: 2px 0px 0px; padding: 0px; font-family: &quot;Avenir Next&quot;, sans-serif; font-size: 12px; color: #777777; height: 16px;\">0.00MB</div>\r\n         </div>\r\n      </a></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">이제는 위의 압축파일을 다운받고<br />압축을 푼 후에</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">아두이노 파일을 실행시켜준다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">이제 세팅이 다 끝났고, 코드 업로드를 하면 된다.</p>\r\n<pre id=\"code_1663881924246\" class=\"cpp\" data-ke-language=\"cpp\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs\" style=\"margin: 0px; padding: 0.5em; display: block; overflow-x: auto; background: rgb(43, 43, 43); color: #bababa;\"><span class=\"hljs-comment\" style=\"color: #7f7f7f;\">/*********\r\n  Rui Santos\r\n  Complete instructions at https://RandomNerdTutorials.com/esp32-wi-fi-manager-asyncwebserver/\r\n  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.\r\n  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n*********/</span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;Arduino.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;WiFi.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;ESPAsyncWebServer.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;AsyncTCP.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">\"SPIFFS.h\"</span></span><span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Create AsyncWebServer object on port 80</span><span class=\"hljs-function\">AsyncWebServer <span class=\"hljs-title\">server</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">(<span class=\"hljs-number\" style=\"color: #6896ba;\">80</span>)</span></span>;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Search for parameter in HTTP POST request</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* PARAM_INPUT_1 = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"ssid\"</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* PARAM_INPUT_2 = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"pass\"</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* PARAM_INPUT_3 = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"ip\"</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* PARAM_INPUT_4 = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"gateway\"</span>;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">//Variables to save values from HTML form</span>\r\nString ssid;\r\nString pass;\r\nString ip;\r\nString gateway;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// File paths to save input values permanently</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* ssidPath = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/ssid.txt\"</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* passPath = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/pass.txt\"</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* ipPath = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/ip.txt\"</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span>* gatewayPath = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/gateway.txt\"</span>;\r\nIPAddress localIP;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">//IPAddress localIP(192, 168, 1, 200); // hardcoded</span><span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Set your Gateway IP address</span>\r\nIPAddress localGateway;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">//IPAddress localGateway(192, 168, 1, 1); //hardcoded</span><span class=\"hljs-function\">IPAddress <span class=\"hljs-title\">subnet</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">(<span class=\"hljs-number\" style=\"color: #6896ba;\">255</span>, <span class=\"hljs-number\" style=\"color: #6896ba;\">255</span>, <span class=\"hljs-number\" style=\"color: #6896ba;\">0</span>, <span class=\"hljs-number\" style=\"color: #6896ba;\">0</span>)</span></span>;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Timer variables</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">unsigned</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">long</span> previousMillis = <span class=\"hljs-number\" style=\"color: #6896ba;\">0</span>;\r\n<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">long</span> interval = <span class=\"hljs-number\" style=\"color: #6896ba;\">10000</span>;  <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// interval to wait for Wi-Fi connection (milliseconds)</span><span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Set LED GPIO</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">int</span> ledPin = <span class=\"hljs-number\" style=\"color: #6896ba;\">2</span>;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Stores LED state</span>\r\nString ledState;\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Initialize SPIFFS</span><span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #cb7832;\">void</span><span class=\"hljs-title\">initSPIFFS</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">()</span></span>{\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (!SPIFFS.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">begin</span>(<span class=\"hljs-literal\" style=\"color: #6896ba;\">true</span>)) {\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"An error has occurred while mounting SPIFFS\"</span>);\r\n  }\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"SPIFFS mounted successfully\"</span>);\r\n}\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Read File from SPIFFS</span><span class=\"hljs-function\">String <span class=\"hljs-title\">readFile</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">(fs::FS &amp;fs, <span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span> * path)</span></span>{\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">printf</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Reading file: %s\\r\\n\"</span>, path);\r\n  File file = fs.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">open</span>(path);\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(!file || file.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">isDirectory</span>()){\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"- failed to open file for reading\"</span>);\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">String</span>();\r\n  }\r\n  String fileContent;\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">while</span>(file.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">available</span>()){\r\n    fileContent = file.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">readStringUntil</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\'\\n\'</span>);\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">break</span>;     \r\n  }\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span> fileContent;\r\n}\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Write file to SPIFFS</span><span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #cb7832;\">void</span><span class=\"hljs-title\">writeFile</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">(fs::FS &amp;fs, <span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span> * path, <span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">char</span> * message)</span></span>{\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">printf</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Writing file: %s\\r\\n\"</span>, path);\r\n  File file = fs.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">open</span>(path, FILE_WRITE);\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(!file){\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"- failed to open file for writing\"</span>);\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span>;\r\n  }\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(file.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">print</span>(message)){\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"- file written\"</span>);\r\n  } <span class=\"hljs-keyword\" style=\"color: #cb7832;\">else</span> {\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"- frite failed\"</span>);\r\n  }\r\n}\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Initialize WiFi</span><span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #cb7832;\">bool</span><span class=\"hljs-title\">initWiFi</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">()</span></span>{\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(ssid==<span class=\"hljs-string\" style=\"color: #6a8759;\">\"\"</span> || ip==<span class=\"hljs-string\" style=\"color: #6a8759;\">\"\"</span>){\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Undefined SSID or IP address.\"</span>);\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span><span class=\"hljs-literal\" style=\"color: #6896ba;\">false</span>;\r\n  }\r\n  WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">mode</span>(WIFI_STA);\r\n  localIP.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">fromString</span>(ip.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n  localGateway.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">fromString</span>(gateway.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (!WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">config</span>(localIP, localGateway, subnet)){\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"STA Failed to configure\"</span>);\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span><span class=\"hljs-literal\" style=\"color: #6896ba;\">false</span>;\r\n  }\r\n  WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">begin</span>(ssid.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>(), pass.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Connecting to WiFi...\"</span>);\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">unsigned</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">long</span> currentMillis = <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">millis</span>();\r\n  previousMillis = currentMillis;\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">while</span>(WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">status</span>() != WL_CONNECTED) {\r\n    currentMillis = <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">millis</span>();\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (currentMillis - previousMillis &gt;= interval) {\r\n      Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Failed to connect.\"</span>);\r\n      <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span><span class=\"hljs-literal\" style=\"color: #6896ba;\">false</span>;\r\n    }\r\n  }\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">localIP</span>());\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span><span class=\"hljs-literal\" style=\"color: #6896ba;\">true</span>;\r\n}\r\n<span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Replaces placeholder with LED state value</span><span class=\"hljs-function\">String <span class=\"hljs-title\">processor</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">(<span class=\"hljs-keyword\" style=\"color: #cb7832;\">const</span> String&amp; var)</span></span>{\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(var == <span class=\"hljs-string\" style=\"color: #6a8759;\">\"STATE\"</span>) {\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">digitalRead</span>(ledPin)) {\r\n      ledState = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"ON\"</span>;\r\n    }\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">else</span> {\r\n      ledState = <span class=\"hljs-string\" style=\"color: #6a8759;\">\"OFF\"</span>;\r\n    }\r\n    <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span> ledState;\r\n  }\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">return</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">String</span>();\r\n}\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #cb7832;\">void</span><span class=\"hljs-title\">setup</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">()</span></span>{\r\n  <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Serial port for debugging purposes</span>\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">begin</span>(<span class=\"hljs-number\" style=\"color: #6896ba;\">115200</span>);\r\n  <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">initSPIFFS</span>();\r\n  <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Set GPIO 2 as an OUTPUT</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">pinMode</span>(ledPin, OUTPUT);\r\n  <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">digitalWrite</span>(ledPin, LOW);\r\n  <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Load values saved in SPIFFS</span>\r\n  ssid = <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">readFile</span>(SPIFFS, ssidPath);\r\n  pass = <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">readFile</span>(SPIFFS, passPath);\r\n  ip = <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">readFile</span>(SPIFFS, ipPath);\r\n  gateway = <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">readFile</span> (SPIFFS, gatewayPath);\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(ssid);\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(pass);\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(ip);\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(gateway);\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">initWiFi</span>()) {\r\n    <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Route for root / web page</span>\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">on</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>, HTTP_GET, [](AsyncWebServerRequest *request) {\r\n      request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">send</span>(SPIFFS, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/index.html\"</span>, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"text/html\"</span>, <span class=\"hljs-literal\" style=\"color: #6896ba;\">false</span>, processor);\r\n    });\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">serveStatic</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>, SPIFFS, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>);\r\n    <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Route to set GPIO state to HIGH</span>\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">on</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/on\"</span>, HTTP_GET, [](AsyncWebServerRequest *request) {\r\n      <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">digitalWrite</span>(ledPin, HIGH);\r\n      request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">send</span>(SPIFFS, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/index.html\"</span>, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"text/html\"</span>, <span class=\"hljs-literal\" style=\"color: #6896ba;\">false</span>, processor);\r\n    });\r\n    <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Route to set GPIO state to LOW</span>\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">on</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/off\"</span>, HTTP_GET, [](AsyncWebServerRequest *request) {\r\n      <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">digitalWrite</span>(ledPin, LOW);\r\n      request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">send</span>(SPIFFS, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/index.html\"</span>, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"text/html\"</span>, <span class=\"hljs-literal\" style=\"color: #6896ba;\">false</span>, processor);\r\n    });\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">begin</span>();\r\n  }\r\n  <span class=\"hljs-keyword\" style=\"color: #cb7832;\">else</span> {\r\n    <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Connect to Wi-Fi network with SSID and password</span>\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Setting AP (Access Point)\"</span>);\r\n    <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// NULL sets an open Access Point</span>\r\n    WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">softAP</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"ESP-WIFI-MANAGER\"</span>, <span class=\"hljs-literal\" style=\"color: #6896ba;\">NULL</span>);\r\n    IPAddress IP = WiFi.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">softAPIP</span>();\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">print</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"AP IP address: \"</span>);\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(IP); \r\n    <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Web Server Root URL</span>\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">on</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>, HTTP_GET, [](AsyncWebServerRequest *request){\r\n      request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">send</span>(SPIFFS, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/wifimanager.html\"</span>, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"text/html\"</span>);\r\n    });\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">serveStatic</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>, SPIFFS, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>);\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">on</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"/\"</span>, HTTP_POST, [](AsyncWebServerRequest *request) {\r\n      <span class=\"hljs-keyword\" style=\"color: #cb7832;\">int</span> params = request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">params</span>();\r\n      <span class=\"hljs-keyword\" style=\"color: #cb7832;\">for</span>(<span class=\"hljs-keyword\" style=\"color: #cb7832;\">int</span> i=<span class=\"hljs-number\" style=\"color: #6896ba;\">0</span>;i&lt;params;i++){\r\n        AsyncWebParameter* p = request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">getParam</span>(i);\r\n        <span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span>(p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">isPost</span>()){\r\n          <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// HTTP POST ssid value</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">name</span>() == PARAM_INPUT_1) {\r\n            ssid = p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">value</span>().<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>();\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">print</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"SSID set to: \"</span>);\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(ssid);\r\n            <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Write file to save value</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">writeFile</span>(SPIFFS, ssidPath, ssid.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n          }\r\n          <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// HTTP POST pass value</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">name</span>() == PARAM_INPUT_2) {\r\n            pass = p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">value</span>().<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>();\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">print</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Password set to: \"</span>);\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(pass);\r\n            <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Write file to save value</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">writeFile</span>(SPIFFS, passPath, pass.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n          }\r\n          <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// HTTP POST ip value</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">name</span>() == PARAM_INPUT_3) {\r\n            ip = p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">value</span>().<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>();\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">print</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"IP Address set to: \"</span>);\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(ip);\r\n            <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Write file to save value</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">writeFile</span>(SPIFFS, ipPath, ip.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n          }\r\n          <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// HTTP POST gateway value</span><span class=\"hljs-keyword\" style=\"color: #cb7832;\">if</span> (p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">name</span>() == PARAM_INPUT_4) {\r\n            gateway = p-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">value</span>().<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>();\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">print</span>(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Gateway set to: \"</span>);\r\n            Serial.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">println</span>(gateway);\r\n            <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">// Write file to save value</span><span class=\"hljs-built_in\" style=\"color: #e0c46c;\">writeFile</span>(SPIFFS, gatewayPath, gateway.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">c_str</span>());\r\n          }\r\n          <span class=\"hljs-comment\" style=\"color: #7f7f7f;\">//Serial.printf(\"POST[%s]: %s\\n\", p-&gt;name().c_str(), p-&gt;value().c_str());</span>\r\n        }\r\n      }\r\n      request-&gt;<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">send</span>(<span class=\"hljs-number\" style=\"color: #6896ba;\">200</span>, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"text/plain\"</span>, <span class=\"hljs-string\" style=\"color: #6a8759;\">\"Done. ESP will restart, connect to your router and go to IP address: \"</span> + ip);\r\n      <span class=\"hljs-built_in\" style=\"color: #e0c46c;\">delay</span>(<span class=\"hljs-number\" style=\"color: #6896ba;\">3000</span>);\r\n      ESP.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">restart</span>();\r\n    });\r\n    server.<span class=\"hljs-built_in\" style=\"color: #e0c46c;\">begin</span>();\r\n  }\r\n}\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #cb7832;\">void</span><span class=\"hljs-title\">loop</span><span class=\"hljs-params\" style=\"color: #b9b9b9;\">()</span></span>{\r\n}</code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">단순히 코드를 업로드 하는것 뿐만 아니라<br />SPIFFS 기능으로 html과 css 파일도 업로드 해주어야 한다.</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"971\" data-origin-height=\"627\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/bHt5SU/btrMPmBQgBK/LMxfUZVWAKmN87X4JSMte0/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bHt5SU/btrMPmBQgBK/LMxfUZVWAKmN87X4JSMte0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHt5SU%2FbtrMPmBQgBK%2FLMxfUZVWAKmN87X4JSMte0%2Fimg.png\" data-origin-width=\"971\" data-origin-height=\"627\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 740px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">ESP32 Sketch Data Upload 를 통해 html과 css 파일을 업로드 해주면 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">데이터 파일을 업로드 하지 않으면 스마트폰에서 WiFi 세팅을 할 수가 없다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"710\" data-origin-height=\"624\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/cE2eFk/btrMQOxRWfs/N0YRzWDnnjFPKfykWRxJp0/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/cE2eFk/btrMQOxRWfs/N0YRzWDnnjFPKfykWRxJp0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE2eFk%2FbtrMQOxRWfs%2FN0YRzWDnnjFPKfykWRxJp0%2Fimg.png\" data-origin-width=\"710\" data-origin-height=\"624\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 710px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">ESP32에 코드가 다 업로드 되었다면 이제 스마트폰에서 ESP32 wifi를 접속해주고<br />192.168.4.1 주소로 접속하면 위의 화면이 나온다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">SSID 와 Password 에 wifi 이름이랑 비번을 입력하면 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">IP Address 는 고유 IP 주소로, ESP32가 공유기에 접속했을때 부여 받을 IP주소를 입력하는 것이고<br />Gateway Address 는 공유기 내부 주소 규칙을 입력하면 된다.<br /><br /></p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">쉽게 iptime 공유기라면 192.168.0.1 이 되고,</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">netis 공유기라면 192.168.1.1 이 된다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">정보를 제대로 입력하면 자동으로 ESP32가 wifi 접속하게 된다.</p>','https://diyver.tistory.com/202#google_vignette','',1,0,8,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-04-07 16:16:12',2,'2023-04-07 16:16:12','112.222.138.202','','','','','','','','','','','',''),(600,-597,'',600,0,0,'','','html1','[Linux] mysql root 암호재설정(패스워드 분실) 및 로그인 에러조치','<p>mysql root 패스워드 분실시 암호재설정</p>\r\n<p>1. mysql 중지</p>\r\n<p>&gt;systemctl stop mysql</p>\r\n<p>&nbsp;</p>\r\n<p>2. mysqld_safe 실행</p>\r\n<p>&gt;/usr/bin/mysqld_safe --skip-grant-tables &amp;&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>//만약 /var/run/mysqld 가 없어 에러가 날 경우</p>\r\n<p>&gt;mkdir -p /var/run/mysqld</p>\r\n<p>&gt;chown mysql:mysql /var/run/mysqld&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>3.&nbsp; 패스워드 변경</p>\r\n<p>&gt;mysql -u root mysql</p>\r\n<p>&gt;UPDATE mysql.user SET authentication_string=PASSWORD(\'패스워드\') WHERE user=\'root\';</p>\r\n<p>&gt;flush privileges;</p>\r\n<p>&nbsp;</p>\r\n<p>//이때 root 로그인 패스워드 타입이 mysql_native_password 가 아니라면 변경해준다.</p>\r\n<p>&gt;select user, host, pluging from mysql.user;&nbsp; //plugin 이 mysql_native_password 여야함</p>\r\n<p>&gt;update user set plugin=\'mysql_native_password\' where user=\'root\';</p>\r\n<p>&gt;flush privileges;</p>\r\n<p>&nbsp;</p>','https://zetawiki.com/wiki/MySQL_root_%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C_%EB%B6%84%EC%8B%A4','https://bscnote.tistory.com/77',0,1,5,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-04-21 22:38:59',0,'2023-04-21 22:38:59','192.168.219.116','','','','','','','','','','','',''),(601,-598,'',601,0,0,'','','html1','[php] php에서 웹페이지에 에러 출력하기','<p>error_reporting( E_ALL );</p>\r\n<p>ini_set( \"display_errors\", 1 );</p>\r\n<p><br /></p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-04-21 23:59:15',0,'2023-04-21 23:59:15','192.168.219.116','','','','','','','','','','','',''),(602,-599,'',602,0,0,'','','html1','[ETC] 그누보드5 서버이전하기','<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; line-height: 2;\"><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">1. 서버에서 var/www/html에 있는 것 그대로 옮기기<br /></span><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">**mysql dump 에러시 아래사항 확인</span><br /><a href=\"https://blog.boxcorea.com/wp/archives/2944\" target=\"_blank\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">https://blog.boxcorea.com/wp/archives/2944</span></a><br /><span style=\"color: #4a474b; background-color: #ffffff;\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">–no-tablespaces 옵션 사용</span><br /></span><span style=\"background-color: #f5f5f5; color: #333333; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">mysqldump --no-tablespaces -Q -u boxcorea -p boxcorea &gt; boxcorea20201019.sql.1</span></p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; line-height: 2;\"><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">2. phpmyadmin에서 import/export 하기</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">3. data/dbconfig.php에서 mysql 접속정보 수정하기</span><br /><a href=\"https://thestorybook.tistory.com/12\" target=\"_blank\" style=\"text-decoration-line: none; letter-spacing: 0px;\"><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">https://thestorybook.tistory.com/12</span></a><br /><b><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">error -&nbsp;</span></b><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">G5_MYSQL_SET_MODE 관련 문제 체크하기</span></p>\r\n<p style=\"box-sizing: inherit; margin-bottom: 28px; line-height: 26px;\"><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">[그누보드5 서버이전 후 글 작성 및 member가입 작성안되는 경우1]</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">서버 이전후 글쓰기가 안되는 현상이 있습니다.</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">이때 MySQL 또는 MariaDB 버전을 확인이 필요합니다.</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">MySQL 5.6 이상, MariaDB 10.2.4 이상을 사용 하는 경우</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">그누보드5 / data / dbconfig.php 에서</span><br /><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">define(\'G5_MYSQL_SET_MODE\', false);</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">를 아래와 같이 변경합니다.</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">define(\'G5_MYSQL_SET_MODE\', true);</span><br /><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">[그누보드5 서버이전 후 글 작성 및 member가입 작성안되는 경우2]</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">mysql 5.6&nbsp; 혹은 mariadb-10.x버전이였는데</span><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;my.cnf 파일에서</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">vi /etc/mysql/my.cnf</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;[mysqld]</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">=&gt; 변경</span><br /><span style=\"color: #000000; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">sql-mode = NO_AUTO_CREATE_USER</span><br /><span style=\"color: #000000;\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">변경 적용 후 mysql 재시작 합니다.</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">======================================================================================================</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">mysql 버전 문제로 로그인 에러 발생시</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">1. data / session 디렉토로 퍼미션 변경 chmod 707</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">2.&nbsp;</span></span><span style=\"background-color: #ffffff; color: #222222;\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">mysql 8과 mysql 5의 password 함수 한줄 호환</span><br /></span></p>\r\n<p style=\"padding: 0px; word-break: break-all; color: #222222; background-color: #ffffff;\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">lib/common.lib.php에서</span></p>\r\n<p style=\"padding: 0px; word-break: break-all; color: #222222; background-color: #ffffff;\"><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">function sql_password($value)</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">{</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;&nbsp;&nbsp; // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;&nbsp;&nbsp; // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;&nbsp;&nbsp; //$row = sql_fetch(\" select password(\'$value\') as pass \");</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;&nbsp;&nbsp; //2020.6.17</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp;&nbsp;&nbsp; $row = sql_fetch(\" select CONCAT(\'*\', UPPER(SHA1(UNHEX(SHA1((\'$value\')))))) as pass \");<br /></span><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">&nbsp; &nbsp; return $row[\'pass\'];</span></p>\r\n<p style=\"padding: 0px; word-break: break-all; background-color: #ffffff;\"><font color=\"#222222\" face=\"맑은 고딕, malgun gothic\"><span style=\"font-size: 14px;\">}</span></font><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 14px;\">======================================================================================================<br /></span>서버이전시 이미지 주소변경<br /><font color=\"#222222\" face=\"맑은 고딕, malgun gothic\"><span style=\"font-size: 14px;\"><a href=\"https://www.happyjung.com/lecture/2539?sca=%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C&amp;page=4\" target=\"_blank\">https://www.happyjung.com/lecture/2539?sca=%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C&amp;page=4</a></span></font></p>','https://jacobyu.tistory.com/entry/%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C5-%EC%84%9C%EB%B2%84%EC%9D%B4%EC%A0%84%ED%95%98%EA%B8%B0','https://thestorybook.tistory.com/12',3,2,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-04-25 15:40:40',1,'2023-04-25 15:40:40','112.222.138.202','','','','','','','','','','','',''),(603,-600,'',603,0,0,'','','html1','[Arduino] WiFiManager 라이브러리 수정','<p>WiFiManager 라이브러리 사용시, 이유없이 WiFi설정된 공유기에 접속이 끊기고 재접속시 기존 설정된 공유기에 접속하지 못하고</p>\r\n<p>AP_Station 모드로 들어갈 때가 있음.</p>\r\n<p>이에 WiFiManager.cpp 에서 아래 코드를 추가함.</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;466 unsigned int con_count = 0;&nbsp; //추가</p>\r\n<p>&nbsp;467</p>\r\n<p>&nbsp;468 boolean WiFiManager::configPortalHasTimeout(){</p>\r\n<p>&nbsp;469</p>\r\n<p>&nbsp;470&nbsp; &nbsp; &nbsp;if(_configPortalTimeout == 0 || (_apClientCheck &amp;&amp; (WiFi_softap_num_stations() &gt; 0))){</p>\r\n<p>&nbsp;471&nbsp; &nbsp; &nbsp; &nbsp;if(millis() - timer &gt; 30000){</p>\r\n<p>&nbsp;472&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;timer = millis();</p>\r\n<p>&nbsp;473&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DEBUG_WM(DEBUG_VERBOSE,\"NUM CLIENTS: \" + (String)WiFi_softap_num_stations());</p>\r\n<p>&nbsp;474</p>\r\n<p>&nbsp;475&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;con_count++;&nbsp; //추가 ---&gt;</p>\r\n<p>&nbsp;476&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DEBUG_WM(DEBUG_VERBOSE,\"con_count: \" + (String)con_count);</p>\r\n<p>&nbsp;477</p>\r\n<p>&nbsp;478&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(con_count == 3) {&nbsp; //시간은 적당히 조절</p>\r\n<p>&nbsp;479&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ESP.restart();</p>\r\n<p>&nbsp;480&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; //&lt;---여기까지</p>\r\n<p>&nbsp;481&nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n<p>&nbsp;482&nbsp; &nbsp; &nbsp; &nbsp;_configPortalStart = millis(); // kludge, bump configportal start time to skew timeouts</p>\r\n<p>&nbsp;----------------------------------------------------------------------------------------------------</p>\r\n<p>*WiFiManager 2.0.16-rc.2</p>\r\n<p>&nbsp;</p>\r\n<p>577 번 줄부터,</p>\r\n<p>unsigned int con_count = 0;&nbsp; //추가</p>\r\n<p><br /></p>\r\n<p>boolean WiFiManager::configPortalHasTimeout(){</p>\r\n<p>&nbsp; &nbsp; if(!configPortalActive) return false;</p>\r\n<p>&nbsp; &nbsp; uint16_t logintvl = 30000; // how often to emit timeing out counter logging&nbsp;</p>\r\n<p><br /></p>\r\n<p>&nbsp; &nbsp; // handle timeout portal client check</p>\r\n<p>&nbsp; &nbsp; if(_configPortalTimeout == 0 || (_apClientCheck &amp;&amp; (WiFi_softap_num_stations() &gt; 0))){&nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n<p>&nbsp; &nbsp; &nbsp; // debug num clients every 30s</p>\r\n<p>&nbsp; &nbsp; &nbsp; if(millis() - timer &gt; logintvl){</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; timer = millis();</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; con_count++;&nbsp; //추가 ---&gt;</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; #ifdef WM_DEBUG_LEVEL</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; DEBUG_WM(F(\"con_count =&gt; \"));&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; //DEBUG_WM(DEBUG_VERBOSE,F(\"NUM CLIENTS: \"),(String)WiFi_softap_num_stations());</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; #endif&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; if(con_count &gt;= 4) {</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ESP.restart();</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; //추가 &lt;--- 여기까지&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</p>\r\n<p>&nbsp; &nbsp; &nbsp; }</p>\r\n<p>&nbsp; &nbsp; &nbsp; _configPortalStart = millis(); // kludge, bump configportal start time to skew timeouts</p>\r\n<p>&nbsp; &nbsp; &nbsp; return false;</p>\r\n<p>&nbsp; &nbsp; }</p>\r\n<p><br /></p>\r\n<p>&nbsp; &nbsp; // handle timeout webclient check</p>\r\n<p>&nbsp; &nbsp; if(_webClientCheck &amp;&amp; (_webPortalAccessed&gt;_configPortalStart)&gt;0) _configPortalStart = _webPortalAccessed;</p>\r\n<p><br /></p>\r\n<p>&nbsp; &nbsp; // handle timed out</p>\r\n<p>&nbsp; &nbsp; if(millis() &gt; _configPortalStart + _configPortalTimeout){</p>\r\n<p>&nbsp; &nbsp; &nbsp; #ifdef WM_DEBUG_LEVEL</p>\r\n<p>&nbsp; &nbsp; &nbsp; DEBUG_WM(F(\"config portal has timed out\"));</p>\r\n<p>&nbsp; &nbsp; &nbsp; #endif</p>\r\n<p>&nbsp; &nbsp; &nbsp; return true; // timeout bail, else do debug logging</p>\r\n<p>&nbsp; &nbsp; }&nbsp;</p>\r\n<p>&nbsp; &nbsp; else if(_debug &amp;&amp; _debugLevel &gt; 0) {</p>\r\n<p>&nbsp; &nbsp; &nbsp; // log timeout time remaining every 30s</p>\r\n<p>&nbsp; &nbsp; &nbsp; if((millis() - timer) &gt; logintvl){</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; timer = millis();</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; #ifdef WM_DEBUG_LEVEL</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; DEBUG_WM(DEBUG_VERBOSE,F(\"Portal Timeout In\"),(String)((_configPortalStart + _configPortalTimeout-millis())/1000) + (String)F(\" seconds\"));</p>\r\n<p>&nbsp; &nbsp; &nbsp; &nbsp; #endif</p>\r\n<p>&nbsp; &nbsp; &nbsp; }</p>\r\n<p>&nbsp; &nbsp; }</p>\r\n<p><br /></p>\r\n<p>&nbsp; &nbsp; return false;</p>\r\n<p>}&nbsp;</p>\r\n<p>&nbsp;----------------------------------------------------------------------------------------------------</p>\r\n<p>*WiFiManager 2.0.16-rc.2</p>\r\n<p>&nbsp;</p>\r\n<p>192.168.4.1 웹 화면 첫째줄 문구 출력 wm_strings_en.h&nbsp; 223번째줄에 정의,</p>\r\n<p>const char S_brand[]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PROGMEM = \"WiFiManager00\";</p>\r\n<p>&nbsp;</p>\r\n<p>같은파일 43번째줄에서 웹표출 작성,</p>\r\n<p>const char HTTP_ROOT_MAIN[]&nbsp; &nbsp; &nbsp; &nbsp; PROGMEM = \"&lt;h1&gt;&lt;center&gt;{t}&lt;/center&gt;&lt;/h1&gt;&lt;h3&gt;{v}&lt;/h3&gt;\";</p>','','',0,0,10,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-05-06 23:28:01',0,'2023-05-06 23:28:01','192.168.219.116','','','','','','','','','','','',''),(604,-601,'',604,0,0,'','','html1','[Eagle] Eagle 이글캐드 설치후 실행 안될 때 해결방법','<div class=\"dhig-mb-4\" style=\"margin-bottom: 1rem; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">\r\n   <p class=\"MuiTypography-root MuiTypography-headline-large css-8vsv9l\" style=\"font-family: ArtifaktLegend; font-size: clamp(1.5rem, 1.29rem + 0.926vw, 2.125rem); font-weight: 800; line-height: 1.2; letter-spacing: 0px; color: #000000;\">EAGLE이 시작 화면 후에 멈추거나 충돌하고 시작되지 않음</p>\r\n   </div>\r\n<div style=\"color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">&nbsp;</div>\r\n<div class=\"dhig-mb-1\" style=\"margin-bottom: 0.25rem; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">\r\n   <p class=\"MuiTypography-root MuiTypography-headline-smaller css-1oy7ap9\" style=\"font-size: 1rem; font-weight: 700; line-height: 1.5; letter-spacing: 0px; color: #000000;\">Autodesk Support</p>\r\n   </div>\r\n<div class=\"dhig-mb-4\" style=\"margin-bottom: 1rem; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">\r\n   <p class=\"MuiTypography-root MuiTypography-smallprint dhig-mb-4 css-115r3mv\" style=\"font-size: 0.75rem; line-height: 1.5; letter-spacing: 0px;\">2023년 5월 17일</p>\r\n   </div>\r\n<hr class=\"MuiDivider-root-1 MuiDivider-light-4\" style=\"border: none; height: 1px; margin: 0px; flex-shrink: 0; background-color: #e5e5e5; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium;\" />\r\n<div class=\"ProductsCovered__Divider-etx__sc-1d0zy0h-1 ooHhc\" style=\"clear: both; height: 10px; width: 1440px; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">&nbsp;</div>\r\n<div style=\"color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">&nbsp;</div>\r\n<div class=\"hide-version\" style=\"color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: medium; background-color: #ffffff;\">\r\n   <div id=\"sfdcarticles\" class=\"caas_sf\">\r\n      <div id=\"sfdcarticles\" class=\"caas_sf\">\r\n         <div id=\"issue\" class=\"adskkb_issues\">\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">문제:</h3>\r\n            Autodesk EAGLE을 시작/실행할 때:\r\n            <ul style=\"margin-block: 0.4em; padding-inline-start: 20px;\">\r\n               <li style=\"list-style: none; padding-left: 8px;\">시작 화면에서 몇 초 후에 자동으로 시작 및 충돌/닫힘이 발생하고 시작할 수 없습니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">초기/시작 EAGLE 화면/로고만 표시된 다음 사라지고 다른 창은 열리지 않습니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">Windows 작업 관리자에 EAGLE 작업이 나타나지 않습니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">작은 시작 창(왼쪽 아래 구석에 \"Autodesk\"가 있는 그림)이 나타나고 즉시 다시 닫히므로 로그인 또는 구성 가능성이 막힙니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">로그인 창이 표시되지 않아 온라인으로 전환할 수 없습니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">Autodesk EAGLE을 열 수 없으며 시작되지 않음/Autodesk EAGLE이 열리지 않음</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">다시 설치한 후에도 Autodesk EAGLE이 여전히 열리지 않음</li>\r\n               </ul>\r\n            &nbsp;\r\n            <div style=\"margin-left: 40px;\"><img alt=\"eagle.JPG\" src=\"https://help.autodesk.com/sfdcarticles/img/0EM3g000000W5Il\" style=\"max-width: 100%; height: auto !important;\" /></div>\r\n            <br />경우에 따라 주/로드 프로그램 창이 공백으로 표시되고 제목이 표시됩니다.\r\n            <pre class=\"ckeditor_codeblock\" style=\"overflow-wrap: break-word; background: rgb(249, 249, 249); border-radius: 2px; font-family: Courier; overflow-x: auto; padding: 20px; white-space: pre-wrap; font-size: 14px !important;\">Control Panel EAGLE 9.x (OFFLINE)</pre>\r\n            &nbsp;수행할 수 있는 작업이 없습니다.</div>\r\n         <div id=\"cause\" class=\"adskkb_cause\">\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">원인:</h3>\r\n            <ul style=\"margin-block: 0.4em; padding-inline-start: 20px;\">\r\n               <li style=\"list-style: none; padding-left: 8px;\">시스템 또는 프로그램과 관련된 잘못된 DLL(Windows 이벤트 뷰어)은 \"<i>Eagle.exe\"</i>에 오류가 발생하는 것으로 인해 모듈 \"<i>LIBEAY32.dll\"</i>\" 오류가 발생했거나 둘 다 있음을 나타낼 수 있습니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">그래픽 드라이버 문제&nbsp;</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">로그인에 사용된 이메일에 백엔드 문제가 있을 수 있습니다.&nbsp;</li>\r\n               </ul>\r\n            </div>\r\n         <div id=\"solution\" class=\"adskkb_solution\">\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">해결 방법:</h3>\r\n            <p class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\">다음 해결 방법을 수행해 보십시오.<br />&nbsp;</p>\r\n            <ol></ol>\r\n            <ol></ol>\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">수동 DLL 파일 대체</h3>\r\n            <ol>\r\n               <li style=\"list-style-type: decimal !important;\"><a href=\"https://www.totalcommander.ch/win/tools/openssl-1.0.2u-x64_86-win64.zip\" target=\"_blank\" style=\"cursor: pointer; text-decoration-thickness: 0.0625em; text-decoration-color: #000000; text-decoration-skip-ink: auto; color: #000000; outline: transparent solid 2px; outline-offset: 2px;\">전체 명령 관리자 Win 도구</a>에서 설치된 OS에 적합한 ZIP 아카이브를 다운로드합니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">다운로드한 파일의 압축을 풉니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">\"<i>C:\\EAGLE 9.6.2</i>\" 디렉토리에서 \"<i>livay32.dll</i>\" 및 \"<i>ssleay32.dll</i>\" 파일의 백업을 만듭니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">\"<i>C:\\EAGLE 9.6.2</i>\" 디렉토리의 \"<i>libeay32.dll</i>\" 및 \"<i>ssleay32.dll</i>\"을 2단계에서 보관 취소한 해당 파일로 대체합니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">EAGLE을 다시 시작하고 다시 로그인합니다.</li>\r\n               </ol>\r\n            &nbsp;\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">\"<i>LIBEAY32.dll</i>\"의 이름을 바꿉니다.</h3>\r\n            다음 단계를 수행합니다.\r\n            <ol>\r\n               <li style=\"list-style-type: decimal !important;\">\"<i>C:\\EAGLE 9.x\"</i>로 이동하여 \"<i>LIBEAY32.dll\" 파일을 찾습니다.</i></li>\r\n               <li style=\"list-style-type: decimal !important;\">파일 이름 \"<i>LIBEAY32.dll.bak\"의 끝에 .bak를 추가하여 .dll의 이름을 바꿉니다.</i></li>\r\n               <li style=\"list-style-type: decimal !important;\">Eagle을 다시 시작하면 프로그램이 문제 없이 열립니다.&nbsp;</li>\r\n               </ol>\r\n            &nbsp;\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">\"<i>eagle_SW_OpenGL.bat\" 파일</i>을 사용하여 EAGLE을 엽니다.</h3>\r\n            <ol>\r\n               <li style=\"list-style-type: decimal !important;\">EAGLE 설치 디렉토리로 이동합니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">\"<i>eagle_SW_OpenGL.bat\"&nbsp;</i>파일을 두 번 클릭하여 EAGLE을 시작합니다.</li>\r\n               </ol>\r\n            &nbsp;\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\">다른 이메일로 EAGLE에 로그인</h3>\r\n            <ol>\r\n               <li style=\"list-style-type: decimal !important;\">계정 관리자에게&nbsp;<a href=\"https://manage.autodesk.com/\" target=\"_blank\" style=\"cursor: pointer; text-decoration-thickness: 0.0625em; text-decoration-color: #000000; text-decoration-skip-ink: auto; color: #000000; outline: transparent solid 2px; outline-offset: 2px;\">Autodesk Account</a>로 이동하도록 요청합니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">사용 중인 이메일에서 EAGLE 라이센스(또는 멤버쉽에 따라 Fusion 360)를 할당 해제합니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">다른 전자 메일에 라이센스를 지정합니다.</li>\r\n               <li style=\"list-style-type: decimal !important;\">지정된 새 이메일을 사용하여 EAGLE에 로그인합니다.&nbsp;</li>\r\n               </ol>\r\n            <b>참고</b>: 이 방법으로 문제가 해결되지 않을 경우 새 전자 메일을 사용하거나 Autodesk 지원 팀에 첫 번째 전자 메일을 통해 EAGLE에 대한 액세스 권한이 부여되지 않은 이유를 확인하십시오.\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 5px;\"><br />다음과 같은 작업에 도움이 될 수 있습니다.</h3>\r\n            <ul style=\"margin-block: 0.4em; padding-inline-start: 20px;\">\r\n               <li style=\"list-style: none; padding-left: 8px;\">비디오 드라이버를 그래픽 카드 공급업체에서 제공하는 최신 버전으로 업데이트해야 합니다.</li>\r\n               <li style=\"list-style: none; padding-left: 8px;\">Lavasoft Software가 컴퓨터에 설치되어 있지 않은지 확인합니다.</li>\r\n               </ul>\r\n            </div>\r\n         <div id=\"seealso\" class=\"adskkb_seealso\" style=\"font-size: 16px; line-height: 24px;\">\r\n            <h3 class=\"wd-mb- wd-mv- wd-mt- wd-color- wd-font- wp-heading- wp-full-width\" style=\"font-size: large; margin: 30px 0px 14px;\">참조 항목:</h3>\r\n            <a href=\"https://knowledge.autodesk.com/ko/support/eagle/troubleshooting/caas/sfdcarticles/sfdcarticles/Autodesk-EAGLE-can-t-go-online-after-signing-in.html\" target=\"_blank\" style=\"cursor: pointer; text-decoration-line: none; text-decoration-skip-ink: auto; color: #4444f8; outline: transparent solid 2px; outline-offset: 2px; line-height: 20px;\">로그인 후 EAGLE이 오프라인 모드(온라인으로 전환할 수 없음)에서 멈춤</a></div>\r\n         </div>\r\n      </div>\r\n   </div>','https://www.autodesk.co.kr/support/technical/article/caas/sfdcarticles/sfdcarticles/KOR/Eagle-crashes-seconds-after-launching-splash-screen.html','',1,0,10,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-05-27 01:31:55',1,'2023-05-27 01:31:55','192.168.0.1','','','','','','','','','','','',''),(605,-602,'',605,0,0,'','','html1','[Arduino] esp32 서보모터 PWM제어','<h1 class=\"title is-3 is-size-4-mobile\" style=\"box-sizing: inherit; margin: 50px 0px 1.5rem; padding: 0px; word-break: break-word; color: #363636; line-height: 1.125; letter-spacing: -1.4px; font-family: &quot;Gowun Batang&quot;, Ubuntu, Roboto, &quot;Open Sans&quot;, &quot;Microsoft YaHei&quot;, sans-serif; background-color: #ffffff;\">esp32 서보모터 PWM제어</h1>\r\n<div class=\"content\" style=\"box-sizing: inherit; margin-bottom: 1.5rem; overflow-wrap: break-word; font-size: 1.3rem; line-height: 1.75em; letter-spacing: -0.3px; color: #5d686f; margin-top: 20px; font-family: &quot;Gowun Batang&quot;, Ubuntu, Roboto, &quot;Open Sans&quot;, &quot;Microsoft YaHei&quot;, sans-serif; background-color: #ffffff;\">\r\n   <h3 id=\"SG90-MG90S-MG966R-서보모터\" style=\"box-sizing: inherit; margin: 0px 0px 0.6666em; padding: 0px; font-size: 1.5em; font-weight: 400; color: #363636; line-height: 1.125; scroll-margin: 1em;\"><a href=\"https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/#SG90-MG90S-MG966R-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0\" class=\"headerlink\" title=\"SG90, MG90S,  MG966R 서보모터\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"></a>SG90, MG90S, MG966R 서보모터</h3>\r\n   <h4 id=\"datasheet\" style=\"box-sizing: inherit; margin: 0px 0px 0.8em; padding: 0px; font-size: 1.25em; font-weight: 400; color: #363636; line-height: 1.125; scroll-margin: 1em;\"><a href=\"https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/#datasheet\" class=\"headerlink\" title=\"datasheet\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"></a>datasheet</h4>\r\n   <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\"><a class=\"gallery-item\" href=\"https://stemwith.github.io/image/SG90_Datasheet.jpg\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"><img src=\"https://stemwith.github.io/image/SG90_Datasheet.jpg\" style=\"box-sizing: inherit; height: auto; max-width: 100%; margin-top: 30px;\" /></a></p>\r\n   <br style=\"box-sizing: inherit;\" />\r\n   <h4 id=\"사용법\" style=\"box-sizing: inherit; margin: 0px 0px 0.8em; padding: 0px; font-size: 1.25em; font-weight: 400; color: #363636; line-height: 1.125; scroll-margin: 1em;\"><a href=\"https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/#%EC%82%AC%EC%9A%A9%EB%B2%95\" class=\"headerlink\" title=\"사용법\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"></a>사용법</h4>\r\n   <ol style=\"box-sizing: inherit; margin: 1em 0px 1em 2em; padding: 0px; list-style-position: outside;\">\r\n      <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">\r\n         <p style=\"box-sizing: inherit; padding: 0px;\">ESP32는 16개의 PWM채널이 있으므로, 최대 16개의 서보모터를 동시에 제어할 수 있다.</p>\r\n         </li>\r\n      <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n         <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">서보모터 데이터 시트의 스펙상으로는…</p>\r\n         <ul style=\"box-sizing: inherit; margin: 1em 0px 0px 2em; padding: 0px; list-style: outside disc;\">\r\n            <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">대부분의 서보모터(<span style=\"box-sizing: inherit; color: #363636; font-weight: 700;\">SG90, MG90S, MG966R</span>&nbsp;등 포함)는 위의 그림처럼 20ms가 1주기가 되므로, PWM frequency를 50Hz로 설정한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">20ms가 1주기이고, HIGH 펄스가 2ms 지속될 때 180º 회전을 한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">그러므로, 전체 펄스 폭의 1/10만큼 HIGH 펄스가 주어지면 180º 회전을 한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">Resolution이 16비트라면 65535의 1/10에 해당하는&nbsp;<del style=\"box-sizing: inherit;\">6554</del>의 값이 duty값으로 주어지면 서보모터는 180º 회전을 한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\"><del style=\"box-sizing: inherit;\">데이터 시트에 나온 스펙에 따라서, 16비트 해상도에서 duty값에 따른 회전 각도</del></p>\r\n               <ul style=\"box-sizing: inherit; margin: 0.5em 0px 0px 2em; padding: 0px; list-style: outside circle;\">\r\n                  <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">\r\n                     <p style=\"box-sizing: inherit; padding: 0px;\"><del style=\"box-sizing: inherit;\">PWM 5% : 3277 → 0º</del></p>\r\n                     </li>\r\n                  <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n                     <p style=\"box-sizing: inherit; padding: 0px;\"><del style=\"box-sizing: inherit;\">PWM 7.5% : 4915 → 90º</del></p>\r\n                     </li>\r\n                  <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n                     <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\"><del style=\"box-sizing: inherit;\">PWM 10% : 6554 → 180º</del></p>\r\n                     <p style=\"box-sizing: inherit; padding: 0px;\">라고 생각했으나, 실제로는 이와 달랐다.</p>\r\n                     </li>\r\n                  </ul>\r\n               </li>\r\n            </ul>\r\n         </li>\r\n      <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n         <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\"><span style=\"box-sizing: inherit; color: #363636; font-weight: 700;\">MG90S</span></p>\r\n         <ul style=\"box-sizing: inherit; margin: 1em 0px 0px 2em; padding: 0px; list-style: outside disc;\">\r\n            <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">16비트 해상도(0~65535)에서 duty값에 따른 회전 각도는</p>\r\n               <ul style=\"box-sizing: inherit; margin: 0.5em 0px 0px 2em; padding: 0px; list-style: outside circle;\">\r\n                  <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">PWM 2.5% : 1639 → 0º</li>\r\n                  <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">PWM 7.5% : 4915 → 90º</li>\r\n                  <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">PWM 12.5% : 8191 → 180º</li>\r\n                  </ul>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">즉, 각도에 따른 PWM값은 다음과 같이 지정한다.<br style=\"box-sizing: inherit;\" /><span class=\"MathJax_Preview\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: inherit;\"></span><span class=\"mjx-chtml MJXc-display\" style=\"box-sizing: inherit; display: block; line-height: 0; text-align: center; font-size: 18.2px; letter-spacing: normal; overflow-wrap: normal; word-spacing: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; margin: 1em 0px; padding: 0px;\"><span id=\"MathJax-Element-1-Frame\" class=\"mjx-chtml MathJax_CHTML\" tabindex=\"0\" data-mathml=\"<math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;><mi>P</mi><mi>W</mi><mi>M</mi><mo>=</mo><msup><mn>2</mn><mrow class=&quot;MJX-TeXAtom-ORD&quot;><mn>16</mn></mrow></msup><mo>&amp;#x00D7;</mo><mn>0.1</mn><mo>&amp;#x00D7;</mo><mfrac><mrow><mi>a</mi><mi>n</mi><mi>g</mi><mi>l</mi><mi>e</mi></mrow><mn>180</mn></mfrac><mo>+</mo><msup><mn>2</mn><mrow class=&quot;MJX-TeXAtom-ORD&quot;><mn>16</mn></mrow></msup><mo>&amp;#x00D7;</mo><mn>0.025</mn><mo>=</mo><msup><mn>2</mn><mrow class=&quot;MJX-TeXAtom-ORD&quot;><mn>16</mn></mrow></msup><mo>&amp;#x00D7;</mo><mn>0.1</mn><mo>&amp;#x00D7;</mo><mo stretchy=&quot;false&quot;>(</mo><mfrac><mrow><mi>a</mi><mi>n</mi><mi>g</mi><mi>l</mi><mi>e</mi></mrow><mn>180</mn></mfrac><mo>+</mo><mn>0.25</mn><mo stretchy=&quot;false&quot;>)</mo></math>\" role=\"presentation\" style=\"box-sizing: inherit; display: inline-block; line-height: 0; font-size: 18.2px; overflow-wrap: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; margin: 0px; padding: 1px 0px; position: relative;\"><span id=\"MJXc-Node-1\" class=\"mjx-math\" aria-hidden=\"true\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; display: inline-block; border-collapse: separate; border-spacing: 0px;\"><span id=\"MJXc-Node-2\" class=\"mjx-mrow\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; text-align: left; box-sizing: content-box !important;\"><span id=\"MJXc-Node-3\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.442em; padding-bottom: 0.277em; padding-right: 0.109em; box-sizing: content-box !important;\">P</span></span><span id=\"MJXc-Node-4\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.442em; padding-bottom: 0.277em; padding-right: 0.104em; box-sizing: content-box !important;\">W</span></span><span id=\"MJXc-Node-5\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.442em; padding-bottom: 0.277em; padding-right: 0.081em; box-sizing: content-box !important;\">M</span></span><span id=\"MJXc-Node-6\" class=\"mjx-mo MJXc-space3\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.278em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.058em; padding-bottom: 0.332em; box-sizing: content-box !important;\">=</span></span><span id=\"MJXc-Node-7\" class=\"mjx-msubsup MJXc-space3\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.278em; box-sizing: content-box !important;\"><span class=\"mjx-base\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-8\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.332em; box-sizing: content-box !important;\">2</span></span></span><span class=\"mjx-sup\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; font-size: 12.8674px; vertical-align: 0.591em; padding-left: 0px; padding-right: 0.071em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-9\" class=\"mjx-texatom\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-10\" class=\"mjx-mrow\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-11\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">16</span></span></span></span></span></span><span id=\"MJXc-Node-12\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.223em; padding-bottom: 0.332em; box-sizing: content-box !important;\">×</span></span><span id=\"MJXc-Node-13\" class=\"mjx-mn MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">0.1</span></span><span id=\"MJXc-Node-14\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.223em; padding-bottom: 0.332em; box-sizing: content-box !important;\">×</span></span><span id=\"MJXc-Node-15\" class=\"mjx-mfrac MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-box MJXc-stacked\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; height: 0px; position: relative; width: 2.573em; padding: 0px 0.12em; box-sizing: content-box !important;\"><span class=\"mjx-numerator\" style=\"font-style: inherit; font-weight: inherit; display: block; text-align: center; position: absolute; width: 2.573em; top: -1.431em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-16\" class=\"mjx-mrow\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; text-align: left; box-sizing: content-box !important;\"><span id=\"MJXc-Node-17\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.277em; box-sizing: content-box !important;\">a</span></span><span id=\"MJXc-Node-18\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.277em; box-sizing: content-box !important;\">n</span></span><span id=\"MJXc-Node-19\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.497em; padding-right: 0.003em; box-sizing: content-box !important;\">g</span></span><span id=\"MJXc-Node-20\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.497em; padding-bottom: 0.277em; box-sizing: content-box !important;\">l</span></span><span id=\"MJXc-Node-21\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.277em; box-sizing: content-box !important;\">e</span></span></span></span><span class=\"mjx-denominator\" style=\"font-style: inherit; font-weight: inherit; display: block; text-align: center; position: absolute; width: 2.573em; bottom: -0.733em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-22\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; text-align: left; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">180</span></span></span><span class=\"mjx-line\" style=\"font-style: inherit; font-weight: inherit; display: block; position: absolute; height: 0px; border-bottom: 1.3px solid; top: -0.284em; width: 2.573em; box-sizing: content-box !important;\"></span></span><span class=\"mjx-vsize\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; width: 0px; height: 2.164em; vertical-align: -0.733em; box-sizing: content-box !important;\"></span></span><span id=\"MJXc-Node-23\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.277em; padding-bottom: 0.442em; box-sizing: content-box !important;\">+</span></span><span id=\"MJXc-Node-24\" class=\"mjx-msubsup MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-base\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-25\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.332em; box-sizing: content-box !important;\">2</span></span></span><span class=\"mjx-sup\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; font-size: 12.8674px; vertical-align: 0.591em; padding-left: 0px; padding-right: 0.071em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-26\" class=\"mjx-texatom\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-27\" class=\"mjx-mrow\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-28\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">16</span></span></span></span></span></span><span id=\"MJXc-Node-29\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.223em; padding-bottom: 0.332em; box-sizing: content-box !important;\">×</span></span><span id=\"MJXc-Node-30\" class=\"mjx-mn MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">0.025</span></span><span id=\"MJXc-Node-31\" class=\"mjx-mo MJXc-space3\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.278em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.058em; padding-bottom: 0.332em; box-sizing: content-box !important;\">=</span></span><span id=\"MJXc-Node-32\" class=\"mjx-msubsup MJXc-space3\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.278em; box-sizing: content-box !important;\"><span class=\"mjx-base\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-33\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.332em; box-sizing: content-box !important;\">2</span></span></span><span class=\"mjx-sup\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; font-size: 12.8674px; vertical-align: 0.591em; padding-left: 0px; padding-right: 0.071em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-34\" class=\"mjx-texatom\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-35\" class=\"mjx-mrow\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span id=\"MJXc-Node-36\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">16</span></span></span></span></span></span><span id=\"MJXc-Node-37\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.223em; padding-bottom: 0.332em; box-sizing: content-box !important;\">×</span></span><span id=\"MJXc-Node-38\" class=\"mjx-mn MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">0.1</span></span><span id=\"MJXc-Node-39\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.223em; padding-bottom: 0.332em; box-sizing: content-box !important;\">×</span></span><span id=\"MJXc-Node-40\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.442em; padding-bottom: 0.607em; box-sizing: content-box !important;\">(</span></span><span id=\"MJXc-Node-41\" class=\"mjx-mfrac\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-box MJXc-stacked\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; height: 0px; position: relative; width: 2.573em; padding: 0px 0.12em; box-sizing: content-box !important;\"><span class=\"mjx-numerator\" style=\"font-style: inherit; font-weight: inherit; display: block; text-align: center; position: absolute; width: 2.573em; top: -1.431em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-42\" class=\"mjx-mrow\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; text-align: left; box-sizing: content-box !important;\"><span id=\"MJXc-Node-43\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.277em; box-sizing: content-box !important;\">a</span></span><span id=\"MJXc-Node-44\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.277em; box-sizing: content-box !important;\">n</span></span><span id=\"MJXc-Node-45\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.497em; padding-right: 0.003em; box-sizing: content-box !important;\">g</span></span><span id=\"MJXc-Node-46\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.497em; padding-bottom: 0.277em; box-sizing: content-box !important;\">l</span></span><span id=\"MJXc-Node-47\" class=\"mjx-mi\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-math-I\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-math-I, MJXc-TeX-math-Ix, MJXc-TeX-math-Iw; padding-top: 0.223em; padding-bottom: 0.277em; box-sizing: content-box !important;\">e</span></span></span></span><span class=\"mjx-denominator\" style=\"font-style: inherit; font-weight: inherit; display: block; text-align: center; position: absolute; width: 2.573em; bottom: -0.733em; box-sizing: content-box !important;\"><span id=\"MJXc-Node-48\" class=\"mjx-mn\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; text-align: left; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">180</span></span></span><span class=\"mjx-line\" style=\"font-style: inherit; font-weight: inherit; display: block; position: absolute; height: 0px; border-bottom: 1.3px solid; top: -0.284em; width: 2.573em; box-sizing: content-box !important;\"></span></span><span class=\"mjx-vsize\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; width: 0px; height: 2.164em; vertical-align: -0.733em; box-sizing: content-box !important;\"></span></span><span id=\"MJXc-Node-49\" class=\"mjx-mo MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.277em; padding-bottom: 0.442em; box-sizing: content-box !important;\">+</span></span><span id=\"MJXc-Node-50\" class=\"mjx-mn MJXc-space2\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; margin-left: 0.222em; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.387em; padding-bottom: 0.387em; box-sizing: content-box !important;\">0.25</span></span><span id=\"MJXc-Node-51\" class=\"mjx-mo\" style=\"font-style: inherit; font-weight: inherit; display: inline-block; box-sizing: content-box !important;\"><span class=\"mjx-char MJXc-TeX-main-R\" style=\"font-style: inherit; font-weight: inherit; display: block; white-space-collapse: preserve; font-family: MJXc-TeX-main-R, MJXc-TeX-main-Rw; padding-top: 0.442em; padding-bottom: 0.607em; box-sizing: content-box !important;\">)</span></span></span></span><span class=\"MJX_Assistive_MathML MJX_Assistive_MathML_Block\" role=\"presentation\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; top: 0px; left: 0px; clip: rect(1px, 1px, 1px, 1px); user-select: none; width: 561.609px; position: absolute !important; padding: 1px 0px 0px !important; border: 0px !important; height: 1px !important; overflow: hidden !important; display: block !important;\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><mi>�</mi><mi>�</mi><mi>�</mi><mo>=</mo><msup><mn>2</mn><mrow class=\"MJX-TeXAtom-ORD\"><mn>16</mn></mrow></msup><mo>×</mo><mn>0.1</mn><mo>×</mo><mfrac><mrow><mi>�</mi><mi>�</mi><mi>�</mi><mi>�</mi><mi>�</mi></mrow><mn>180</mn></mfrac><mo>+</mo><msup><mn>2</mn><mrow class=\"MJX-TeXAtom-ORD\"><mn>16</mn></mrow></msup><mo>×</mo><mn>0.025</mn><mo>=</mo><msup><mn>2</mn><mrow class=\"MJX-TeXAtom-ORD\"><mn>16</mn></mrow></msup><mo>×</mo><mn>0.1</mn><mo>×</mo><mo stretchy=\"false\">(</mo><mfrac><mrow><mi>�</mi><mi>�</mi><mi>�</mi><mi>�</mi><mi>�</mi></mrow><mn>180</mn></mfrac><mo>+</mo><mn>0.25</mn><mo stretchy=\"false\">)</mo></math></span></span></span></p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">그리고, 이 서보모터 스펙상 180도 회전을 하지만 PWM 값을 조절하면 최대 190도 정도까지는 회전한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">그러므로, map 함수를 사용하여 다음과 같이 각도를 조절한다.</p>\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">duty = map(deg, 0, 180, 1638, 8191);</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">이에 따라, 12비트 해상도(0~4095)에서 duty값에 따른 회전 각도는</p>\r\n               <ul style=\"box-sizing: inherit; margin: 0.5em 0px 0px 2em; padding: 0px; list-style: outside circle;\">\r\n                  <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">PWM 2.5% : 103 → 0º</li>\r\n                  <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">PWM 7.5% : 307 → 90º</li>\r\n                  <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">PWM 12.5% : 511 → 180º</li>\r\n                  </ul>\r\n               </li>\r\n            </ul>\r\n         </li>\r\n      <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n         <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">MG996R</p>\r\n         <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">duty = map(deg, 0, 180, 2720, 8191);</p>\r\n         <p style=\"box-sizing: inherit; padding: 0px;\">가 가장 적당한 값을 나타내었다. (4.15% ~ 12.5%) (이유는 잘 모르겠음)</p>\r\n         </li>\r\n      <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n         <p style=\"box-sizing: inherit; padding: 0px;\">이런 내용을 종합해 볼때,&nbsp;<span style=\"box-sizing: inherit; color: #363636; font-weight: 700;\">기기 데이터시트의 스펙과는 관계없이, 테스트를 통해 경험적으로 값을 찾아야 하는 듯…</span></p>\r\n         </li>\r\n      <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n         <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">delay( );</p>\r\n         <ul style=\"box-sizing: inherit; margin: 1em 0px 0px 2em; padding: 0px; list-style: outside disc;\">\r\n            <li style=\"box-sizing: inherit; margin: 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">서보 회전 속도를 조절하며, 숫자가 작을 수록 빠르게 회전한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">이동하는 각도만큼 돌아갈 수 있는 충분한 시간을 주어야한다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">(전류가 약하면) delay( ) 값이 너무 작을 경우 원하는 각도의 회전을 완성하지 못할 수도 있다.</p>\r\n               </li>\r\n            <li style=\"box-sizing: inherit; margin: 0.25em 0px 0px; padding: 0px;\">\r\n               <p style=\"box-sizing: inherit; padding: 0px;\">전류가 충분하면 delay값을 줄여도 됨.</p>\r\n               </li>\r\n            </ul>\r\n         </li>\r\n      </ol>\r\n   <br style=\"box-sizing: inherit;\" /><br style=\"box-sizing: inherit;\" />\r\n   <h3 id=\"Servo-라이브러리를-이용하지-않는-경우\" style=\"box-sizing: inherit; margin: 1.3333em 0px 0.6666em; padding: 0px; font-size: 1.5em; font-weight: 400; color: #363636; line-height: 1.125; scroll-margin: 1em;\"><a href=\"https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/#Servo-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B2%BD%EC%9A%B0\" class=\"headerlink\" title=\"Servo 라이브러리를 이용하지 않는 경우\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"></a>Servo 라이브러리를 이용하지 않는 경우</h3>\r\n   <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">일반적으로 아두이노에서 서보모터를 사용하는 경우 아두이노 IDE에 기본적으로 포함되어 있는 &lt;Servo.h&gt; 라이브러리를 사용하면 되지만 이 라이브러리는 ESP32에서 사용할 수 없다. 그러므로 ESP32에 맞는 별도의 Servo.h 라이브러리를 다운로드 받아 사용해야하는 불편함이 있다. 또한 ESP32servo와 같은 ESP32용 라이브러리를 사용할 경우, 라이브러리에 따라 ledcWrite를 사용할 수 없는 경우도 있다.</p>\r\n   <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\">그러므로, 여기서는 라이브러리를 사용하지 않고 PWM을 사용하여 ESP32로 MG90 서보모터를 제어해보고자 한다.</p>\r\n   <h4 id=\"schematic\" style=\"box-sizing: inherit; margin: 0px 0px 0.8em; padding: 0px; font-size: 1.25em; font-weight: 400; color: #363636; line-height: 1.125; letter-spacing: -0.3px; scroll-margin: 1em;\">schematic</h4>\r\n   <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px; font-size: 18.2px; letter-spacing: -0.3px;\"><a class=\"gallery-item\" href=\"https://stemwith.github.io/image/SG90.png\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"><img src=\"https://stemwith.github.io/image/SG90.png\" style=\"box-sizing: inherit; height: auto; max-width: 100%; margin-top: 30px;\" /></a></p>\r\n   <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\"><br style=\"box-sizing: inherit; font-size: 18.2px; letter-spacing: -0.3px;\" /></p>\r\n   <h4 id=\"sketch\" style=\"box-sizing: inherit; margin: 0px 0px 0.8em; padding: 0px; font-size: 1.25em; font-weight: 400; color: #363636; line-height: 1.125; letter-spacing: -0.3px; scroll-margin: 1em;\"><a href=\"https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/#sketch\" class=\"headerlink\" title=\"sketch\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"></a>sketch</h4>\r\n   <figure class=\"highlight c hljs\" id=\"code-1687869426605667\" style=\"box-sizing: inherit; margin-top: 2em; margin-bottom: 2em; padding: 0px; overflow: hidden; background: rgb(39, 40, 34); color: #dddddd; max-width: 100%; text-align: center; width: 867px; position: relative; border-radius: 4px; font-size: 18.2px; letter-spacing: -0.3px; margin-right: 0px !important; margin-left: 0px !important;\">\r\n      <figcaption class=\"level is-mobile\" style=\"box-sizing: inherit; align-items: center; justify-content: space-between; display: flex; background: rgba(200, 200, 200, 0.15); padding: 0.3em 0em 0.3em 0.75em; font-size: 0.8em; margin-bottom: 1.5rem; overflow: auto; margin-top: 0px !important; margin-right: 0px !important; margin-left: 0px !important;\">\r\n         <div class=\"level-left\" style=\"box-sizing: inherit; flex: 0 0 auto; align-items: center; justify-content: flex-start; display: flex; color: inherit;\"><span class=\"fold\" style=\"box-sizing: inherit; font-style: inherit; color: inherit; font-family: &quot;Source Code Pro&quot;, monospace, &quot;Microsoft YaHei&quot;; cursor: pointer;\"><span class=\"fas fa-angle-down\" style=\"box-sizing: inherit; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; text-rendering: auto; line-height: inherit; font-family: &quot;Font Awesome 5 Free&quot;; font-weight: 900; color: inherit;\"></span></span></div>\r\n         <div class=\"level-right\" style=\"box-sizing: inherit; flex: 0 0 auto; align-items: center; justify-content: flex-end; display: flex; color: inherit; margin-top: 0px;\"><a class=\"copy\" title=\"Copy\" data-clipboard-target=\"#code-1687869426605667 .code\" style=\"box-sizing: inherit; color: inherit; cursor: pointer; opacity: 0.7; padding: 0em 0.75em;\"><span class=\"fas fa-copy\" style=\"box-sizing: inherit; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; text-rendering: auto; line-height: inherit; font-family: &quot;Font Awesome 5 Free&quot;; font-weight: 900; color: inherit;\"></span></a></div>\r\n         </figcaption>\r\n      <div class=\"highlight-body\" style=\"box-sizing: inherit; overflow: auto;\">\r\n         <table style=\"box-sizing: inherit; border-spacing: 0px; width: auto;\">\r\n            <tbody style=\"box-sizing: inherit;\">\r\n               <tr style=\"box-sizing: inherit;\">\r\n                  <td class=\"gutter\" style=\"box-sizing: inherit; padding: 0.5em 0.75em; vertical-align: top; text-align: right; border-style: none; border-color: initial; border-top-width: initial; border-right-width: initial; border-bottom-width: 0px; border-left-width: initial; background: rgba(200, 200, 200, 0.15);\">\r\n                     <pre style=\"box-sizing: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px; -webkit-font-smoothing: auto; font-family: &quot;Source Code Pro&quot;, monospace, &quot;Microsoft YaHei&quot;; background: transparent; color: inherit; font-size: 0.85em; overflow: visible; overflow-wrap: normal; max-width: 100%;\"><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">1</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">2</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">3</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">4</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">5</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">6</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">7</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">8</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">9</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">10</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">11</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">12</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">13</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">14</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">15</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">16</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">17</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">18</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">19</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">20</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">21</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">22</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">23</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">24</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">25</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">26</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">27</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">28</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">29</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">30</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">31</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">32</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">33</span><br style=\"box-sizing: inherit;\" /></pre>\r\n                     </td>\r\n                  <td class=\"code\" style=\"box-sizing: inherit; padding: 0.5em 0.75em; vertical-align: top; border-style: none; border-color: initial; border-top-width: initial; border-right-width: initial; border-bottom-width: 0px; border-left-width: initial;\">\r\n                     <pre style=\"box-sizing: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px; -webkit-font-smoothing: auto; font-family: &quot;Source Code Pro&quot;, monospace, &quot;Microsoft YaHei&quot;; background: transparent; color: inherit; font-size: 0.85em; overflow: visible; overflow-wrap: normal; max-width: 100%;\"><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">const</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> ledPin = <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">15</span>;  <span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// corresponds to GPIO 15</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// setting PWM properties</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">const</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> ledChannel = <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">0</span>;</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">const</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> freq = <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">50</span>;</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">const</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> resolution = <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">16</span>;</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> deg, duty;</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-function\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">void</span><span class=\"hljs-title\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #a6e22e;\">setup</span><span class=\"hljs-params\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">()</span></span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-function\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\"></span>{</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// PWM Setup</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">  ledcSetup(ledChannel, freq, resolution);  <span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// PWM CH0, Frequncy 50 Hz, 16bit resolution</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">  ledcAttachPin(ledPin, ledChannel);        <span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// PWM CH0을 GPIO 15번으로 출력</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">}</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-function\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">void</span><span class=\"hljs-title\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #a6e22e;\">loop</span><span class=\"hljs-params\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">()</span></span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-function\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\"></span>{</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">for</span> (deg = <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">0</span>;deg &lt;= <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">180</span>; deg++) {</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">  servoWrite(ledChannel, deg);</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">  }</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">for</span> (deg = <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">180</span>;deg &gt;= <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">0</span>; deg--) {</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">  servoWrite(ledChannel, deg);</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">  }</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">}</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// deg는 0~180도 까지</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-function\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">void</span><span class=\"hljs-title\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #a6e22e;\">servoWrite</span><span class=\"hljs-params\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">(<span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> ch, <span class=\"hljs-keyword\" style=\"box-sizing: inherit; font-style: inherit; font-weight: bold; color: #f92672;\">int</span> deg)</span></span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\"><span class=\"hljs-function\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\"></span>{</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">    duty = <span class=\"hljs-built_in\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #a6e22e;\">map</span>(deg, <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">0</span>, <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">180</span>, <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">1638</span>, <span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">8192</span>);</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">    ledcWrite(ch, duty);</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">    delay(<span class=\"hljs-number\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit;\">15</span>);                             <span class=\"hljs-comment\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; color: #75715e;\">// delay를 줄이면 180도가 완전히 돌지 않음</span></span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">}</span><br style=\"box-sizing: inherit;\" /></pre>\r\n                     </td>\r\n                  </tr>\r\n               </tbody>\r\n            </table>\r\n         </div>\r\n      </figure>\r\n   <p style=\"box-sizing: inherit; margin-bottom: 1em; padding: 0px;\"><br style=\"box-sizing: inherit; font-size: 18.2px; letter-spacing: -0.3px;\" /></p>\r\n   <h4 id=\"sketch-시리얼-모니터에-입력한-문자로-서보모터-회전시키기\" style=\"box-sizing: inherit; margin: 0px 0px 0.8em; padding: 0px; font-size: 1.25em; font-weight: 400; color: #363636; line-height: 1.125; letter-spacing: -0.3px; scroll-margin: 1em;\"><a href=\"https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/#sketch-%EC%8B%9C%EB%A6%AC%EC%96%BC-%EB%AA%A8%EB%8B%88%ED%84%B0%EC%97%90-%EC%9E%85%EB%A0%A5%ED%95%9C-%EB%AC%B8%EC%9E%90%EB%A1%9C-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%ED%9A%8C%EC%A0%84%EC%8B%9C%ED%82%A4%EA%B8%B0\" class=\"headerlink\" title=\"sketch: 시리얼 모니터에 입력한 문자로 서보모터 회전시키기\" style=\"box-sizing: inherit; color: #363636; cursor: pointer; text-decoration-line: none;\" target=\"_blank\"></a>sketch: 시리얼 모니터에 입력한 문자로 서보모터 회전시키기</h4>\r\n   <figure class=\"highlight c hljs\" id=\"code-1687869426606974\" style=\"box-sizing: inherit; margin-top: 2em; margin-bottom: 2em; padding: 0px; overflow: hidden; background: rgb(39, 40, 34); color: #dddddd; max-width: 100%; text-align: center; width: 867px; position: relative; border-radius: 4px; font-size: 18.2px; letter-spacing: -0.3px; margin-right: 0px !important; margin-left: 0px !important;\">\r\n      <figcaption class=\"level is-mobile\" style=\"box-sizing: inherit; align-items: center; justify-content: space-between; display: flex; background: rgba(200, 200, 200, 0.15); padding: 0.3em 0em 0.3em 0.75em; font-size: 0.8em; margin-bottom: 1.5rem; overflow: auto; margin-top: 0px !important; margin-right: 0px !important; margin-left: 0px !important;\">\r\n         <div class=\"level-left\" style=\"box-sizing: inherit; flex: 0 0 auto; align-items: center; justify-content: flex-start; display: flex; color: inherit;\"><span class=\"fold\" style=\"box-sizing: inherit; font-style: inherit; color: inherit; font-family: &quot;Source Code Pro&quot;, monospace, &quot;Microsoft YaHei&quot;; cursor: pointer;\"><span class=\"fas fa-angle-down\" style=\"box-sizing: inherit; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; text-rendering: auto; line-height: inherit; font-family: &quot;Font Awesome 5 Free&quot;; font-weight: 900; color: inherit;\"></span></span></div>\r\n         <div class=\"level-right\" style=\"box-sizing: inherit; flex: 0 0 auto; align-items: center; justify-content: flex-end; display: flex; color: inherit; margin-top: 0px;\"><a class=\"copy\" title=\"Copy\" data-clipboard-target=\"#code-1687869426606974 .code\" style=\"box-sizing: inherit; color: inherit; cursor: pointer; opacity: 0.7; padding: 0em 0.75em;\"><span class=\"fas fa-copy\" style=\"box-sizing: inherit; -webkit-font-smoothing: antialiased; display: inline-block; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; text-rendering: auto; line-height: inherit; font-family: &quot;Font Awesome 5 Free&quot;; font-weight: 900; color: inherit;\"></span></a></div>\r\n         </figcaption>\r\n      <div class=\"highlight-body\" style=\"box-sizing: inherit; overflow: auto;\">\r\n         <table style=\"box-sizing: inherit; border-spacing: 0px; width: auto;\">\r\n            <tbody style=\"box-sizing: inherit;\">\r\n               <tr style=\"box-sizing: inherit;\">\r\n                  <td class=\"gutter\" style=\"box-sizing: inherit; padding: 0.5em 0.75em; vertical-align: top; text-align: right; border-style: none; border-color: initial; border-top-width: initial; border-right-width: initial; border-bottom-width: 0px; border-left-width: initial; background: rgba(200, 200, 200, 0.15);\">\r\n                     <pre style=\"box-sizing: inherit; margin-top: 0px; margin-bottom: 0px; padding: 0px; -webkit-font-smoothing: auto; font-family: &quot;Source Code Pro&quot;, monospace, &quot;Microsoft YaHei&quot;; background: transparent; color: inherit; font-size: 0.85em; overflow: visible; overflow-wrap: normal; max-width: 100%;\"><span class=\"line\" style=\"box-sizing: inherit; font-style: inherit; font-weight: inherit; line-height: 1.5rem;\">1</span><br style=\"box-sizing: inherit;\" /><span class=\"line\" style=\"box-sizing: inheri','https://stemwith.github.io/2020/10/19/ESP32-%EC%84%9C%EB%B3%B4%EB%AA%A8%ED%84%B0-%EC%A0%9C%EC%96%B4/','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-06-27 21:39:57',0,'2023-06-27 21:39:57','192.168.219.116','','','','','','','','','','','',''),(606,-603,'',606,0,0,'','','html1','[Arduino] Esp8266 NodeMcu 및 ESP32 Dev Module, stack 오류','<p>&nbsp;<span style=\"background-color: #ffffff; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px;\">아두이노 IDE에서 여러 번&nbsp;다른 스케치의&nbsp;업로드를 반복하다 보면 알 수 없는 stack 에러가 발생하게 된다. 필자는 ESP32 보드에서도 발생한 적이 있었으며,&nbsp;전날까지 잘되었던&nbsp;NodeMcu의 와이파이 제어 테스트가&nbsp;오늘은 안 되는 것이다.&nbsp;</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">기본 예제파일을 올린 뒤 살펴본&nbsp;후 어제 테스트한 파일을 업로드하고 안드로이드 앱으로 연결을 시도했으나 응답 요청에 대한 응답을 받지&nbsp;못해 시간 초과로 wifi 제어 프로세스가 종료되거나 잠깐 연결은 되었으나 버튼 몇 개 누르면 stack 오류 또는 응답 시간 초과로 프로세스가 종료되고 한참 뒤에 시리얼 모니터에 버튼에 대한 반응이 출력되곤&nbsp;했다.&nbsp; 또 다른 증상으로는 soft&nbsp;AP에 대한 스마트폰 와이파이 연결이 잘 안 된다는 것이다. 여러 번 시도해야 연결되거나 한참을 기다려야 연결이 되는 증상이 나타났다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">여러 번 시도해 보고 스케치의 코드도 재차 확인해 보았으나 별 다른 특이사항을 찾을 수가 없었다. 그도 그럴 것이 수정한 것도 없었기 때문이다. 혹시나 하여 NodeMcu에 연결된&nbsp;LED와 가변저항을 제거해서도 테스트해보았으나 결과는 같았다. 그러던 중 예전에 ESP32 보드에서 stack 오류 발생 시 해결했던 방법이 생각이나 그 방법을 적용해 보았다.</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">그때 당시 ESP32 보드에서의 stack 오류 해결을 위해&nbsp;인터넷에서 검색해 본 결과, 아두이노 IDE에서 ESP32 보드에 스케치를 올릴 때 보통 flash를 지운 뒤 업로드를 하나 지워지지 않은&nbsp;영역(주로 wifi 관련 ssid 또는 password 저장 영역 - 이전 접속 시 설정했던 정보들이 남아있는 경우)이 발생할 수 있고 이로 인해 stack오류가 발생할 수 있다는 글을 본 적이 있다. 해결책으로 flash를 완전히 지우는 프로그램을 사용하여 깨끗이 지운 뒤 스케치를 업로드해보라는 것이었고 ESP8266 보드에도 적용된다는 내용이었다.</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">그때 다운로드해놓은 프로그램을 사용하여 NodeMcu의 flash를 지우고 반나절을 허비한 끝에 해결하게 되었다.</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">새로 업로드한 스케치가 wifi 관련 기본 예제였었고 ssid와 password가 변경된 상태였으며&nbsp;그때 저장된 wifi ssid 및 password 데이터가 삭제되지 않고 남아있어 발생한 오류인 거 같다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">만약, 상기의 증상이 나타나게 되면 첨부한 프로그램을 사용하여 flash를 모두 지운 뒤 스케치를 업로드해보기 바란다.</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">사용방법은 아래 그림을 참조하기 바란다. 프로그램 실행 시 아두이노 IDE 시리얼 모니터는&nbsp;종료시켜야 한다.</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<br style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\" />\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"fileblock\" data-ke-align=\"alignCenter\" style=\"margin: 28px auto 20px; max-width: 100%; clear: both; width: 470px; height: 71px; border: 1px solid rgb(233, 233, 233); position: relative; border-radius: 1px; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><a href=\"https://blog.kakaocdn.net/dn/bBR0oe/btrc9ekP9M8/lXBKRpLFFIhPeaA1VBWuF1/flash_download_tools_v3.6.3_0.rar?attach=1&amp;knm=tfile.rar\" class=\"\" style=\"color: #000000; text-decoration-line: none; transition: all 0.3s ease 0s; display: block; height: 71px;\" target=\"_blank\">\r\n      <div class=\"image\" style=\"box-sizing: border-box; position: absolute; left: 0px; top: 0px; width: 30px; height: 30px; background-image: url(&quot;https://t1.daumcdn.net/tistory_admin/static/manage/post-editor/img_editor_content.svg&quot;); background-position: 0px 0px; margin: 21px 17px 20px 22px;\">&nbsp;</div>\r\n      <div class=\"desc\" style=\"box-sizing: border-box; position: absolute; inset: 0px 60px 0px 70px;\">\r\n         <div class=\"filename\" style=\"box-sizing: border-box; color: #333333; font-size: 14px; text-overflow: ellipsis; height: 20px; margin: 17px 0px 0px;\"><span class=\"name\" style=\"box-sizing: border-box; text-wrap: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 272px; height: 20px; display: block;\">flash_download_tools_v3.6.3_0.rar</span></div>\r\n         <div class=\"size\" style=\"box-sizing: border-box; font-family: &quot;Avenir Next&quot;, sans-serif; font-size: 12px; color: #777777; height: 16px; margin: 2px 0px 0px;\">6.61MB</div>\r\n         </div>\r\n      </a></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"900\" data-origin-height=\"369\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://t1.daumcdn.net/cfile/tistory/99F253495CE8B2B316?original\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/99F253495CE8B2B316\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F253495CE8B2B316\" width=\"900\" data-origin-width=\"900\" data-origin-height=\"369\" style=\"border: 0px; max-width: 100%; display: inline-block; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<div style=\"box-sizing: border-box; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; position: relative; overflow: hidden;\">&nbsp;</div>\r\n<div style=\"box-sizing: border-box; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; position: relative; overflow: hidden;\">\r\n   <p data-ke-size=\"size16\" style=\"padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n   </div>\r\n<div style=\"box-sizing: border-box; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; position: relative; overflow: hidden;\">&nbsp;</div>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"900\" data-origin-height=\"464\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://t1.daumcdn.net/cfile/tistory/99E19F495CE8B2B310?original\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/99E19F495CE8B2B310\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99E19F495CE8B2B310\" width=\"900\" data-origin-width=\"900\" data-origin-height=\"464\" style=\"border: 0px; max-width: 100%; display: inline-block; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"900\" data-origin-height=\"556\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://t1.daumcdn.net/cfile/tistory/998945495CE8B2B312?original\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/998945495CE8B2B312\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F998945495CE8B2B312\" width=\"900\" data-origin-width=\"900\" data-origin-height=\"556\" style=\"border: 0px; max-width: 100%; display: inline-block; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"900\" data-origin-height=\"554\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://t1.daumcdn.net/cfile/tistory/999AE2495CE8B2B418?original\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/999AE2495CE8B2B418\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F999AE2495CE8B2B418\" width=\"900\" data-origin-width=\"900\" data-origin-height=\"554\" style=\"border: 0px; max-width: 100%; display: inline-block; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"450\" data-origin-height=\"189\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://t1.daumcdn.net/cfile/tistory/99F1D3495CE8B2B416?original\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/99F1D3495CE8B2B416\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F99F1D3495CE8B2B416\" width=\"450\" data-origin-width=\"450\" data-origin-height=\"189\" style=\"border: 0px; max-width: 100%; display: inline-block; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">ESP8266 및 ESP32 리부팅 오류 발생 코드 위치 확인 프로그램 EspExceptionDecoder</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">ESP8266 및 ESP32에 아두이노를 이용하여 프로그래밍하다 보면 예상치 못하는 오류를 맞이 하게 된다.&nbsp;</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">주요 오류로는&nbsp;</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">1. 컴파일 시 발생 오류: 변수 누락 또는 오탈자, 스케치를 위한 공간 부족 등으로 아두이노 IDE 프로그램에서 관련 오류에 표시를 해주므로 쉽게 파악이 가능하다.</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">특이한 오류로써 SPIFF 파일 시스템을 사용할 때 발생하는 아래 오류는&nbsp;<span style=\"box-sizing: border-box;\">SPIFF로 데이터 저장 및 불러오는 코드가 과도할 때? 발생하는 것 같다. 아래 오류가 발생한다면 오류가 발생하는 시점에 작업했던 SPIFF 관련 함수를 최적화해주어야 한다(FS.h 라이브러리에서 발생한 것을 알 수 있다). SPIFF 관련 함수 내에 데이터 소팅을 위한 외부함수를 사용하는 경우라면 외부함수를 사용하지 않고 외부함수에서 사용한 데이터 소팅을 위한 코드를 이용하여 직접 데이타 소팅을 해주면 해결될 수 있다. 즉,&nbsp;&nbsp;<span style=\"box-sizing: border-box;\">SPIFF 관련 함수에 사용하는 외부 함수의 개수를 줄여 주어 오류를 해결할 수 있었다.&nbsp;</span></span></span></p>\r\n<div class=\"google-auto-placed ap_container\" style=\"box-sizing: border-box; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; width: 879px; height: auto; clear: both; text-align: center;\"><ins data-ad-format=\"auto\" class=\"adsbygoogle adsbygoogle-noablate\" data-ad-client=\"ca-pub-8269928309278636\" data-adsbygoogle-status=\"done\" data-ad-status=\"filled\" style=\"display: block; margin: auto; background-color: transparent; height: 280px;\">\r\n      <div id=\"aswift_8_host\" tabindex=\"0\" title=\"Advertisement\" aria-label=\"Advertisement\" style=\"box-sizing: border-box; border: none; height: 280px; width: 879px; margin: 0px; padding: 0px; position: relative; visibility: visible; background-color: transparent; display: inline-block; overflow: visible;\"><iframe id=\"aswift_8\" name=\"aswift_8\" sandbox=\"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation\" width=\"879\" height=\"280\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" vspace=\"0\" hspace=\"0\" allowtransparency=\"true\" scrolling=\"no\" src=\"https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-8269928309278636&amp;output=html&amp;h=280&amp;adk=1018261858&amp;adf=1417604663&amp;pi=t.aa~a.3527480287~i.82~rp.4&amp;w=879&amp;fwrn=4&amp;fwrnh=100&amp;lmt=1688532003&amp;num_ads=1&amp;rafmt=1&amp;armr=3&amp;sem=mc&amp;pwprc=6730866626&amp;ad_type=text_image&amp;format=879x280&amp;url=https%3A%2F%2Fpostpop.tistory.com%2F26&amp;host=ca-host-pub-9691043933427338&amp;fwr=0&amp;pra=3&amp;rh=200&amp;rw=879&amp;rpe=1&amp;resp_fmts=3&amp;wgl=1&amp;fa=27&amp;uach=WyJXaW5kb3dzIiwiMTUuMC4wIiwieDg2IiwiIiwiMTE0LjAuNTczNS4xOTkiLFtdLDAsbnVsbCwiNjQiLFtbIk5vdC5BL0JyYW5kIiwiOC4wLjAuMCJdLFsiQ2hyb21pdW0iLCIxMTQuMC41NzM1LjE5OSJdLFsiR29vZ2xlIENocm9tZSIsIjExNC4wLjU3MzUuMTk5Il1dLDBd&amp;dt=1688532003208&amp;bpp=2&amp;bdt=1662&amp;idt=2&amp;shv=r20230627&amp;mjsv=m202306220101&amp;ptt=9&amp;saldr=aa&amp;abxe=1&amp;cookie=ID%3D39c3dcb00f508c9c-2224e4a2b1b400fa%3AT%3D1688524493%3ART%3D1688532003%3AS%3DALNI_MYCArlyAeUg-Q9pgv2TuQpAPf0jyA&amp;gpic=UID%3D00000c967f6a127a%3AT%3D1688524493%3ART%3D1688532003%3AS%3DALNI_Mavl7tEwT40JLwM8rz6yrb2pErAMA&amp;prev_fmts=0x0%2C300x600%2C300x250%2C300x600%2C879x280%2C879x280&amp;nras=2&amp;correlator=7555245784352&amp;frm=20&amp;pv=1&amp;ga_vid=1863883862.1688524499&amp;ga_sid=1688532002&amp;ga_hid=1853046049&amp;ga_fc=1&amp;ga_cid=1588808299.1688524499&amp;u_tz=540&amp;u_his=3&amp;u_h=1440&amp;u_w=2560&amp;u_ah=1392&amp;u_aw=2560&amp;u_cd=24&amp;u_sd=1&amp;dmc=8&amp;adx=336&amp;ady=4551&amp;biw=1261&amp;bih=1279&amp;scr_x=0&amp;scr_y=500&amp;eid=44759927%2C44759876%2C44759842%2C31075758%2C44788441&amp;oid=2&amp;psts=ABnkTfBwPhYbWii_VbaADCgwRcw3oIvn_te-B_G9Gx5CRSZ0VjX66PTJAYon4dAA_kGlijyR613ACVh4SFfkDbTEHjAAa0I%2CABnkTfArjrn7ugiMmbTdpQoGFm3pd0BEkum2qCsTXSvKr7ozCtOx9IdIgCEBLquC8ms65fhv2d_t19t77KTqQG0qWs5ke0I%2CABnkTfDynbunnA3ch0gyG0KCQhTp6lIO1QbYB6chxbHEygU-Rackl0e8GdqXwGHMc8CYGsCT6HocxlMKv2h_bVzgOFfpLjM%2CABnkTfARGsJXCjZR5tzxwgllOGecUMrFYPKDp9jpHbzNYgJuAYrGMeMi2a7XaI3qm_pEQUDl-qNp1OrQd1IvATTnH5hRE2Kg&amp;pvsid=2078128639787136&amp;tmod=1541426554&amp;uas=3&amp;nvt=1&amp;ref=https%3A%2F%2Fwww.google.com%2F&amp;fc=1408&amp;brdim=-7%2C0%2C-7%2C0%2C2560%2C0%2C1294%2C1399%2C1278%2C1279&amp;vis=1&amp;rsz=%7C%7Cs%7C&amp;abl=NS&amp;fu=128&amp;bc=31&amp;ifi=9&amp;uci=a!9&amp;btvi=2&amp;fsb=1&amp;xpc=0lCuxHzhYs&amp;p=https%3A//postpop.tistory.com&amp;dtd=8\" data-google-container-id=\"a!9\" data-google-query-id=\"CMKB2fLf9v8CFayH6QUdGL4L_Q\" data-load-complete=\"true\" style=\"max-width: 100%; margin: 0px auto; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 879px; height: 280px;\"></iframe></div>\r\n      </ins></div>\r\n<table data-ke-align=\"alignLeft\" style=\"max-width: 100%; width: 879px; color: #000000; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; border-style: solid; border-color: #99cefa; background-color: #f6f9fd; height: 110px;\">\r\n   <tbody>\r\n      <tr style=\"height: 110px;\">\r\n         <td style=\"word-break: break-word; width: 857px; padding: 10px; height: 110px;\"><span style=\"box-sizing: border-box;\">sketch\\esp32_clock_basic84.ino.cpp.o:&nbsp;In&nbsp;function&nbsp;`fs::File::~File()\':<br />C:\\Users\\Sudo\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\libraries\\FS\\src/FS.h:47:(.text._ZN2fs4FileD0Ev[fs::File::~File()]+0xa):&nbsp;dangerous&nbsp;relocation:&nbsp;l32r:&nbsp;literal&nbsp;target&nbsp;out&nbsp;of&nbsp;range&nbsp;(try&nbsp;using&nbsp;text-section-literals):&nbsp;(.literal._ZN2fs4FileD5Ev+0x4)<br />collect2.exe:&nbsp;error:&nbsp;ld&nbsp;returned&nbsp;1&nbsp;exit&nbsp;status</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">2. 컴파일 후 발생하는 리부팅 오류</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">다양한 원인으로 발생할 수 있으나 리부팅 시에 시리얼 모니터에 표시되는 정보로는 업로드한 코드의 어느 부분에서 오류가 발생했는지 파악하기가 어렵다.&nbsp;</p>\r\n<table data-ke-align=\"alignLeft\" style=\"max-width: 100%; width: 879px; color: #000000; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; border-style: solid; border-color: #99cefa; background-color: #f6f9fd;\">\r\n   <tbody>\r\n      <tr>\r\n         <td style=\"word-break: break-word; width: 857px; padding: 10px;\"><span style=\"box-sizing: border-box;\">Listing&nbsp;directory:&nbsp;/Guru&nbsp;Meditation&nbsp;Error:&nbsp;Core&nbsp;&nbsp;0&nbsp;panic\'ed&nbsp;(Unhandled&nbsp;debug&nbsp;exception)<br />Debug&nbsp;exception&nbsp;reason:&nbsp;Stack&nbsp;canary&nbsp;watchpoint&nbsp;triggered&nbsp;(RBE)&nbsp;<br />Core&nbsp;0&nbsp;register&nbsp;dump:<br />PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x40083fbd&nbsp;&nbsp;PS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00060636&nbsp;&nbsp;A0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00060630&nbsp;&nbsp;A1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x3ffb2090&nbsp;&nbsp;<br />A2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00000000&nbsp;&nbsp;A3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00060623&nbsp;&nbsp;A4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00060620&nbsp;&nbsp;A5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x3ffc013a&nbsp;&nbsp;<br />A6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00000001&nbsp;&nbsp;A7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x3ffbdc54&nbsp;&nbsp;A8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x800d2da0&nbsp;&nbsp;A9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x3ffb2220&nbsp;&nbsp;<br />A10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00000014&nbsp;&nbsp;A11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x40083a10&nbsp;&nbsp;A12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x000000fe&nbsp;&nbsp;A13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x3ffc009c&nbsp;&nbsp;<br />A14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x7f800000&nbsp;&nbsp;A15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00000000&nbsp;&nbsp;SAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x00000008&nbsp;&nbsp;EXCCAUSE:&nbsp;0x00000001&nbsp;&nbsp;<br />EXCVADDR:&nbsp;0x00000000&nbsp;&nbsp;LBEG&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x40002390&nbsp;&nbsp;LEND&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;0x4000239f&nbsp;&nbsp;LCOUNT&nbsp;&nbsp;:&nbsp;0x00000000&nbsp;&nbsp;<br /><br />ELF&nbsp;file&nbsp;SHA256:&nbsp;0000000000000000<br /><br />Backtrace:&nbsp;0x40083fbd:0x3ffb2090&nbsp;0x0006062d:0x3ffb2160&nbsp;0x40089b6b:0x3ffb2180&nbsp;0x4008a1a2:0x3ffb21a0&nbsp;0x40081ce1:0x3ffb21c0&nbsp;0x40081d12:0x3ffb21e0&nbsp;0x40083a15:0x3ffb2200&nbsp;0x4000beaf:0x3ffb2220&nbsp;0x400d2d9d:0x3ffb2240&nbsp;0x400d2dcf:0x3ffb2280&nbsp;0x400d374c:0x3ffb22b0&nbsp;0x400d2185:0x3ffb22d0&nbsp;0x400d21d9:0x3ffb22f0&nbsp;0x400d22b9:0x3ffb2310&nbsp;0x400d27f1:0x3ffb2330&nbsp;0x400d2894:0x3ffb2360&nbsp;0x400d299d:0x3ffb2380&nbsp;0x400d0f94:0x3ffb23a0&nbsp;0x400d0fc3:0x3ffb23c0&nbsp;0x40086b59:0x3ffb23e0<br /><br />Rebooting...<br />ets&nbsp;Jun&nbsp;&nbsp;8&nbsp;2016&nbsp;00:22:57<br /><br />rst:0xc&nbsp;(SW_CPU_RESET),boot:0x13&nbsp;(SPI_FAST_FLASH_BOOT)<br />configsip:&nbsp;0,&nbsp;SPIWP:0xee<br />clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00<br />mode:DIO,&nbsp;clock&nbsp;div:1<br />load:0x3fff0018,len:4<br />load:0x3fff001c,len:1216<br />ho&nbsp;0&nbsp;tail&nbsp;12&nbsp;room&nbsp;4<br />load:0x40078000,len:10944<br />load:0x40080400,len:6388<br />entry&nbsp;0x400806b4</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">EspExceptionDecoder를 사용하면 리부팅되기 전까지의 기록인 \"Backtrace\" 정보를 이용하여 어떤 코드들이 실행되고 있었는지를 확인할 수 있다.&nbsp;&nbsp;</span></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"Exception Decoder.jpg\" data-origin-width=\"793\" data-origin-height=\"620\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/kTd3t/btryrV6rHiF/mPKS0Lx1FXTJG0mqkA1CWk/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/kTd3t/btryrV6rHiF/mPKS0Lx1FXTJG0mqkA1CWk/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkTd3t%2FbtryrV6rHiF%2FmPKS0Lx1FXTJG0mqkA1CWk%2Fimg.jpg\" data-filename=\"Exception Decoder.jpg\" data-origin-width=\"793\" data-origin-height=\"620\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 793px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">구글에서&nbsp;<span style=\"box-sizing: border-box;\">EspExceptionDecoder 검색</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><a href=\"https://github.com/me-no-dev/EspExceptionDecoder\" target=\"_blank\" rel=\"noopener\" style=\"color: #000000; text-decoration-line: none; transition: all 0.3s ease 0s;\">https://github.com/me-no-dev/EspExceptionDecoder</a></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"5.jpg\" data-origin-width=\"915\" data-origin-height=\"867\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/k0JNu/btryt5mVU7s/FX1qHKThBI2WdRrr01ONAK/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/k0JNu/btryt5mVU7s/FX1qHKThBI2WdRrr01ONAK/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk0JNu%2Fbtryt5mVU7s%2FFX1qHKThBI2WdRrr01ONAK%2Fimg.jpg\" data-filename=\"5.jpg\" data-origin-width=\"915\" data-origin-height=\"867\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 879px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">\"releases page\" 클릭</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"6.jpg\" data-origin-width=\"762\" data-origin-height=\"457\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/XtILa/btrykfLyQic/oZvNJ3hNdQKlBug7wBwuw0/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/XtILa/btrykfLyQic/oZvNJ3hNdQKlBug7wBwuw0/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXtILa%2FbtrykfLyQic%2FoZvNJ3hNdQKlBug7wBwuw0%2Fimg.jpg\" data-filename=\"6.jpg\" data-origin-width=\"762\" data-origin-height=\"457\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 762px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;EspExceptionDecoder-2.0.2.zip 다운로드</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"7.jpg\" data-origin-width=\"1175\" data-origin-height=\"477\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/bLlS4z/btryigcSdzt/eBqMojucSWR3FZ3joYnzmK/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/bLlS4z/btryigcSdzt/eBqMojucSWR3FZ3joYnzmK/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLlS4z%2FbtryigcSdzt%2FeBqMojucSWR3FZ3joYnzmK%2Fimg.jpg\" data-filename=\"7.jpg\" data-origin-width=\"1175\" data-origin-height=\"477\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 879px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">압축해제 후&nbsp;<span style=\"box-sizing: border-box;\">EspExceptionDecoder-2.0.2 폴더 안의&nbsp;<span style=\"box-sizing: border-box;\">EspExceptionDecoder 폴더 복사</span></span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">아두이노 IDE의 파일 -&gt; 환경설정에서 스케치 저장 폴더(기본값 Documents\\Arduino) 확인</span></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"1.jpg\" data-origin-width=\"810\" data-origin-height=\"167\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/b46ztG/btryrWJ6Us7/P67sFce8cDTSi6a3hJAsQ1/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/b46ztG/btryrWJ6Us7/P67sFce8cDTSi6a3hJAsQ1/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb46ztG%2FbtryrWJ6Us7%2FP67sFce8cDTSi6a3hJAsQ1%2Fimg.jpg\" data-filename=\"1.jpg\" data-origin-width=\"810\" data-origin-height=\"167\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 810px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"box-sizing: border-box;\">파일 탐색기로 해당 폴더로 이동</span></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"2.jpg\" data-origin-width=\"951\" data-origin-height=\"304\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/qxtmh/btryq0NUUki/AsPibHroSahJoVrkFdS8oK/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/qxtmh/btryq0NUUki/AsPibHroSahJoVrkFdS8oK/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqxtmh%2Fbtryq0NUUki%2FAsPibHroSahJoVrkFdS8oK%2Fimg.jpg\" data-filename=\"2.jpg\" data-origin-width=\"951\" data-origin-height=\"304\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 879px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">해당 폴더에 tools 폴더가 없다면 tools 폴더 생성하고 tools폴더에 앞서 복사했던&nbsp;<span style=\"box-sizing: border-box;\">EspExceptionDecoder폴더를 붙여 넣기</span></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"3.jpg\" data-origin-width=\"951\" data-origin-height=\"303\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/dnmZZO/btryrDEpTp6/xwEEKGUMmj7rQcrBzfGNWK/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/dnmZZO/btryrDEpTp6/xwEEKGUMmj7rQcrBzfGNWK/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnmZZO%2FbtryrDEpTp6%2FxwEEKGUMmj7rQcrBzfGNWK%2Fimg.jpg\" data-filename=\"3.jpg\" data-origin-width=\"951\" data-origin-height=\"303\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 879px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">아두이노 IDE종료 후 다시 실행하고 \"툴\" 메뉴를 클릭하면 \"<span style=\"box-sizing: border-box;\">Esp Exception Decoder\"라는 메뉴가 추가된 걸 볼 수 있다.</span></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"8.jpg\" data-origin-width=\"564\" data-origin-height=\"282\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/Bv3FK/btryqZIiM9G/k39QYlIbe88e919Ky8Rk91/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/Bv3FK/btryqZIiM9G/k39QYlIbe88e919Ky8Rk91/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBv3FK%2FbtryqZIiM9G%2Fk39QYlIbe88e919Ky8Rk91%2Fimg.jpg\" data-filename=\"8.jpg\" data-origin-width=\"564\" data-origin-height=\"282\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 564px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;스케치가 업로드되지 않은 상태에서&nbsp;<span style=\"box-sizing: border-box;\">\"</span><span style=\"box-sizing: border-box;\">Esp Exception Decoder\" 메뉴를 클릭하게 되면&nbsp;</span></p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"10.jpg\" data-origin-width=\"735\" data-origin-height=\"437\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/bZlveP/btryu84NERS/veqEB9QxnZXcdkj2xZKle1/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/bZlveP/btryu84NERS/veqEB9QxnZXcdkj2xZKle1/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZlveP%2Fbtryu84NERS%2FveqEB9QxnZXcdkj2xZKle1%2Fimg.jpg\" data-filename=\"10.jpg\" data-origin-width=\"735\" data-origin-height=\"437\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 735px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;Select ELF라는 창만 활성화되고 프로그램이 실행되지 않는다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">이 프로그램 자체가 업로드된 스케치에서 리부팅 발생 시 실행 코드 이력을 확인하는 것이므로 우선 스케치가 업로드되어 있어야 한다. 스케치가 업로드 되어 있다면 아래와 같은 창이 활성화된다.&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"11.jpg\" data-origin-width=\"650\" data-origin-height=\"536\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/caUFEN/btryp5vfySk/ecU1LqE8NeTWBWNrNFjpO1/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/caUFEN/btryp5vfySk/ecU1LqE8NeTWBWNrNFjpO1/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaUFEN%2Fbtryp5vfySk%2FecU1LqE8NeTWBWNrNFjpO1%2Fimg.jpg\" data-filename=\"11.jpg\" data-origin-width=\"650\" data-origin-height=\"536\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 650px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff; padding-top: 0px !important; padding-bottom: 0px !important;\">오류가 발생하여 모듈이 리부팅된다면 이때 시리얼 모니터에 표시된 \"Backtrace\"을 복사하여 \"Paste your stack trace here\"에 붙여 넣기 하고 엔터를 쳐주면 해당 내용이 표시된다.&nbsp;</p>\r\n<table data-ke-align=\"alignLeft\" style=\"max-width: 100%; width: 879px; color: #000000; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; border-style: solid; border-color: #99cefa; background-color: #f6f9fd;\">\r\n   <tbody>\r\n      <tr>\r\n         <td style=\"word-break: break-word; width: 857px; padding: 10px;\"><span style=\"box-sizing: border-box;\">Backtrace:&nbsp;0x40083fbd:0x3ffb2090&nbsp;0x0006062d:0x3ffb2160&nbsp;0x40089b6b:0x3ffb2180&nbsp;0x4008a1a2:0x3ffb21a0&nbsp;0x40081ce1:0x3ffb21c0&nbsp;0x40081d12:0x3ffb21e0&nbsp;0x40083a15:0x3ffb2200&nbsp;0x4000beaf:0x3ffb2220&nbsp;0x400d2d9d:0x3ffb2240&nbsp;0x400d2dcf:0x3ffb2280&nbsp;0x400d374c:0x3ffb22b0&nbsp;0x400d2185:0x3ffb22d0&nbsp;0x400d21d9:0x3ffb22f0&nbsp;0x400d22b9:0x3ffb2310&nbsp;0x400d27f1:0x3ffb2330&nbsp;0x400d2894:0x3ffb2360&nbsp;0x400d299d:0x3ffb2380&nbsp;0x400d0f94:0x3ffb23a0&nbsp;0x400d0fc3:0x3ffb23c0&nbsp;0x40086b59:0x3ffb23e0</span></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-filename=\"Exception Decoder.jpg\" data-origin-width=\"793\" data-origin-height=\"620\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; height: auto; text-align: center; font-family: &quot;Noto Sans Light&quot;, Roboto; font-size: 16px; background-color: #ffffff;\"><span data-url=\"https://blog.kakaocdn.net/dn/R6uEt/btrypi9nDAc/9KCo7DAgVwYnbfJoUxWb71/img.jpg\" data-lightbox=\"lightbox\" style=\"box-sizing: border-box; cursor: pointer; max-width: 100%; width: 100%;\"><img src=\"https://blog.kakaocdn.net/dn/R6uEt/btrypi9nDAc/9KCo7DAgVwYnbfJoUxWb71/img.jpg\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR6uEt%2Fbtrypi9nDAc%2F9KCo7DAgVwYnbfJoUxWb71%2Fimg.jpg\" data-filename=\"Exception Decoder.jpg\" data-origin-width=\"793\" data-origin-height=\"620\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 793px; margin: 0px; height: auto; vertical-align: middle;\" /></span></figure>','','',0,0,6,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-07-05 14:03:39',1,'2023-07-05 14:03:39','112.222.138.202','','','','','','','','','','','',''),(607,-604,'',607,0,0,'','','html1','[Arduino] MICS-6814 Gas Sensor','<header style=\"box-sizing: border-box; color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">\r\n   <h1 style=\"box-sizing: border-box; color: var(--ifm-heading-color); font-family: var(--ifm-heading-font-family); font-weight: var(--ifm-heading-font-weight); line-height: var(--ifm-heading-line-height); margin-bottom: calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading)); font-size: var(--ifm-h1-font-size); --ifm-h1-font-size: 3rem;\">Grove - Multichannel Gas Sensor</h1>\r\n   </header>\r\n<table style=\"overflow: auto; display: block; margin-bottom: var(--ifm-spacing-vertical); margin-top: 0px; color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">\r\n   <tbody style=\"box-sizing: border-box;\">\r\n      <tr style=\"box-sizing: border-box; background-color: var(--ifm-table-background); border-top: var(--ifm-table-border-width) solid var(--ifm-table-border-color);\">\r\n         <td style=\"box-sizing: border-box; border: var(--ifm-table-border-width) solid var(--ifm-table-border-color); padding: var(--ifm-table-cell-padding); color: var(--ifm-table-cell-color);\"><img loading=\"lazy\" src=\"https://files.seeedstudio.com/wiki/Grove-Multichannel_Gas_Sensor/img/Multi_sensor1.png\" class=\"img_ev3q medium-zoom-image\" style=\"box-sizing: border-box; max-width: 100%; height: auto; cursor: zoom-in; transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1) 0s !important;\" /></td>\r\n         <td style=\"box-sizing: border-box; border: var(--ifm-table-border-width) solid var(--ifm-table-border-color); padding: var(--ifm-table-cell-padding); color: var(--ifm-table-cell-color);\"><img loading=\"lazy\" src=\"https://files.seeedstudio.com/wiki/Grove-Multichannel_Gas_Sensor/img/Multi_sensor2.png\" class=\"img_ev3q medium-zoom-image\" style=\"box-sizing: border-box; max-width: 100%; height: auto; cursor: zoom-in; transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1) 0s !important;\" /></td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<p style=\"box-sizing: border-box; margin-bottom: var(--ifm-leading); color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">Grove – Multichannel Gas sensor is a environment detecting sensor with a built in MiCS-6814 which can detect many unhealthful gases, and three gases can be measured simultaneously due to its multi channels, so it can help you to monitor the concentration which more than one gas.</p>\r\n<p style=\"box-sizing: border-box; margin-bottom: var(--ifm-leading); color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">This sensor belongs to&nbsp;<span style=\"box-sizing: border-box; font-weight: var(--ifm-font-weight-bold);\">Grove system</span>, and you can plug it onto the&nbsp;<span style=\"box-sizing: border-box; font-weight: var(--ifm-font-weight-bold);\">Base shield</span>&nbsp;and work with Arduino directly without any jumper wires. The interface of it is I2C, so plug it onto the I2C port of Base shield, then you can start to work it.</p>\r\n<div class=\"admonition caution\" style=\"box-sizing: border-box; color: #e3e3e3; font-family: system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;; font-size: 16px; background-color: #1b1b1d;\">\r\n   <p class=\"admonition-title\" style=\"box-sizing: border-box; margin: 0 0 var(--ifm-paragraph-margin-bottom);\">Caution</p>\r\n   The sensor value only reflects the approximated trend of gas concentration in a permissible error range, it DOES NOT represent the exact gas concentration. The detection of certain components in the air usually requires a more precise and costly instrument, which cannot be done with a single gas sensor. If your project is aimed at obtaining the gas concentration at a very precise level, then we do not recommend this gas sensor.</div>','https://wiki.seeedstudio.com/Grove-Multichannel_Gas_Sensor/','https://chocoball.tistory.com/entry/Hardware-air-quality-MICS-6814-sensor-1',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-09-09 22:48:27',1,'2023-09-09 22:48:27','192.168.219.103','','','','','','','','','','','',''),(608,-605,'',608,0,0,'','','html1','[Arduino] SSD1306, OLED 사용하기','<div class=\"se-component se-documentTitle se-l-default \" id=\"SE-9b863d99-7056-44d4-ba84-537e11cfe639\" style=\"margin: 0px 0px 40px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; position: relative; color: #444444; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%; position: relative;\">\r\n      <div class=\"se-section se-section-documentTitle se-l-default se-section-align-center\" style=\"margin: 0px auto; padding: 65px 0px 31px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"pcol1\" style=\"color: #000000; font-size: 14px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text se-title-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align-center\" id=\"SE-8703cf89-d0cd-42e3-b8b2-43a61085a65c\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center !important;\"><span class=\"se-fs-fs32 se-ff-system\" id=\"SE-1dd9a43e-4d93-4653-8234-fa2c3b7554d5\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 32px; line-height: 48px; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\">아두이노로 0.96인치 OLED디스플레이(SSD1306) 사용하기</span></p>\r\n               </div>\r\n            </div>\r\n         <div class=\"blog2_container\" style=\"margin: 0px 0px -8px; padding: 47px 0px 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 14px; line-height: 30px; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\"><span class=\"writer\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\"><span class=\"area_profile\" style=\"margin: 0px 4px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; position: relative; width: 30px; height: 30px;\"><a href=\"https://blog.naver.com/emperonics\" class=\"link\" target=\"_top\" style=\"text-decoration-line: none; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; display: block;\"><img src=\"https://blogpfthumb-phinf.pstatic.net/MjAxOTA3MTJfMTcx/MDAxNTYyOTA0NjAzNTcy.VfmmZXaKDttKEoSvwLT5ZE_CsXbWBdr3Ise5it_Tipkg.Iw3czEZ_s-61rXPvcATJAG3xMad5OlkslTgtKpsOrFog.PNG.emperonics/%A9%A7%3F.PNG?type=s1\" class=\"img egjs-visible\" alt=\"프로파일\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: baseline; width: 30px; height: 30px; border-radius: 100%;\" /></a></span>&nbsp;<span class=\"nick\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; overflow: hidden; text-overflow: ellipsis; text-wrap: nowrap;\"><a href=\"https://blog.naver.com/emperonics\" class=\"link pcol2\" target=\"_top\" style=\"text-decoration-line: none; color: #444444; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">황제곰</a></span>&nbsp;</span><i class=\"dot\" style=\"opacity: 0.2;\">・&nbsp;</i><span class=\"se_publishDate pcol2\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; opacity: 0.5;\">2020. 9. 5. 15:25</span></div>\r\n         <div class=\"blog2_post_function\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 14px; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; position: absolute; right: 30px; bottom: 23px; text-wrap: nowrap;\"><a href=\"https://blog.naver.com/PostView.naver?blogId=emperonics&amp;logNo=222081054316&amp;categoryNo=0&amp;parentCategoryNo=0#\" id=\"copyBtn_222081054316\" class=\"url pcol2 _setClipboard _returnFalse _se3copybtn _transPosition\" title=\"https://blog.naver.com/emperonics/222081054316\" style=\"text-decoration-line: none; color: #444444; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: inherit; line-height: 30px; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: top; display: inline-block; opacity: 0.5;\" target=\"_blank\">URL 복사</a>&nbsp;<a href=\"https://blog.naver.com/PostView.naver?blogId=emperonics&amp;logNo=222081054316&amp;categoryNo=0&amp;parentCategoryNo=0#\" class=\"btn_buddy btn_addbuddy pcol2 _buddy_popup_btn _returnFalse\" style=\"text-decoration-line: none; color: #444444; cursor: pointer; margin: 0px 0px 0px 11px; padding: 0px 10px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: inherit; line-height: 30px; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: top; display: inline-block; overflow: hidden; position: relative; min-width: 37px; height: 30px; text-align: center;\" target=\"_blank\"><i class=\"ico\" style=\"display: inline-block; margin: 0px -5px 0px -3px; transform: scale(0.5, 0.5); vertical-align: top;\"></i>&nbsp;이웃추가<i class=\"aline\" style=\"position: absolute; inset: 0px; border-style: solid; border-width: 1px;\"></i></a>&nbsp;\r\n            <div class=\"overflow_menu\" style=\"margin: 0px 0px 0px 1px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; position: relative; z-index: 40;\"><a href=\"https://blog.naver.com/PostView.naver?blogId=emperonics&amp;logNo=222081054316&amp;categoryNo=0&amp;parentCategoryNo=0#\" class=\"btn_overflow_menu _open_overflowmenu pcol2 _param(222081054316) _returnFalse\" role=\"button\" area-haspopup=\"true\" area-expanded=\"false\" style=\"text-decoration-line: none; color: #444444; cursor: pointer; margin: 0px; padding: 7px 10px 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 17px; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; display: block; width: 3px; height: 23px; opacity: 0.5;\" target=\"_blank\"><span class=\"blind\" style=\"overflow: hidden; position: absolute; clip: rect(0px, 0px, 0px, 0px); width: 1px; height: 1px; margin: 0px; font: inherit; padding: 0px; border: 0px; vertical-align: baseline; top: auto !important; left: auto !important;\">본문 기타 기능</span></a></div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-main-container\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-alternates: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #444444; background-color: #ffffff;\">\r\n   <div class=\"se-component se-quotation se-l-quotation_corner\" id=\"SE-a55159c3-87ef-47e2-b5cd-2d6a707d6f89\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%; position: relative;\">\r\n         <div class=\"se-section se-section-quotation se-l-quotation_corner\" style=\"margin: 0px auto; padding: 10px 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <blockquote class=\"se-quotation-container\" style=\"margin: auto; padding: 38px 36px; border: 0px; font: inherit; vertical-align: baseline; quotes: none; position: relative; box-sizing: border-box; max-width: 460px;\">\r\n               <div class=\"se-module se-module-text se-quote\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                  <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-1c73bbeb-778e-4aa5-926c-f653506fc0f0\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center;\"><span class=\"se-fs-fs24 se-ff-   \" id=\"SE-da3c3732-5108-45c7-905c-bf9512ab2caf\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 24px; line-height: inherit; font-family: se-nanumbarungothic, arial, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\"><span style=\"font-weight: 700; background-color: inherit; font-family: inherit;\">0.96인치 OLED 디스플레이 사용하기</span></span></p>\r\n                  </div>\r\n               </blockquote>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-e5b017a7-324e-43c4-8a39-7f4f38440a12\" style=\"margin: 40px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-2958fd9c-4437-44fd-8355-63dea53ef0cf\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs- se-ff-system   \" id=\"SE-0e046a85-8fa8-4fd0-8f95-69ec5b72473c\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-51563054-8715-43c5-b192-05a939ba3805\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-133f2a30-d4e5-45a5-b0d8-d37ffe7808e4\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\">  안녕하세요. 이번포스팅에서에는 아두이노로 0.96인치 OLED 디스플레이를 제어하는 방법에 대해서 알아보도록 하겠습니다. </span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-6917c434-1086-4709-bd96-3e4777f0428f\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-76d926f7-8964-4690-9852-ba6749372f07\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-oglink se-l-large_image __se-component\" id=\"SE-eeea3a80-156b-4431-a112-43c2d253ab77\" style=\"margin: 30px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-oglink se-l-large_image se-section-align-center\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; width: 450px; max-width: 450px;\">\r\n            <div class=\"se-module se-module-oglink\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; width: 450px; box-shadow: rgba(0, 0, 0, 0.08) 0px 1px 2px 0px; cursor: pointer;\"><a href=\"https://smartstore.naver.com/bearfabmall/products/5080000968\" class=\"se-oglink-thumbnail\" target=\"_blank\" style=\"text-decoration-line: none; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; z-index: 1; overflow: hidden; max-height: 450px;\"><img src=\"https://dthumb-phinf.pstatic.net/?src=%22https%3A%2F%2Fshop-phinf.pstatic.net%2F20200826_99%2F1598367920618rC1Nm_PNG%2F35727754929495682_176828019.png%3Ftype%3Do640%22&amp;type=ff500_300\" class=\"se-oglink-thumbnail-resource egjs-visible\" alt=\"\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; width: 450px; height: auto; max-height: 450px;\" /></a><a href=\"https://smartstore.naver.com/bearfabmall/products/5080000968\" class=\"se-oglink-info\" target=\"_blank\" style=\"text-decoration-line: none; cursor: pointer; margin: 0px; padding: 21px 26px 18px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.4; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; position: relative; display: block; box-sizing: border-box;\">\r\n                  <div class=\"se-oglink-info-container\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: middle; display: inline-block; max-width: 100%;\"><span class=\"se-oglink-title\" style=\"text-wrap: nowrap; overflow-wrap: normal; overflow: hidden; text-overflow: ellipsis; word-break: break-all; display: block; font-weight: 700; color: #333333; font-size: 15px;\">0.96인치 OLED 디스플레이 모듈(Blue) 아두이노 라즈베리파이 호환 : 베어팹몰</span>\r\n                     <p class=\"se-oglink-summary\" style=\"margin-top: 7px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: 18px; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; text-wrap: nowrap; overflow-wrap: normal; overflow: hidden; text-overflow: ellipsis; word-break: break-all; color: #999999; max-height: 34px;\">0.96인치 OLED 디스플레이 모듈(Blue) 아두이노 라즈베리파이 호환</p>\r\n                     <p class=\"se-oglink-url\" style=\"margin-top: 9px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: 15px; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; text-wrap: nowrap; overflow-wrap: normal; overflow: hidden; text-overflow: ellipsis; word-break: break-all; color: #00a832;\">smartstore.naver.com</p>\r\n                     </div>\r\n                  </a></div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-065f8fe6-7c20-4587-9798-f281bf184694\" style=\"margin: 30px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-30cfd069-c97f-4de8-8876-0a43d0b0ecc4\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs- se-ff-system   \" id=\"SE-194a40d4-029d-40d1-9b82-80e365bd0eae\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-quotation se-l-quotation_line\" id=\"SE-8452ba19-e40a-4f07-80cf-4df5e723055f\" style=\"margin: 40px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%; position: relative;\">\r\n         <div class=\"se-section se-section-quotation se-l-quotation_line\" style=\"margin: 0px auto; padding: 10px 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <blockquote class=\"se-quotation-container\" style=\"margin: auto; padding: 0px 20px; border: 0px; font: inherit; vertical-align: baseline; quotes: none; position: relative; box-sizing: border-box;\">\r\n               <div class=\"se-module se-module-text se-quote\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                  <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-0568268c-22fa-4728-a909-dc5465df2978\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs24 se-ff-  se-style-unset \" id=\"SE-feaee394-e488-4c9e-be07-cf7f2cc4c454\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 24px; line-height: inherit; font-family: se-nanumgothic, arial, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"><span style=\"font-weight: 700; background-color: inherit; font-family: inherit;\">OLED 디스플레이 모듈</span></span></p>\r\n                  </div>\r\n               </blockquote>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-babe6de9-9547-425c-8c3c-11f16f6e1b33\" style=\"margin: 40px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-d6889bd6-5f90-4ab4-a5c9-c703dd72b468\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-9657fbfc-4d7a-4353-a95e-55393135ccf1\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\">이번 포스팅에서 사용할 OLED 디스플레이 모듈은 아래 사진같이 크기가 0.96인치 입니다. 0.96인치 외에도 OLED 디스플레이 모듈은 다양한 사이즈와 색상으로 출시되고 있습니다. 아두이노를 사용한 프로젝트에 많이 사용되는 0.96인치 OLED는 128x64픽셀로 이루어져 있으며 이보다 작은 0.91인치 OLED는 128x32픽셀로 이루어져 있습니다. </span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-3d0d7d87-1ada-4eba-8c06-8ace554d044d\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-785dec1a-1c68-423c-874d-c5795ff64a2b\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-image se-l-default\" id=\"SE-ca8c0abf-397b-48ca-8215-022f3686e85f\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-image se-l-default se-section-align-center\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 354px;\">\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-ca8c0abf-397b-48ca-8215-022f3686e85f&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA5MDFfMjQz/MDAxNTk4OTcwOTQ1MDU3.soTzb7yKMzJ28-Up_kPH81AS9xEW1_Pa_oM2RObalbMg.DKc0YmEOGs3fIgcf-syTZdBtW1gW2VKtq0w1kbuVztAg.PNG.emperonics/스크린샷_2020-09-01_오후_11.28.00.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"color: inherit; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA5MDFfMjQz/MDAxNTk4OTcwOTQ1MDU3.soTzb7yKMzJ28-Up_kPH81AS9xEW1_Pa_oM2RObalbMg.DKc0YmEOGs3fIgcf-syTZdBtW1gW2VKtq0w1kbuVztAg.PNG.emperonics/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7_2020-09-01_%EC%98%A4%ED%9B%84_11.28.00.png?type=w966\" data-lazy-src=\"\" data-width=\"354\" data-height=\"334\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; width: 354px;\" /></a></div>\r\n            <div class=\"se-module se-module-text se-caption\" style=\"margin: 10px auto 20px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 886px;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-1c2327fc-85c2-4946-a6fe-38aebd09a67b\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.5; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center;\"><span class=\"se-fs- se-ff-   \" id=\"SE-818ad552-1e72-46e3-a580-79aef5872331\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: inherit; font-family: se-nanumgothic, arial, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #555555;\">0.96인치</span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-cb57101a-3201-43eb-a331-b3bb71b1394b\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-4fb125f4-a581-4349-a756-15c2c77240e3\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-8b7506ff-dd59-49bf-a266-03c3658e0053\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-623aea32-cff4-4a85-b6d5-63393be1295b\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-a7d0c97a-b43f-4228-a5fb-2075e8c9af44\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-image se-l-default\" id=\"SE-c8c4ae48-f64b-49a7-8488-84a42c6d9e9e\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-image se-l-default se-section-align-center\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 282px;\">\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-c8c4ae48-f64b-49a7-8488-84a42c6d9e9e&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA5MDJfMjQ4/MDAxNTk4OTczMjc2MDQ1.PGnD1lOd_JMsP9W1O3V9TeRZoc7Kbu9Lz2EzSLNMZi8g.T1SfxNDCVTVN6GwYh9ml2suVUBIEvx6C_Jzqn-5R5kkg.JPEG.emperonics/128x32-Blue-I2C-OLED-Display.jpg&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"color: inherit; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA5MDJfMjQ4/MDAxNTk4OTczMjc2MDQ1.PGnD1lOd_JMsP9W1O3V9TeRZoc7Kbu9Lz2EzSLNMZi8g.T1SfxNDCVTVN6GwYh9ml2suVUBIEvx6C_Jzqn-5R5kkg.JPEG.emperonics/128x32-Blue-I2C-OLED-Display.jpg?type=w966\" data-lazy-src=\"\" data-width=\"282\" data-height=\"89\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; width: 282px;\" /></a></div>\r\n            <div class=\"se-module se-module-text se-caption\" style=\"margin: 10px auto 20px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 886px;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-62042c42-7fad-42b1-933c-60f746dc902f\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.5; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center;\"><span class=\"se-fs- se-ff-   \" id=\"SE-541d1335-d692-4ea8-81ee-ea6c0ff9c8aa\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: inherit; font-family: se-nanumgothic, arial, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #555555;\">0.91인치</span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-313f12d2-b924-4c6c-acab-3027cfcc84ea\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-ef748abf-4971-47aa-a744-95b6d49c207a\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs- se-ff-system   \" id=\"SE-51f1d2ce-6015-4114-b122-21ea15711cfb\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-image se-l-default\" id=\"SE-85e34fc4-fef1-4d58-855f-46cf7897851c\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-image se-l-default se-section-align-center\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 209px;\">\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-85e34fc4-fef1-4d58-855f-46cf7897851c&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA5MDJfMTYz/MDAxNTk4OTczMjc2MDQz.2L4I3EQm8QGjtqWxAPDPEMeRjRe9LAGLvc1zQw48-eIg.Ocitx3wLQDHWap6HlhQbFan0wTDXAigSTT-nkjLbWvwg.JPEG.emperonics/128x64-White-I2C-OLED-Display.jpg&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"color: inherit; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA5MDJfMTYz/MDAxNTk4OTczMjc2MDQz.2L4I3EQm8QGjtqWxAPDPEMeRjRe9LAGLvc1zQw48-eIg.Ocitx3wLQDHWap6HlhQbFan0wTDXAigSTT-nkjLbWvwg.JPEG.emperonics/128x64-White-I2C-OLED-Display.jpg?type=w966\" data-lazy-src=\"\" data-width=\"209\" data-height=\"209\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; width: 209px;\" /></a></div>\r\n            <div class=\"se-module se-module-text se-caption\" style=\"margin: 10px auto 20px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 886px;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-6d3e5c7b-43da-4ca6-8371-c83e5aacdd67\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.5; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center;\"><span class=\"se-fs- se-ff-   \" id=\"SE-8efc1332-2c0c-4565-af15-7256bf58fe22\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: inherit; font-family: se-nanumgothic, arial, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #555555;\">흰색 OLED</span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-d4998a71-a5b7-475f-937e-b5c21b563702\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align-center \" id=\"SE-97016e7d-9ad3-425f-8573-201e6abdf7bc\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center !important;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-e0978e9c-4177-4af1-96fb-8435a9cbccf9\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-b7a8ac38-89bc-4bff-bd40-6569ec73f7b7\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-f6db3aa6-2f9e-428d-a520-e6044d99839d\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"></span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-6b12bcc1-3b88-4b2d-8256-270e0627f512\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system   \" id=\"SE-f1e897dc-599d-4e72-830b-6490f187c009\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\">이 모듈은 SSD1306이라는 OLED 구동용 IC 칩에 의해 구동되는데 이 IC칩은 마이크로컨트롤러와 통신하기 위해 I2C와 SPI통신을 지원합니다. 하지만 판매되고 있는 모듈은 대부분 두가지 통신 모드중 하나의 방식의 포트만 노출시켜 판매되기 때문에 둘중에 원하는 방식을 구입하시면 됩니다. 물론 두가지 방식을 모두 지원하는 모듈도 판매되고 있습니다. 이번 포스팅에서는 i2C 방식을 사용해 보겠습니다</span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-imageStrip se-imageStrip2 se-l-default\" id=\"SE-650a998d-eb9e-4599-84c2-dab4019820e6\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content se-component-content-fit\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-imageStrip se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-imageStrip-container se-imageStrip-col-2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; position: relative; text-wrap: nowrap;\">\r\n               <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; box-sizing: border-box; width: 441.547px;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-79eb370a-28d7-4460-a337-13a6eaa03f05&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA5MDJfMTA0/MDAxNTk4OTczMTYzNTA0.44MWl6R5RXeHRth3LDgeqdw9gycjOLKEbVMFjjSTFcMg.cqybhbe0dBEmbTtq90ypjyFDeLwnUn002T4yuyUxsp8g.JPEG.emperonics/i2c.jpg&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"color: inherit; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA5MDJfMTA0/MDAxNTk4OTczMTYzNTA0.44MWl6R5RXeHRth3LDgeqdw9gycjOLKEbVMFjjSTFcMg.cqybhbe0dBEmbTtq90ypjyFDeLwnUn002T4yuyUxsp8g.JPEG.emperonics/i2c.jpg?type=w966\" data-lazy-src=\"\" data-width=\"209\" data-height=\"209\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; width: 441.547px;\" /></a></div>\r\n               &nbsp;\r\n               <div class=\"se-module se-module-image\" style=\"margin: 0px 0px 0px 5px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; box-sizing: border-box; width: 439.438px;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-122a9555-bfce-4d58-b59c-76541cecd534&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA5MDJfMTQx/MDAxNTk4OTczMTYzNTA0.EMDstRDTPa0fyVggOr1de901PN2aWRfedl4XLeL0aYog.DbuDXU7ulsa2U9wdNV4tbtqi-I4sgm17b3GteBBiXncg.JPEG.emperonics/128x64-Blue-SPI-OLED-Display.jpg&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"color: inherit; cursor: pointer; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA5MDJfMTQx/MDAxNTk4OTczMTYzNTA0.EMDstRDTPa0fyVggOr1de901PN2aWRfedl4XLeL0aYog.DbuDXU7ulsa2U9wdNV4tbtqi-I4sgm17b3GteBBiXncg.JPEG.emperonics/128x64-Blue-SPI-OLED-Display.jpg?type=w966\" data-lazy-src=\"\" data-width=\"208\" data-height=\"209\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; width: 439.438px;\" /></a></div>\r\n               </div>\r\n            <div class=\"se-module se-module-text se-caption\" style=\"margin: 10px auto 20px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 886px;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-9d49df48-5649-46e5-8b72-d120eed8fdd5\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.5; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center;\"><span class=\"se-fs- se-ff-   \" id=\"SE-1321ae41-6d45-4fd3-bbd2-c2eff521d6b8\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: inherit; font-family: se-nanumgothic, arial, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #555555;\">I2C 방식(좌)과 SPI 방식(우)</span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-text se-l-default\" id=\"SE-10fa3d66-31ff-4837-96e7-bb0418290666\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-7fb3bc79-3fcc-46ff-bccf-4df94063e543\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs19 se-ff-system  se-style-unset \" id=\"SE-189fa75c-5faa-49cf-ac58-4a0d184d5f32\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 19px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\"><span style=\"font-weight: 700; background-color: inherit; font-family: inherit;\"></span></span></p>\r\n               <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-dece8d66-bf00-47da-a848-7053362a07be\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.625; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces;\"><span class=\"se-fs-fs16 se-ff-system  se-style-unset \" id=\"SE-b9f9f050-cabb-468f-8207-6881251abbe4\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 16px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; color: #000000;\">0.96인치 oled 모듈(SSD1306)의 스펙은 아래와 같습니다. </span></p>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   <div class=\"se-component se-table se-l-table_layout1 __se-component\" id=\"SE-191263cd-8a4a-4876-b5a0-a3ff6c07d419\" style=\"margin: 30px 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n      <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n         <div class=\"se-section se-section-table se-l-table_layout1 se-section-align-center\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; width: 549.312px;\">\r\n            <div class=\"se-table-container\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; position: relative; width: 549.312px; background-color: transparent; overflow: auto hidden;\">\r\n               <table class=\"se-table-content\" style=\"margin: 0px; padding: 0px; border-collapse: separate; font: inherit; border-top: 2px solid rgb(210, 210, 210); border-left: 2px solid rgb(210, 210, 210); border-right-style: solid; border-bottom-style: solid; border-right-color: #d2d2d2; border-bottom-color: #d2d2d2; vertical-align: baseline; border-spacing: 0px; width: 549.312px;\">\r\n                  <tbody style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                     <tr class=\"se-tr\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; height: 40px;\">\r\n                        <td class=\"se-cell\" colspan=\"1\" rowspan=\"1\" style=\"margin: 0px; padding: 10px; border-top: 0px solid rgb(210, 210, 210); border-left: 0px solid rgb(210, 210, 210); border-right-style: solid; border-bottom-style: solid; border-right-color: #d2d2d2; border-bottom-color: #d2d2d2; font: inherit; vertical-align: middle; background-color: #f7f7f7; box-sizing: border-box; max-width: 0px; width: 273.156px; height: 40px;\">\r\n                           <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                              <p class=\"se-text-paragraph se-text-paragraph-align-center \" id=\"SE-bc82cd10-7969-464d-b9b1-14f55fa1ef1b\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.6; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center !important;\"><span class=\"se-fs-fs15 se-ff-system  se-style-unset \" id=\"SE-15d568fb-4301-4cfa-b17b-33a4d631a883\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\">디스플레이 방식</span></p>\r\n                              </div>\r\n                           </td>\r\n                        <td class=\"se-cell\" colspan=\"1\" rowspan=\"1\" style=\"margin: 0px; padding: 10px; border-top: 0px solid rgb(210, 210, 210); border-left: 0px solid rgb(210, 210, 210); border-right-style: solid; border-bottom-style: solid; border-right-color: #d2d2d2; border-bottom-color: #d2d2d2; font: inherit; vertical-align: middle; background-color: #f7f7f7; box-sizing: border-box; max-width: 0px; width: 273.156px; height: 40px;\">\r\n                           <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                              <p class=\"se-text-paragraph se-text-paragraph-align-center \" id=\"SE-bb121e9b-9607-4e11-82f4-b788dd3d5f2c\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.6; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center !important;\"><span class=\"se-fs-fs15 se-ff-system  se-style-unset \" id=\"SE-5c8085d3-4503-4dac-81fc-54887509df80\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\">OLED (Organic LED)</span></p>\r\n                              </div>\r\n                           </td>\r\n                        </tr>\r\n                     <tr class=\"se-tr\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; height: 40px;\">\r\n                        <td class=\"se-cell\" colspan=\"1\" rowspan=\"1\" style=\"margin: 0px; padding: 10px; border-top: 0px solid rgb(210, 210, 210); border-left: 0px solid rgb(210, 210, 210); border-right-style: solid; border-bottom-style: solid; border-right-color: #d2d2d2; border-bottom-color: #d2d2d2; font: inherit; vertical-align: middle; box-sizing: border-box; max-width: 0px; width: 273.156px; height: 40px;\">\r\n                           <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                              <p class=\"se-text-paragraph se-text-paragraph-align-center \" id=\"SE-529e9123-0e3d-4e3e-a3e9-fe863c3512fc\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.6; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center !important;\"><span class=\"se-fs-fs15 se-ff-system  se-style-unset \" id=\"SE-cbecdbc5-204a-48e0-9fa0-a4043e488539\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\">인터페이스</span></p>\r\n                              </div>\r\n                           </td>\r\n                        <td class=\"se-cell\" colspan=\"1\" rowspan=\"1\" style=\"margin: 0px; padding: 10px; border-top: 0px solid rgb(210, 210, 210); border-left: 0px solid rgb(210, 210, 210); border-right-style: solid; border-bottom-style: solid; border-right-color: #d2d2d2; border-bottom-color: #d2d2d2; font: inherit; vertical-align: middle; box-sizing: border-box; max-width: 0px; width: 273.156px; height: 40px;\">\r\n                           <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                              <p class=\"se-text-paragraph se-text-paragraph-align-center \" id=\"SE-6dd9185b-1bec-409a-92ec-33b1435f952a\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: 1.6; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space-collapse: break-spaces; text-align: center !important;\"><span class=\"se-fs-fs15 se-ff-system  se-style-unset \" id=\"SE-0e0b7188-afad-4c58-ac30-6f6c576f78eb\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: HelveticaNeue, &quot;Helvetica Neue&quot;, helvetica, AppleSDGothicNeo, arial, &quot;malgun gothic&quot;, &quot;맑은  고딕&quot;, sans-serif, Meiryo; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; vertical-align: baseline;\">I2C / SPI</span></p>\r\n                              </div>\r\n                           </td>\r\n                        </tr>\r\n                     <tr class=\"se-tr\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; height: 40px;\">\r\n                        <td class=\"se-cell\" colspan=\"1\" rowspan=\"1\" style=\"margin: 0px; padding: 10px; border-top: 0px solid rgb(210, 210, 210); border-left: 0px solid rgb(210, 210, 210); border-right-style: solid; border-bottom-style: solid; border-right-color: #d2d2d2; border-bottom-color: #d2d2d2; font: inherit; vertical-align: middle; box-sizing: border-box; max-width: 0px; width: 273.156px; height: 40px;\">\r\n                           <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n                              <p class=\"se-text-paragraph se-text-paragraph-align-center \" id=\"SE-221eb49d-1962-4400-b44d-74d2c2c9a550\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; fo','https://blog.naver.com/PostView.naver?blogId=emperonics&logNo=222081054316&categoryNo=0&parentCategoryNo=0','',2,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-09-20 10:38:17',0,'2023-09-20 10:38:17','112.222.138.202','','','','','','','','','','','',''),(609,-606,'',609,0,0,'','','html1','노트북컴퓨터 화면밝기 자동으로 조절되는 것 끄기','<p>*설정 &gt; 디스플레이 &gt; 밝기(더보기) &gt; 콘텐츠에 따른 밝기 변경 : 끄기</p>','','',0,0,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-10-09 11:18:50',1,'2023-10-09 11:18:50','106.101.0.138','','','','','','','','','','','',''),(610,-607,'',610,0,0,'','','html1','[Arduino] 소수점 자리수 정하기, ceil(), floor(), round()','<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;Malgun Gothic&quot;;\">ceil() : 소수점 이하에 숫자가 있으면 소수점 이하 숫자를 없애고 1을 더한다.&nbsp;</span></p>\r\n<p>floor() : 소수점 이하에 숫자가 있으면 그냥 다 버린다.</p>\r\n<p>round() : 소수점 첫번째 자리에서 반올림한 뒤 소수점 이하 숫자는 제거</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>','https://m.blog.naver.com/ann_arbor/222054760842','',1,0,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-10-10 10:34:13',1,'2023-10-10 10:34:13','106.101.1.196','','','','','','','','','','','',''),(611,-608,'',611,0,0,'','','html1','[Arduino] ESP32 Ehternet W5500 에서 웹서버 에러 조치 Webserver','<div class=\"hgroup\" style=\"margin: 50px auto 60px; padding: 0px 0px 20px; max-width: 860px; border-bottom: 1px solid rgb(235, 235, 235); font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\">\r\n   <h1 style=\"font-size: 1.6875em; margin: 0px 0px 9px; padding: 0px; line-height: 1.4444em;\">[ESP32 xBee EVM] W5500 웹서버 테스트</h1>\r\n   <div class=\"post-meta\" style=\"margin: 0px; padding: 0px; font-size: 0.8125em; color: #808080;\"><span class=\"author\">nexp</span>&nbsp;<span class=\"date\">2019. 3. 3. 05:25</span></div>\r\n   </div>\r\n<div class=\"entry-content\" style=\"margin: 0px; padding: 0px; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px; height: auto !important;\">\r\n   <div class=\"tt_article_useless_p_margin contents_style\" style=\"margin: 0px; padding: 0px; word-break: break-word;\">\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <figure class=\"imageblock alignCenter\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"505\" data-origin-height=\"371\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center;\"><span data-url=\"https://blog.kakaocdn.net/dn/9kkfa/btrrETAMMqk/Eucr503h9i0RR63U0m5H40/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/9kkfa/btrrETAMMqk/Eucr503h9i0RR63U0m5H40/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9kkfa%2FbtrrETAMMqk%2FEucr503h9i0RR63U0m5H40%2Fimg.png\" data-origin-width=\"505\" data-origin-height=\"371\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 505.005px; margin: 0px; height: auto;\" /></span></figure>\r\n      <p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">ESP32에서 유선 랜을 사용하기 위해 W5500 모듈을 테스트 해 보았다.</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">는 WiFi 가 기본적으로 내장되어 있는 칩 이라&nbsp;</p>\r\n      <p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <figure class=\"imageblock alignLeft\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"786\" data-origin-height=\"443\" style=\"margin: 0px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative;\"><span data-url=\"https://blog.kakaocdn.net/dn/bhrrAK/btrrJUkVG7a/rFKwJ2ZBVWGzuyNWjoX9Vk/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bhrrAK/btrrJUkVG7a/rFKwJ2ZBVWGzuyNWjoX9Vk/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhrrAK%2FbtrrJUkVG7a%2FrFKwJ2ZBVWGzuyNWjoX9Vk%2Fimg.png\" data-origin-width=\"786\" data-origin-height=\"443\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 786px; margin: 0px; height: auto;\" /></span></figure>\r\n      <p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">기존에&nbsp;<a href=\"https://nexp.tistory.com/tag/W5500\" target=\"_blank\" rel=\"noopener\" style=\"color: #666666;\">Arduino에서 테스트 했던 W5500 테스트 코드</a>를 구동하려고 했는데 컴파일 에러가 발생 한다.</p>\r\n      <table border=\"1\" data-ke-align=\"alignLeft\" style=\"width: 859.995px; margin-bottom: 22px; border-style: solid; border-color: #e6e6e6; font-size: 0.875em; line-height: 1.5714; color: #666666;\">\r\n         <tbody>\r\n            <tr>\r\n               <td style=\"margin: 0px; padding: 7px 0px 11px; word-break: break-word; border-left-style: solid; border-left-color: #e6e6e6; border-top-style: solid; border-top-color: #e6e6e6; width: 858.184px;\"><br />WebServer_temp:40:16:&nbsp;error:&nbsp;cannot&nbsp;declare&nbsp;variable&nbsp;\'server\'&nbsp;to&nbsp;be&nbsp;of&nbsp;abstract&nbsp;type&nbsp;\'EthernetServer\'<br /><br />&nbsp;EthernetServer&nbsp;server(80);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^~~~~~<br /><br />In&nbsp;file&nbsp;included&nbsp;from&nbsp;C:\\Users\\nexp7\\OneDrive\\\\Arduino\\libraries\\Ethernet2\\src/Ethernet2.h:17,<br /><br /><br />C:\\Users\\nexp7\\OneDrive\\\\Arduino\\libraries\\Ethernet2\\src/EthernetServer.h:8:7:&nbsp;note:&nbsp;&nbsp;&nbsp;because&nbsp;the&nbsp;following&nbsp;virtual&nbsp;functions&nbsp;are&nbsp;pure&nbsp;within&nbsp;\'EthernetServer\':<br /><br />&nbsp;class&nbsp;EthernetServer&nbsp;:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^~~~~~~~~~~~~~<br /><br />In&nbsp;file&nbsp;included&nbsp;from&nbsp;C:\\Users\\nexp7\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\cores\\esp32/Arduino.h:165,<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;sketch\\WebServer_temp.ino.cpp:1:<br /><br />C:\\Users\\nexp7\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\cores\\esp32/Server.h:28:18:&nbsp;note:&nbsp; \'virtual&nbsp;void&nbsp;Server::begin(uint16_t)\'<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;void&nbsp;begin(uint16_t&nbsp;port=0)&nbsp;=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^~~~~<br /><br />exit&nbsp;status&nbsp;1<br /><br />cannot&nbsp;declare&nbsp;variable&nbsp;\'server\'&nbsp;to&nbsp;be&nbsp;of&nbsp;abstract&nbsp;type&nbsp;\'EthernetServer\'</td>\r\n               </tr>\r\n            </tbody>\r\n         </table>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">ESP32는 WiFi가 디폴트로 사용을 하고 있기 때문에 server의 bign 함수에서&nbsp;에러가 발생하는데 이부분을 수정하면 문제 없이 컴파일 된다.</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">(다만 이렇게 되면 기존 WiFi 예제에는 문제가 발생 할 수 있다. 유선과 무선을 동시에 사용하려면 라이브러리 수정이 필요 할것 같다.)</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <div data-pm-slice=\"1 1 []\" data-en-clipboard=\"true\" style=\"margin: 0px; padding: 0px;\">\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\cores\\esp32\\Server.h</div>\r\n      <div data-pm-slice=\"1 1 []\" data-en-clipboard=\"true\" style=\"margin: 0px; padding: 0px;\">\r\n         <pre id=\"code_1643091850138\" class=\"c++ arduino\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-word; text-wrap: wrap; overflow-wrap: break-word;\">\r\n            <code class=\"hljs cpp\" style=\"margin: 0px; padding: 20px; display: block; overflow-x: auto; color: #abb2bf; background: rgb(40, 44, 52);\"><span class=\"hljs-class\"><span class=\"hljs-keyword\" style=\"color: #f92672;\">class</span><span class=\"hljs-title\" style=\"color: #e6c07b;\">Server</span>:</span><span class=\"hljs-keyword\" style=\"color: #f92672;\">public</span> Print\r\n{\r\n<span class=\"hljs-keyword\" style=\"color: #f92672;\">public</span>:\r\n    <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">//virtual void begin(uint16_t port=0) =0;</span><span class=\"hljs-function\" style=\"color: #61aeee;\"><span class=\"hljs-keyword\" style=\"color: #f92672;\">virtual</span><span class=\"hljs-keyword\" style=\"color: #f92672;\">void</span><span class=\"hljs-title\">begin</span><span class=\"hljs-params\" style=\"color: #a6e22e;\">()</span></span>= <span class=\"hljs-number\" style=\"color: #d19a66;\">0</span>;\r\n};</code>\r\n            </pre>\r\n         </div>\r\n      <div data-pm-slice=\"1 1 []\" data-en-clipboard=\"true\" style=\"margin: 0px; padding: 0px;\">\r\n         <hr contenteditable=\"false\" data-ke-type=\"horizontalRule\" data-ke-style=\"style5\" style=\"border: none; font-size: 0px; line-height: 0; height: 20px; margin: 20px auto; background-image: url(&quot;https://t1.daumcdn.net/keditor/dist/0.4.0/image/divider-line.svg&quot;); background-position: 0px -120px; background-size: 200px 200px; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; cursor: pointer !important;\" />\r\n         </div>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">ESP32 xBee EVM 보드의 IO13에 연결되어 있는 W5500을 이용하여&nbsp;<a href=\"https://nexp.tistory.com/3092\" target=\"_blank\" rel=\"noopener\" style=\"color: #666666;\">MAX31856 써모커플 온도 센서 테스트</a>&nbsp;했던 온도 값을 웹페이지에 출력하는 테스트를 진행해 보자</p>\r\n      <pre id=\"code_1643712462368\" class=\"c++ arduino\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-word; text-wrap: wrap; overflow-wrap: break-word;\">\r\n         <code class=\"hljs cpp\" style=\"margin: 0px; padding: 20px; display: block; overflow-x: auto; color: #abb2bf; background: rgb(40, 44, 52);\"><span class=\"hljs-meta\" style=\"color: #61aeee;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\" style=\"color: #98c379;\">&lt;SPI.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #61aeee;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\" style=\"color: #98c379;\">&lt;Ethernet2.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #61aeee;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\" style=\"color: #98c379;\">&lt;Adafruit_MAX31856.h&gt;</span></span>\r\nAdafruit_MAX31856 maxthermo = <span class=\"hljs-built_in\" style=\"color: #e6c07b;\">Adafruit_MAX31856</span>(<span class=\"hljs-number\" style=\"color: #d19a66;\">13</span>);\r\n<span class=\"hljs-function\" style=\"color: #61aeee;\"><span class=\"hljs-keyword\" style=\"color: #f92672;\">int32_t</span><span class=\"hljs-title\">get_temperature</span><span class=\"hljs-params\" style=\"color: #a6e22e;\">(<span class=\"hljs-keyword\" style=\"color: #f92672;\">void</span>)</span></span>{ \r\n    <span class=\"hljs-keyword\" style=\"color: #f92672;\">int32_t</span> temp =<span class=\"hljs-number\" style=\"color: #d19a66;\">25</span>; \r\n	temp = maxthermo.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">readThermocoupleTemperature</span>();\r\n    <span class=\"hljs-keyword\" style=\"color: #f92672;\">return</span> temp;  \r\n} \r\n<span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// Enter a MAC address and IP address for your controller below.</span><span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// The IP address will be dependent on your local network:</span>\r\nbyte mac[] = {\r\n  <span class=\"hljs-number\" style=\"color: #d19a66;\">0xDE</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">0xAD</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">0xBE</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">0xEF</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">0xFE</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">0xED</span>\r\n};\r\n<span class=\"hljs-function\" style=\"color: #61aeee;\">IPAddress <span class=\"hljs-title\">ip</span><span class=\"hljs-params\" style=\"color: #a6e22e;\">(<span class=\"hljs-number\" style=\"color: #d19a66;\">192</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">168</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">1</span>, <span class=\"hljs-number\" style=\"color: #d19a66;\">177</span>)</span></span>;\r\n<span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// Initialize the Ethernet server library</span><span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// with the IP address and port you want to use</span><span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// (port 80 is default for HTTP):</span><span class=\"hljs-function\" style=\"color: #61aeee;\">EthernetServer <span class=\"hljs-title\">w5500_server</span><span class=\"hljs-params\" style=\"color: #a6e22e;\">(<span class=\"hljs-number\" style=\"color: #d19a66;\">80</span>)</span></span>;\r\n<span class=\"hljs-function\" style=\"color: #61aeee;\"><span class=\"hljs-keyword\" style=\"color: #f92672;\">void</span><span class=\"hljs-title\">setup</span><span class=\"hljs-params\" style=\"color: #a6e22e;\">()</span></span>{\r\n  <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// Open serial communications and wait for port to open:</span>\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">begin</span>(<span class=\"hljs-number\" style=\"color: #d19a66;\">115200</span>);\r\n  <span class=\"hljs-keyword\" style=\"color: #f92672;\">while</span> (!Serial) {\r\n    ; <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// wait for serial port to connect. Needed for Leonardo only</span>\r\n  }\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">print</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"server is at \"</span>);\r\n  <span class=\"hljs-keyword\" style=\"color: #f92672;\">if</span> (!maxthermo.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">begin</span>()) {\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"Could not initialize thermocouple.\"</span>);\r\n    <span class=\"hljs-keyword\" style=\"color: #f92672;\">while</span> (<span class=\"hljs-number\" style=\"color: #d19a66;\">1</span>) <span class=\"hljs-built_in\" style=\"color: #e6c07b;\">delay</span>(<span class=\"hljs-number\" style=\"color: #d19a66;\">10</span>);\r\n  }\r\n  maxthermo.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">setThermocoupleType</span>(MAX31856_TCTYPE_K);\r\n  <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// start the Ethernet connection and the server:</span>\r\n  Ethernet.w5500_cspin = <span class=\"hljs-number\" style=\"color: #d19a66;\">13</span>;\r\n  Ethernet.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">begin</span>(mac, ip);\r\n  w5500_server.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">begin</span>();\r\n  Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(Ethernet.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">localIP</span>());\r\n}\r\n<span class=\"hljs-function\" style=\"color: #61aeee;\"><span class=\"hljs-keyword\" style=\"color: #f92672;\">void</span><span class=\"hljs-title\">loop</span><span class=\"hljs-params\" style=\"color: #a6e22e;\">()</span></span>{\r\n  <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// listen for incoming clients</span>\r\n  EthernetClient client = w5500_server.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">available</span>();\r\n  <span class=\"hljs-keyword\" style=\"color: #f92672;\">if</span> (client) {\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"new client\"</span>);\r\n    <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// an http request ends with a blank line</span>\r\n    boolean currentLineIsBlank = <span class=\"hljs-literal\" style=\"color: #56b6c2;\">true</span>;\r\n    <span class=\"hljs-keyword\" style=\"color: #f92672;\">while</span> (client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">connected</span>()) {\r\n      <span class=\"hljs-keyword\" style=\"color: #f92672;\">if</span> (client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">available</span>()) {\r\n        <span class=\"hljs-keyword\" style=\"color: #f92672;\">char</span> c = client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">read</span>();\r\n        Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">write</span>(c);\r\n        <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// if you\'ve gotten to the end of the line (received a newline</span><span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// character) and the line is blank, the http request has ended,</span><span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// so you can send a reply</span><span class=\"hljs-keyword\" style=\"color: #f92672;\">if</span> (c == <span class=\"hljs-string\" style=\"color: #98c379;\">\'\\n\'</span> &amp;&amp; currentLineIsBlank) {\r\n          <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// send a standard http response header</span>\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"HTTP/1.1 200 OK\"</span>);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"Content-Type: text/html\"</span>);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"Connection: close\"</span>);  <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// the connection will be closed after completion of the response</span>\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"Refresh: 5\"</span>);  <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// refresh the page automatically every 5 sec</span>\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>();\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"&lt;!DOCTYPE HTML&gt;\"</span>);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"&lt;html&gt;&lt;center&gt;\"</span>);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">print</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"&lt;h1&gt;\"</span>);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">print</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"ESP32 W5500 Temperature : \"</span>);\r\n          <span class=\"hljs-keyword\" style=\"color: #f92672;\">int</span> sensorReading = <span class=\"hljs-built_in\" style=\"color: #e6c07b;\">get_temperature</span>();\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">print</span>(sensorReading);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"&lt;br /&gt;&lt;/center&gt;&lt;/h1&gt;\"</span>);\r\n          client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"&lt;/html&gt;\"</span>);\r\n          <span class=\"hljs-keyword\" style=\"color: #f92672;\">break</span>;\r\n        }\r\n        <span class=\"hljs-keyword\" style=\"color: #f92672;\">if</span> (c == <span class=\"hljs-string\" style=\"color: #98c379;\">\'\\n\'</span>) {\r\n          <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// you\'re starting a new line</span>\r\n          currentLineIsBlank = <span class=\"hljs-literal\" style=\"color: #56b6c2;\">true</span>;\r\n        }\r\n        <span class=\"hljs-keyword\" style=\"color: #f92672;\">else</span><span class=\"hljs-keyword\" style=\"color: #f92672;\">if</span> (c != <span class=\"hljs-string\" style=\"color: #98c379;\">\'\\r\'</span>) {\r\n          <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// you\'ve gotten a character on the current line</span>\r\n          currentLineIsBlank = <span class=\"hljs-literal\" style=\"color: #56b6c2;\">false</span>;\r\n        }\r\n      }\r\n    }\r\n    <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// give the web browser time to receive the data</span><span class=\"hljs-built_in\" style=\"color: #e6c07b;\">delay</span>(<span class=\"hljs-number\" style=\"color: #d19a66;\">1</span>);\r\n    <span class=\"hljs-comment\" style=\"color: #b18eb1; font-style: italic;\">// close the connection:</span>\r\n    client.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">stop</span>();\r\n    Serial.<span class=\"hljs-built_in\" style=\"color: #e6c07b;\">println</span>(<span class=\"hljs-string\" style=\"color: #98c379;\">\"client disconnected\"</span>);\r\n  }\r\n}</code>\r\n         </pre>\r\n      <div data-pm-slice=\"1 1 []\" data-en-clipboard=\"true\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <p data-ke-size=\"size16\" style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">ESP32에서 W5500을 이용한 유선이더넷의 웹서버 테스트</p>\r\n      <p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n      <figure class=\"imageblock alignLeft\" data-ke-mobilestyle=\"widthOrigin\" data-origin-width=\"550\" data-origin-height=\"452\" style=\"margin: 0px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative;\"><span data-url=\"https://blog.kakaocdn.net/dn/bpakje/btrsiHFwDnu/shjqsCKSpnSBbrFKbWRm6k/img.png\" data-lightbox=\"lightbox\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bpakje/btrsiHFwDnu/shjqsCKSpnSBbrFKbWRm6k/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpakje%2FbtrsiHFwDnu%2FshjqsCKSpnSBbrFKbWRm6k%2Fimg.png\" data-origin-width=\"550\" data-origin-height=\"452\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 550.005px; margin: 0px; height: auto;\" /></span></figure>\r\n      </div>\r\n   </div>','https://nexp.tistory.com/3093','',2,0,6,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-10-17 16:01:03',0,'2023-10-17 16:01:03','112.222.138.202','','','','','','','','','','','',''),(612,-609,'',612,0,0,'','','html1','[Linux] 파일수, 폴더갯수 세는','<p>&nbsp;1. 현재 위치에서의 파일 개수를 세는 명령어</p>\r\n<p>&nbsp;</p>\r\n<p>ls -l | grep ^- | wc -l</p>\r\n<p>&nbsp;</p>\r\n<p>2. 지금 위치의 모든 하위 파일 개수를 세는 명령어</p>\r\n<p>&nbsp;</p>\r\n<p>find . -type f | wc -l</p>\r\n<p>&nbsp;</p>\r\n<p>[2] 디렉터리(폴더) 개수</p>\r\n<p>&nbsp;</p>\r\n<p>1.현재 위치에서의 디렉터리(폴더) 개수 세기</p>\r\n<p>&nbsp;</p>\r\n<p>ls -l | grep ^d | wc -l</p>','https://bramhyun.tistory.com/4','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-11-22 23:06:29',0,'2023-11-22 23:06:29','192.168.219.103','','','','','','','','','','','',''),(613,-610,'',613,0,0,'','','html1','[Arduino] ublox NEO-6M schematic','<p>&nbsp;</p>\r\n<h3 class=\"text-align-justify\" style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; font-family: Lato; font-weight: 500; line-height: 1.1; color: #0e3d79; margin-top: 20px; margin-bottom: 10px; font-size: 24px; text-align: justify; background-color: #ffffff;\"><span style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; font-weight: 700;\">Circuit Diagram for NEO-6M GSM Module</span></h3>\r\n<p class=\"text-align-justify\" style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; margin-bottom: 20px; text-align: justify; color: #121212; font-family: Lato; font-size: 17px; background-color: #ffffff;\">The circuit for the NEO-6M GPS module is very simple and easy to understand. In this module, all the major work is handled by the GPS module and we need two or three more components to make the GPS module work. The complete Schematic of the NEO-6M GPS Module is shown below.</p>\r\n<p class=\"text-align-justify\" style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; margin-bottom: 20px; text-align: justify; color: #121212; font-family: Lato; font-size: 17px; background-color: #ffffff;\"><a href=\"https://circuitdigest.com/fullimage?i=inlineimages/u5/NEO-6M-GPS-Module-Schematic.png\" target=\"_blank\" style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; background-color: transparent; color: #0e3d79; line-height: 32px; margin-top: 0px;\"><img alt=\"NEO-6M GPS Module Schematic\" data-entity-type=\"file\" data-entity-uuid=\"cd1601e7-5b25-4cb9-8e2f-26b180f626b4\" height=\"561\" src=\"https://circuitdigest.com/sites/default/files/inlineimages/u5/NEO-6M-GPS-Module-Schematic.png\" width=\"750\" style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; border: 0px; vertical-align: middle; margin-top: 15px; margin-bottom: 15px;\" /></a></p>\r\n<p class=\"text-align-justify\" style=\"box-sizing: border-box; -webkit-text-stroke-width: 0.6px; margin-bottom: 20px; text-align: justify; color: #121212; font-family: Lato; font-size: 17px; background-color: #ffffff;\">In the schematic, we have a 3.3V voltage regulator that is responsible for converting the input from 5V to 3.3V and we also have an AT24C33 EEPROM and a battery. EEPROM and Battery together help in retaining battery-backed RAM that can hold clock data and position for a limited period of time. Other than that, we have the UFL connector in which you need to connect an External Patch Antenna to make the module work properly.</p>','https://circuitdigest.com/microcontroller-projects/interfacing-neo6m-gps-module-with-esp32','',1,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-12-08 09:29:04',1,'2023-12-08 09:29:04','14.41.12.104','','','','','','','','','','','',''),(614,-611,'',614,0,0,'','','html1','FTDI Driver / ESPTools','<p>&nbsp;FTDI Driver / ESPTools</p>','','',0,0,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-12-15 12:32:41',2,'2023-12-15 12:32:41','14.41.12.104','','','','','','','','','','','',''),(615,-612,'',615,0,0,'','','html1','[Arduino] ESP-MESH with ESP32 and ESP8266: Getting Started','<header class=\"entry-header\" aria-label=\"Content\" style=\"-webkit-text-stroke-width: 0.6px; overflow-wrap: break-word; color: #3a3a3a; font-family: &quot;Pretendard JP&quot;; font-size: 18px;\">\r\n   <h1 class=\"entry-title\" itemprop=\"headline\" style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px; font-family: inherit; font-size: 36px; font-style: inherit; line-height: 1.2em; display: var(--page-title-display);\">ESP-MESH with ESP32 and ESP8266: Getting Started (painlessMesh library)</h1>\r\n   </header>\r\n<div class=\"entry-content\" itemprop=\"text\" data-content-ads-inserted=\"true\" style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 2em 0px 0px; padding: 0px; counter-reset: footnotes 0; color: #3a3a3a; font-family: &quot;Pretendard JP&quot;; font-size: 18px; overflow: visible !important;\">\r\n   <p style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin-bottom: 1.4em; padding: 0px;\">Learn how to use ESP-MESH networking protocol to build a mesh network with the ESP32 and ESP8266 NodeMCU boards. ESP-MESH allows multiple devices (nodes) to communicate with each other under a single wireless local area network. It is supported on the ESP32 and ESP8266 boards. In this guide, we’ll show you how to get started with ESP-MESH using the Arduino core.</p>\r\n   <div class=\"wp-block-image\" style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px 0px 1.4em; padding: 0px;\">\r\n      <figure class=\"aligncenter size-full\" style=\"margin: 0px auto; -webkit-text-stroke-width: 0.6px; display: table; clear: both; max-width: 100%; height: auto;\"><img decoding=\"async\" fetchpriority=\"high\" width=\"796\" src=\"https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/11/ESP-MESH-with-ESP32-ESP8266-Getting-Started-f.jpg?resize=828%2C466&amp;quality=100&amp;strip=all&amp;ssl=1\" alt=\"ESP-MESH with ESP32 and ESP8266: Getting Started\" class=\"wp-image-100418\" srcset=\"https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/11/ESP-MESH-with-ESP32-ESP8266-Getting-Started-f.jpg?w=1280&amp;quality=100&amp;strip=all&amp;ssl=1 1280w, https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/11/ESP-MESH-with-ESP32-ESP8266-Getting-Started-f.jpg?resize=300%2C169&amp;quality=100&amp;strip=all&amp;ssl=1 300w, https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/11/ESP-MESH-with-ESP32-ESP8266-Getting-Started-f.jpg?resize=1024%2C576&amp;quality=100&amp;strip=all&amp;ssl=1 1024w, https://i0.wp.com/randomnerdtutorials.com/wp-content/uploads/2020/11/ESP-MESH-with-ESP32-ESP8266-Getting-Started-f.jpg?resize=768%2C432&amp;quality=100&amp;strip=all&amp;ssl=1 768w\" sizes=\"(max-width: 828px) 100vw, 828px\" loading=\"eager\" style=\"-webkit-text-stroke-width: 0.6px; height: auto; max-width: 100%; box-sizing: border-box; vertical-align: bottom;\" /></figure>\r\n      </div>\r\n   <p style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin-bottom: 1.4em; padding: 0px;\">This article covers the following topics:</p>\r\n   <ul style=\"-webkit-text-stroke-width: 0.6px; box-sizing: border-box; border: 0px; margin: 0px 0px 1.5em 3em; padding: 0px; list-style: square;\">\r\n      <li style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px;\"><a href=\"https://randomnerdtutorials.com/esp-mesh-esp32-esp8266-painlessmesh/#1\" style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px; transition: color 0.1s ease-in-out 0s, background-color 0.1s ease-in-out 0s; text-decoration-line: none; color: #1b78e2;\" target=\"_blank\">Introducing ESP-MESH</a></li>\r\n      <li style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px;\"><a href=\"https://randomnerdtutorials.com/esp-mesh-esp32-esp8266-painlessmesh/#2\" style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px; transition: color 0.1s ease-in-out 0s, background-color 0.1s ease-in-out 0s; text-decoration-line: none; color: #1b78e2;\" target=\"_blank\">ESP-MESH Basic Example (Broadcast messages)</a></li>\r\n      <li style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px;\"><a href=\"https://randomnerdtutorials.com/esp-mesh-esp32-esp8266-painlessmesh/#3\" style=\"-webkit-text-stroke-width: 0.6px; border: 0px; margin: 0px; padding: 0px; transition: color 0.1s ease-in-out 0s, background-color 0.1s ease-in-out 0s; text-decoration-line: none; color: #1b78e2;\" target=\"_blank\">Exchange Sensor Readings using ESP-MESH (broadcast)</a></li>\r\n      </ul>\r\n   </div>','https://randomnerdtutorials.com/esp-mesh-esp32-esp8266-painlessmesh/','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-12-18 13:04:58',0,'2023-12-18 13:04:58','14.41.12.104','','','','','','','','','','','',''),(616,-613,'',616,0,0,'','','html1','[Arduino] ESP-NOW - Peer to Peer ESP32 Network','<p><iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/bEKjCDDUPaU?si=h2k7VcRi1omNsOhT\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen=\"\"></iframe><br /></p>','https://www.youtube.com/watch?v=bEKjCDDUPaU','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2023-12-24 10:37:52',0,'2023-12-24 10:37:52','192.168.219.103','','','','','','','','','','','',''),(617,-614,'',617,0,0,'','','html1','[Linux] ubuntu mqtt mosquitto 외부접속','<p>/etc/mosquitto/mosquitto.conf</p>\r\n<p>&nbsp;...</p>\r\n<p>allow_anonymous true</p>\r\n<p>listener 1883</p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2024-01-12 09:43:46',0,'2024-01-12 09:43:46','14.41.12.104','','','','','','','','','','','',''),(618,-615,'',618,0,0,'','','html1','[Arduino] ESP32 Wifimanager custom parameters','<p>&nbsp;</p>\r\n<h2 class=\"wp-block-heading\" style=\"box-sizing: inherit; border: 0px; font-size: 2rem; font-weight: normal; margin: 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline; clear: both; color: #3a3a3a; line-height: 1.3; background-color: #ffffff;\"><span id=\"Collecting_custom_parameters\" style=\"box-sizing: inherit; border: 0px; font-size: 30px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">Collecting custom parameters</span></h2>\r\n<p style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin-bottom: 1.6em; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">Other interesting feature that the WiFi Manager library supports is collecting additional parameters besides the SSID (network name) and password, as can be seen in&nbsp;<a href=\"https://github.com/tzapu/WiFiManager/tree/2ce0850d80d6c51f36dbbece777bd8a9f41d0927#custom-parameters\" target=\"_blank\" rel=\"noopener\" style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; background-color: transparent; text-decoration-line: none; color: #0274be; transition: all 0.2s linear 0s;\">this section</a>. However, we are responsible for saving those parameters if we need to [2].</p>\r\n<p style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin-bottom: 1.6em; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">To configure the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">WiFiManager</span>&nbsp;to collect an additional parameter, we first need to create an object of class&nbsp;<a href=\"https://github.com/tzapu/WiFiManager/blob/2ce0850d80d6c51f36dbbece777bd8a9f41d0927/WiFiManager.h#L110\" target=\"_blank\" rel=\"noopener\" style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; background-color: transparent; text-decoration-line: none; color: #0274be; transition: all 0.2s linear 0s;\">WiFiManagerParameter</a>. The constructor of this class receives the following values:</p>\r\n<ul style=\"box-sizing: border-box; border: 0px; font-size: 15px; margin: 0px 0px 1.5em 3em; outline: 0px; padding: 0px; vertical-align: baseline; list-style-position: initial; list-style-image: initial; color: #3a3a3a; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">Identifier of the parameter, as a string;</li>\r\n   <li style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">Label that will be shown above the parameter input textbox, as a string;</li>\r\n   <li style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">Default parameter value, as a string;</li>\r\n   <li style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">Maximum length of the parameter, as an integer. We will use a value of 40 for illustration purposes.</li>\r\n   </ul>\r\n<div class=\"wp-block-syntaxhighlighter-code \" style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">\r\n   <div style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">\r\n      <div id=\"highlighter_506742\" class=\"syntaxhighlighter  arduino\" style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; width: 639.909px; font-size: 1em !important; margin: 1em 0px !important; padding: 0.5em 1em !important; position: relative !important; overflow: auto hidden !important;\">\r\n         <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: separate; border-spacing: 0px; width: 742.807px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; box-shadow: none !important; table-layout: auto !important;\">\r\n            <tbody style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n               <tr style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                  <td class=\"gutter\" style=\"box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; color: #afafaf !important;\">\r\n                     <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">1</div>\r\n                     </td>\r\n                  <td class=\"code\" style=\"width: 709.148px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; direction: ltr !important; box-shadow: none !important;\">\r\n                     <div class=\"container\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: relative !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                        <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">WiFiManagerParameter parameter(</code>\r\n                           <code class=\"arduino string\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: blue !important;\">\"parameterId\"</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">, </code>\r\n                           <code class=\"arduino string\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: blue !important;\">\"Parameter Label\"</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">, </code>\r\n                           <code class=\"arduino string\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: blue !important;\">\"default value\"</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">, </code>\r\n                           <code class=\"arduino constants\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: #0066cc !important;\">40</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">);</code>\r\n                           </div>\r\n                        </div>\r\n                     </td>\r\n                  </tr>\r\n               </tbody>\r\n            </table>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<p style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin-bottom: 1.6em; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">After that, we need to call the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">addParameter</span>&nbsp;method on the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">WiFiManager</span>&nbsp;object, passing as input the address of the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">WiFiManagerParameter</span>&nbsp;we have just created.</p>\r\n<div class=\"wp-block-syntaxhighlighter-code \" style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">\r\n   <div style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">\r\n      <div id=\"highlighter_666430\" class=\"syntaxhighlighter  plain\" style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; width: 639.909px; font-size: 1em !important; margin: 1em 0px !important; padding: 0.5em 1em !important; position: relative !important; overflow: auto hidden !important;\">\r\n         <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: separate; border-spacing: 0px; width: 609.909px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; box-shadow: none !important; table-layout: auto !important;\">\r\n            <tbody style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n               <tr style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                  <td class=\"gutter\" style=\"box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; color: #afafaf !important;\">\r\n                     <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">1</div>\r\n                     </td>\r\n                  <td class=\"code\" style=\"width: 576.25px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; direction: ltr !important; box-shadow: none !important;\">\r\n                     <div class=\"container\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: relative !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                        <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">\r\n                           <code class=\"plain plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">manager.addParameter(¶meter);</code>\r\n                           </div>\r\n                        </div>\r\n                     </td>\r\n                  </tr>\r\n               </tbody>\r\n            </table>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<p style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin-bottom: 1.6em; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">We can later access the value of the parameter with a call to the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">getValue</span>&nbsp;method on the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">WiFiManagerParameter</span>&nbsp;object, after the&nbsp;<span style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: 700; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">autoConnect</span>&nbsp;method returns.</p>\r\n<div class=\"wp-block-syntaxhighlighter-code \" style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">\r\n   <div style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">\r\n      <div id=\"highlighter_761002\" class=\"syntaxhighlighter  arduino\" style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; width: 639.909px; font-size: 1em !important; margin: 1em 0px !important; padding: 0.5em 1em !important; position: relative !important; overflow: auto hidden !important;\">\r\n         <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: separate; border-spacing: 0px; width: 609.909px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; box-shadow: none !important; table-layout: auto !important;\">\r\n            <tbody style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n               <tr style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                  <td class=\"gutter\" style=\"box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; color: #afafaf !important;\">\r\n                     <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">1</div>\r\n                     <div class=\"line number2 index1 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">2</div>\r\n                     </td>\r\n                  <td class=\"code\" style=\"width: 576.25px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; direction: ltr !important; box-shadow: none !important;\">\r\n                     <div class=\"container\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: relative !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                        <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">\r\n                           <code class=\"arduino functions\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: #ff1493 !important;\">Serial.println</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">(</code>\r\n                           <code class=\"arduino string\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: blue !important;\">\"Parameter:\"</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">);</code>\r\n                           </div>\r\n                        <div class=\"line number2 index1 alt1\" style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">\r\n                           <code class=\"arduino functions\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important; color: #ff1493 !important;\">Serial.println</code>\r\n                           <code class=\"arduino plain\" style=\"font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-variant-position: normal; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-stretch: normal; box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; line-height: 1.1em !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; display: inline !important;\">(parameter.getValue());</code>\r\n                           </div>\r\n                        </div>\r\n                     </td>\r\n                  </tr>\r\n               </tbody>\r\n            </table>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<p style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin-bottom: 1.6em; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">The complete code can be seen below.</p>\r\n<div class=\"wp-block-syntaxhighlighter-code \" style=\"box-sizing: inherit; border: 0px; font-size: 15px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: #3a3a3a; background-color: #ffffff;\">\r\n   <div style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;\">\r\n      <div id=\"highlighter_892004\" class=\"syntaxhighlighter  arduino\" style=\"box-sizing: inherit; border: 0px; font-style: inherit; font-weight: inherit; outline: 0px; vertical-align: baseline; width: 639.909px; font-size: 1em !important; margin: 1em 0px !important; padding: 0.5em 1em !important; position: relative !important; overflow: auto hidden !important;\">\r\n         <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: separate; border-spacing: 0px; width: 784.045px; box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; font-family: Monaco, Consolas, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, Courier, monospace !important; direction: ltr !important; box-shadow: none !important; table-layout: auto !important;\">\r\n            <tbody style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n               <tr style=\"box-sizing: content-box !important; border: 0px !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important;\">\r\n                  <td class=\"gutter\" style=\"box-sizing: content-box !important; border-width: 0px !important; border-style: initial !important; border-color: initial !important; font-size: 1em !important; margin: 0px !important; outline: 0px !important; padding: 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background: none !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; width: auto !important; direction: ltr !important; box-shadow: none !important; color: #afafaf !important;\">\r\n                     <div class=\"line number1 index0 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">1</div>\r\n                     <div class=\"line number2 index1 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">2</div>\r\n                     <div class=\"line number3 index2 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">3</div>\r\n                     <div class=\"line number4 index3 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">4</div>\r\n                     <div class=\"line number5 index4 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">5</div>\r\n                     <div class=\"line number6 index5 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">6</div>\r\n                     <div class=\"line number7 index6 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">7</div>\r\n                     <div class=\"line number8 index7 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">8</div>\r\n                     <div class=\"line number9 index8 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">9</div>\r\n                     <div class=\"line number10 index9 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">10</div>\r\n                     <div class=\"line number11 index10 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">11</div>\r\n                     <div class=\"line number12 index11 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">12</div>\r\n                     <div class=\"line number13 index12 alt2\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important; direction: ltr !important; box-shadow: none !important; white-space: pre !important;\">13</div>\r\n                     <div class=\"line number14 index13 alt1\" style=\"box-sizing: content-box !important; border-width: 0px 3px 0px 0px !important; border-top-style: initial !important; border-right-style: solid !important; border-bottom-style: initial !important; border-left-style: initial !important; border-top-color: initial !important; border-right-color: #6ce26c !important; border-bottom-color: initial !important; border-left-color: initial !important; border-image: initial !important; font-size: 1em !important; margin: 0px 1em 0px 0px !important; outline: 0px !important; padding: 0px 0.5em 0px 0px !important; vertical-align: baseline !important; border-radius: 0px !important; background-image: none !important; background-position: initial !important; background-size: initial !important; background-repeat: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; inset: auto !important; float: none !important; height: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; text-align: right !important; width: auto !important;','https://techtutorialsx.com/2021/07/17/esp32-wifi-manager-extra-features/','https://www.google.com/search?sca_esv=fcb6e7084a098e95&rlz=1C1CHBD_koKR1078KR1078&q=esp32+wifimanager+custom+parameters&tbm=isch&source=lnms&sa=X&ved=2ahUKEwi62tu08qSEAxWps1YBHc9_AB8Q0pQJegQICxAB&biw=1552&bih=788&dpr=1.24',1,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2024-02-12 12:51:42',0,'2024-02-12 12:51:42','121.155.78.24','','','','','','','','','','','','');
