diff --git a/webbot.html b/webbot.html index 8914172..96c7fc5 100644 --- a/webbot.html +++ b/webbot.html @@ -44,7 +44,7 @@ var white = 'data:image/gif;base64,R0lGODlhAQABAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAABAAEAAAgEAP8FBAA7'; - var delay = 100; + var delay = 60; var count = 0; function sendI2Cscl(value) { @@ -75,6 +75,7 @@ } async function sendByte(byte) { + //clock out 8 bits of data, 3 delay periods per bit let bits = byte.toString(2).padStart(8, '0'); return new Promise(async (resolve) => { for (let i = 0; i < 8; i++) { @@ -85,7 +86,7 @@ await sendI2Cscl(false); await sendI2Csda(b); await sendI2Cscl(true); - } + } resolve(); }); } @@ -94,20 +95,24 @@ async function sendBytes(data) { console.log(data); + //send i2c start, 3 delay periods await sendI2Csda(true); //ready (should aleady be high) await sendI2Cscl(true); //should already be await sendI2Csda(false); //start for (let i = 0; i < data.length; i++) { + //send a byte, 3+2 delays per byte console.log('Byte ' + i); await sendByte(data[i]); await sendLatch(true); //latch for shift register await sendLatch(false); } + //finish and send stop, 4 delay periods await sendI2Cscl(false); //finish the last bit await sendI2Csda(false); //now we can lower data await sendI2Cscl(true); //and raise clock await sendI2Csda(true); //the raise data with clock to stop - } + } +//total delay per call is 5*len + 7 function hexToBytes(hex) { hex = hex.split(' ').join(''); @@ -228,7 +233,8 @@ }; startButton.onclick = function() { - interval = setInterval(function(){video.onclick()},1000) + //interval must be limited by bit delays. + interval = setInterval(function(){video.onclick()},2000) } stopButton.onclick = function() {