ARTICLE AD BOX
JsonDocument doc;
JsonArray pin = doc["pin"].to<JsonArray>();
switchVar1 = SHIFT(DATAPIN, CLOCKPIN);
for (int n = 0; n <= 7; n++) {
if (switchVar1 & (1 << n)) { // array[0-7]
pin.add(1);
Serial.print("1");
Serial.print("|"); //nclose
} else {
pin.add(0);
Serial.print("0");
Serial.print("|"); //nopen
}
}
String output;
serializeJson(doc, output); //<-- Am I sending the data correctly?
serializeJson(doc, Serial);
Output date in serial.
{ "pin": [0,0,0,0,0,0,0,0] }I have pin array called pin, and I want to extract its elements and assign them to arrayOfstrings[i]. The data is received via a websocket. Below is an example of how to create a script that does this:
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>PIN Display</title> <style> </style> </head> <body> <div class="container"> <h1>PIN monitor</h1> <div class="pin-display" id="pinDisplay"></div> <div class="status disconnected" id="status">close</div> </div> <script> // адрес WebSocket сервера const WS_URL = 'ws://' + window.location.host + '/ws'; let ws; const pinDisplay = document.getElementById('pinDisplay'); const statusEl = document.getElementById('status'); // динамически нарисуем 8 элементов для отображения PIN for (let i = 0; i < 8; i++) { const digit = document.createElement('div'); digit.className = 'pin-digit'; digit.textContent = '0'; digit.id = `pin-${i}`; pinDisplay.appendChild(digit); } function connectWebSocket() { ws = new WebSocket(WS_URL); ws.onopen = () => { console.log('WebSocket conect'); statusEl.textContent = 'conect'; statusEl.className = 'status connected'; }; ws.onmessage = (event) => { try { const data = JSON.parse(event.data); if (data.pin && Array.isArray(data.pin)) { updatePinDisplay(data.pin); } } catch (error) { console.error('error pasing JSON:', error); } }; ws.onerror = (error) => { console.error('WebSocket err:', error); statusEl.textContent = 'err conect'; statusEl.className = 'status disconnected'; }; ws.onclose = () => { console.log('WebSocket off'); statusEl.textContent = 'off'; statusEl.className = 'status disconnected'; // Переподключение через 3 секунды setTimeout(connectWebSocket, 3000); }; } function updatePinDisplay(pinArray) { pinArray.forEach((value, index) => { const digitEl = document.getElementById(`pin-${index}`); if (digitEl) { digitEl.textContent = value; // подсветим активные (если значение 1) if (value === 1) { digitEl.classList.add('active'); } else { digitEl.classList.remove('active'); } } }); } // Запускаем подключение connectWebSocket(); </script> </body> </html>